BASCOM, pamięć zewnętrzna

To forum jest dla wszystkich pasjonatów mikrokontrolerów AVR Atmela. Wymiana doświadczeń i pomoc dla początkujących w pisaniu programów zarówno w C, Asemblerze jak i BASCOM. Zapraszam znawców tematu, aby pomogli wszystkim początkującym!
ODPOWIEDZ
Awatar użytkownika
Tranzystor
Użytkownik
Posty: 889
Rejestracja: 28 sie 2005, 19:19
Lokalizacja: Świętochłowice
Kontakt:

BASCOM, pamięć zewnętrzna

Post autor: Tranzystor » 15 kwie 2007, 9:07

Witam,
mam mały problem z pamięcią zewnętrzną (XRAM). Chodzi o to, że definiuje zmienną:

Kod: Zaznacz cały

Dim A(30000) As Xram Byte
powinna ona mieć rozmiar 30kB, a ma 1B :sad: Bascom odczytuje ją jako 1B tak samo zapisuje, tak jakby wogóle nie widział tego (30000). Jeżeli zmienna znajduje się w pamięci wewnętrznej mikroprocesora (SRAM), to wszystko działa :!: Zmienna ma 100B, ma tylko 100B bo nie mam więcej wolnej pamięci.

Czemu zmiennej z pamięci zewnętrznej nie moge odczytać jako 30kB :?: Jak zrobić żeby to działało :?:

Z góry dzięki :neutral:
Pozdrawiam

Awatar użytkownika
marcing
Użytkownik
Posty: 868
Rejestracja: 14 lut 2006, 14:13
Lokalizacja: z pociągu...
Kontakt:

Post autor: marcing » 15 kwie 2007, 10:44

Po pierwsze - jaki procesor?

Po drugie - czy poinformowano kompilator o zewnętrznej pamięci? (opcje, lub dyrektywy $XRAMSIZE, $XRAMSTART)

A... i jeszcze jedno: 30kB to 30 x 1024B ;)

Awatar użytkownika
Tranzystor
Użytkownik
Posty: 889
Rejestracja: 28 sie 2005, 19:19
Lokalizacja: Świętochłowice
Kontakt:

Post autor: Tranzystor » 15 kwie 2007, 11:18

marcing pisze:Po pierwsze - jaki procesor?

Po drugie - czy poinformowano kompilator o zewnętrznej pamięci? (opcje, lub dyrektywy $XRAMSIZE, $XRAMSTART)

A... i jeszcze jedno: 30kB to 30 x 1024B ;)

Kod: Zaznacz cały

$regfile = "m162def.dat"
$crystal = 8000000
$baud = 19200
$xa
$xramstart = &H500
$xramsize = &H8000
Wszystko jest... $waitstate jest niepotrzebne, ponieważ pamięć jest szybka. Zresztą jeżeli mam:

Kod: Zaznacz cały

Dim A As Byte
Dim B As Byte
to obie zmienne są odczytywane i zapisywane poprawnie. Nie chce działać tylko:

Kod: Zaznacz cały

Dim A(30000) As Xram Byte
Pozdrawiam

ZbeeGin

Post autor: ZbeeGin » 15 kwie 2007, 11:26

Dziwne. Raport kompilacji wskazuje:

Kod: Zaznacz cały

Report       : NONAME1
Date         : 04-15-2007
Time         : 12:23:59

Compiler     : BASCOM-AVR LIBRARY V 1.11.8.5
Processor    : M162
SRAM         : 400 hex
EEPROM       : 200 hex
ROMSIZE      : 4000 hex

ROMIMAGE     : BE hex  -> Will fit into ROM
ROMIMAGE     :  190 dec
FLASH USED   :  1  %

XRAM         : 8000 hex
Stack start  : 4FF hex
Stack size   : 20 hex
S-Stacksize  : 8 hex
S-Stackstart : 4E0 hex
Framesize    : 18 hex
Framestart   : 4C7 hex
Space left   :  959  dec

--------------------------------------------------------------------------------
Variable                         Type            Address(hex)   Address(dec)
--------------------------------------------------------------------------------
AA                               Byte              0100          256
BB                               Byte              0101          257
A                                Ext. Byte (30000) 0500          1280

Do not use $XA, use CONFIG XRAM instead  in line  4
Dopisany kod testowy:

Kod: Zaznacz cały

A(1) = 100
A(29000) = 200

Print "1   = " ; A(1)
Print "2900= " ; A(29000)
Print "200 = " ; A(100)
Także pokazuje poprawne wartości. Oczywiście nie posiadam możliwości sprawdzenia tego w "realu".

Awatar użytkownika
Tranzystor
Użytkownik
Posty: 889
Rejestracja: 28 sie 2005, 19:19
Lokalizacja: Świętochłowice
Kontakt:

Post autor: Tranzystor » 15 kwie 2007, 11:39

Właśnie wiem, to samo jest u mnie w raporcie, a na mikroprocesorze okazuje się inaczej :sad:

Mój program w załączniku(troche skróciłem go).
Załączniki
program_s.rar
(1.09 KiB) Pobrany 296 razy

ZbeeGin

Post autor: ZbeeGin » 15 kwie 2007, 11:47

Potrzebuję cały program, by go skompilować i wrzucić do AVR Studio. Ponadto dodaj także schemat urządzenia - bo myślę, że to problem sprzętowy.

Awatar użytkownika
gaweł
Użytkownik
Posty: 651
Rejestracja: 05 kwie 2004, 8:38
Lokalizacja: Białystok
Kontakt:

Post autor: gaweł » 17 kwie 2007, 9:28

Tranzystor pisze:Właśnie wiem, to samo jest u mnie w raporcie, a na mikroprocesorze okazuje się inaczej :sad:
Być może problem leży po stronie sprzętowej. Dobrze by było popatrzeć na schemat.

Awatar użytkownika
Tranzystor
Użytkownik
Posty: 889
Rejestracja: 28 sie 2005, 19:19
Lokalizacja: Świętochłowice
Kontakt:

Post autor: Tranzystor » 17 kwie 2007, 15:05

Wydaje mi się, że uszkodziłem przez przypadek pamięć. Jak się nosi polar i w nim się coś robi to jest ryzyko uszkodzenia, chyba się uszkodziła. Nie jestem tego pewien, ale chyba jest uszkodzona. Kupię drugą i wtedy zobaczę czy właśnie przez to moja pamięć nie działa.

Pozdrawiam

ODPOWIEDZ