Witam, mam następujący problem - staram się dołączyć do Atmegi 64k pamięci sRAM, konkretnie 2x 61256-15. Póki co procek taktowany wewn. rezonatorem 8MHz, docelowo ma być kwarc 16MHz (jeszcze go po prostu nie wlutowałem).
Wyłączona zgodność z Mega103, JTAG też.
Schemat tutaj:
Przy czym bufor i inwerter są koniec końców w wersjach HCT, bo z tego co znalazłem ta pamięć to CMOS kompatybilny z TTL.
Wszystko oczywiście odsprzęgane kondensatorami ceramicznymi, zasilane z 5V, więc z tego co z datasheeta zrozumiałem, problemów w prędkością raczej nie będzie.
I cóż...próbowałem najpierw ugryźć to kodem stąd, najprościej:
http://leon-instruments.blogspot.com/2011/04/pytki-testowe-do-mikrokontrolerow.html
ale bezskutecznie.
Wobec tego zacząłem kombinować z parametrami linkera.
dopisałem to
Docelowo dynamicznie alokowane zmienne chciałbym wrzucić do ramu zewnętrznego. Mile widziana w tamtym miejscu byłaby też sekcja .noinit, ale to nie jest już aż tak ważne.
Alokuję sobie potem tablicę unsigned charów, rozmiar 32766 i wypełniam ją wartościami od 0 do FFh. Wszystko byłoby pięknie, ale kiedy ślę to przez RS'a dostaję w terminalu (Advanced Serial Port Terminal, Eltima Soft.) coś takiego:
Wszystko pięknie ładnie, ale gdzie pierwsze dwa bajty mi wcięło? Bo z tego co widzę jest prawie dobrze (:
Kod poniżej:
A, i dla jasności:
w AVR studio w Configuration Options pomimo wyboru ATMegi128, SRAM size mam wyświetlany jak 0x1000 i wstępnie tamże ustawiony stos, co trochę mnie niepokoi, bo powinno być chyba 0x10ff?
EDIT: diagnostyki cz.2:
napsiałem sobie w asmie prosty program ustawiający stos na koniec pamięci zewnętrznej a potem robiący RCALL do procedury wysyłającej bajt po UARTcie.
I tak - z jedną kością RAM, SP na 7fffh - ok. Z drugą kością RAM, SP na ffffh - ok.
Wsadzone obie kości - SP 7fffh - ok. SP ffffh -wygląda na wysypanie się stosu, leci ciągle 3a a7 po RS232.
Pozdrawiam
EDIT2:
poprzekładałem RAMy parokrotnie, okazuje się, że to, że jedna kość działała najpierw dobrze to był przypadek, bo potem zaczęła robić cuda. Jutro spróbuję wsadzić inną, zobaczymy, co będzie. Jak się okaże że to pomogło - sprawa zamknięta.
EDIT3: jedna kość była ubita. Zamykam.
Wyłączona zgodność z Mega103, JTAG też.
Schemat tutaj:
Przy czym bufor i inwerter są koniec końców w wersjach HCT, bo z tego co znalazłem ta pamięć to CMOS kompatybilny z TTL.
Wszystko oczywiście odsprzęgane kondensatorami ceramicznymi, zasilane z 5V, więc z tego co z datasheeta zrozumiałem, problemów w prędkością raczej nie będzie.
I cóż...próbowałem najpierw ugryźć to kodem stąd, najprościej:
http://leon-instruments.blogspot.com/2011/04/pytki-testowe-do-mikrokontrolerow.html
ale bezskutecznie.
Wobec tego zacząłem kombinować z parametrami linkera.
dopisałem to
-Wl,--defsym=__heap_start=0x801100,--defsym=__heap_end=0x80ffff
Docelowo dynamicznie alokowane zmienne chciałbym wrzucić do ramu zewnętrznego. Mile widziana w tamtym miejscu byłaby też sekcja .noinit, ale to nie jest już aż tak ważne.
Alokuję sobie potem tablicę unsigned charów, rozmiar 32766 i wypełniam ją wartościami od 0 do FFh. Wszystko byłoby pięknie, ale kiedy ślę to przez RS'a dostaję w terminalu (Advanced Serial Port Terminal, Eltima Soft.) coś takiego:
00000000: 02 03 04 05 06 07 08 09 | 0a 0b 0c 0d 0e 0f 10 11Wszystko pięknie ładnie, ale gdzie pierwsze dwa bajty mi wcięło? Bo z tego co widzę jest prawie dobrze (:
Kod poniżej:
Kod: text
Kod: C / C++
A, i dla jasności:
w AVR studio w Configuration Options pomimo wyboru ATMegi128, SRAM size mam wyświetlany jak 0x1000 i wstępnie tamże ustawiony stos, co trochę mnie niepokoi, bo powinno być chyba 0x10ff?
EDIT: diagnostyki cz.2:
napsiałem sobie w asmie prosty program ustawiający stos na koniec pamięci zewnętrznej a potem robiący RCALL do procedury wysyłającej bajt po UARTcie.
Kod: text
I tak - z jedną kością RAM, SP na 7fffh - ok. Z drugą kością RAM, SP na ffffh - ok.
Wsadzone obie kości - SP 7fffh - ok. SP ffffh -wygląda na wysypanie się stosu, leci ciągle 3a a7 po RS232.
Pozdrawiam
EDIT2:
poprzekładałem RAMy parokrotnie, okazuje się, że to, że jedna kość działała najpierw dobrze to był przypadek, bo potem zaczęła robić cuda. Jutro spróbuję wsadzić inną, zobaczymy, co będzie. Jak się okaże że to pomogło - sprawa zamknięta.
EDIT3: jedna kość była ubita. Zamykam.