Hi,
Also ich hab einen ATMega1284P, dort möchte ich gern 32Kb SRAM
anschliessen + Latch.
Gehen mir dann von den 32Kb SRAM, die 16Kb SRAM die integriert sind ab ?
Oder ist es möglich sie so anzuschliessen das ich 48Kb Ram habe und
danach noch Platz für weitere I/O Bausteine ? z.B. DS12807, noch mehr
I/O..
Oder muss der SRAM gar auf Bank 1 so das die Memory Map etwa so
aussieht:
- Internal SRAM 16Kb
- Memory Hole (16Kb)
- 32 Kb SRAM IC
Grüsse
Matthias
@ Matthias (Gast)
>Gehen mir dann von den 32Kb SRAM, die 16Kb SRAM die integriert sind ab ?>Oder ist es möglich sie so anzuschliessen das ich 48Kb Ram habe und>danach noch Platz für weitere I/O Bausteine ? z.B. DS12807, noch mehr>I/O..>Oder muss der SRAM gar auf Bank 1 so das die Memory Map etwa so>aussieht:
Nimm einfach einen 64 oder 128kB SRAM, die Dinger kosten nichts und sind
nicht nennenswert größer, dann hast du fast 64kB.
Hi
>Also ich hab einen ATMega1284P, dort möchte ich gern 32Kb SRAM>anschliessen + Latch.
Der ATMega1284P hat kein Interface für externen RAM. Also mußt du alles
zu Fuss machen.
MfG Spess
Mikki Merten schrieb:> Der Mega1284P hat kein Businterface zum direkten Anschluss von externem> SRAM. Über dieses verfügen nur ATmega1280,1281,2560,2561 sowie Mega162
.... und selbst dann muss man noch das Lesen/Schreiben mit
Zugriffs-Makros (ATMEL EBI) durchführen da anscheinend im
Befehlssatz der AVRs keine direkten externen Buszugriffe
implementiert sind die die üblichen Bus-Signale (CS, R/W, OE etc)
automatisch steuern würden.
Also einfach schreiben:
variable_im_externen_ram = 12345;
geht nicht .....
Vielleicht kennt jemand ein Gegenbeispiel bei einem AVR
neuerer Generation bei dem (denen) das nicht so ist?
@ Matthias (Gast)
>Danke ich hab aber bereits 32Kb Chips.
1.) Wenn man es mit dem richtigen Prozessor und XMEM Schnittstelle
machen will, muss man halt das Chip Select vom SRAM aus der Adresse A15
dekodieren. Wenn das HIGH ist, soll das CS aktiv werden. Dazu braucht
man einen Inverter. Damit liegen die 32kB in der oberen Häfte des
Adressbereichs und man verschenkt nix.
2.) Wenn man den SRAM (unsinnigerweise) "zu Fuß" ansteuern will, ist es
sowieso egal, weil alle Adressen per IO Zugriff gesetzt werden. Da hat
die CPU mit ihrem internen Adressdekoder nichts mit zu tun.
https://www.mikrocontroller.net/articles/Speicher#SRAM
Nimm den richtigen Prozessor mit XMEM Schnittstelle, alles andere ist
nicht sonderlich sinnvoll.
@ Zeitgeist (Gast)
>> Der Mega1284P hat kein Businterface zum direkten Anschluss von externem>> SRAM. Über dieses verfügen nur ATmega1280,1281,2560,2561 sowie Mega162
Es gibt noch mehr! ATmega64, ATmega8515 und andere.
>.... und selbst dann muss man noch das Lesen/Schreiben mit>Zugriffs-Makros (ATMEL EBI) durchführen da anscheinend im>Befehlssatz der AVRs keine direkten externen Buszugriffe>implementiert sind die die üblichen Bus-Signale (CS, R/W, OE etc)>automatisch steuern würden.>Also einfach schreiben:> variable_im_externen_ram = 12345;>geht nicht .....
FALSCH!!!
EBI haben nur die neuen AT_X_mega! DORT ist das Problem, dass man bis zu
16 MB SDRAM ansteuern kann, die meisten Compiler wie der avr gcc aber
keine direkte Unterstützung für Adressen >64kB bieten. DORT braucht man
die Makros!
Kostenpflichtige Compiler wie IAR haben aber direkte Unterstützung OHNE
Macros!
Beitrag "Re: Viel RAM am kleinen Controller">Vielleicht kennt jemand ein Gegenbeispiel bei einem AVR>neuerer Generation bei dem (denen) das nicht so ist?
Bei den normalen AVRs sind Zugriffe auf den SRAM bis 64kB DIREKT
machbar.
Man muss lediglich per Option dem Linker sagen, dass der SRAM verfügbar
ist und er die Variablen dort reinpacken soll.
Falk Brunner schrieb:> EBI haben nur die neuen AT_X_mega! DORT ist das Problem, dass man bis zu> 16 MB SDRAM ansteuern kann, die meisten Compiler wie der avr gcc aber> keine direkte Unterstützung für Adressen >64kB bieten. DORT braucht man> die Makros!
Ok, again what learned, hätte Loddar gesagt.
Lasse mich ja belehren und freue mich dass es (mit Einschränkung, RAM
Grösse) so auch geht.
> Kostenpflichtige Compiler wie IAR haben aber direkte Unterstützung OHNE> Macros!
Na das wäre doch mal ein Feature für den GCC. Warum macht "man" das
nicht?
Und gibt es die direkte lineare Adressierung von externen RAM im GCC
dann bei den (ATMEL-) ARM Prozessoren schon? Oder muss man sich dort
auch explizit auf das interne RAM "beschränken"?
(Fragen über Fragen ... wenn du schon so gut Bescheid weisst ....)
@ Zeitgeist (Gast)
>> Kostenpflichtige Compiler wie IAR haben aber direkte Unterstützung OHNE>> Macros!>Na das wäre doch mal ein Feature für den GCC. Warum macht "man" das>nicht?
Warum machst DU es nicht? Die Entwickler sehen dafür wenig Nachfrage,
also lassen sie es bleiben. Ist schließlich auch mit einigem Aufwand
versehen.
>Und gibt es die direkte lineare Adressierung von externen RAM im GCC>dann bei den (ATMEL-) ARM Prozessoren schon?ARM ist eine ganz andere Familie und damit eine ganz andere Version des
GCC.
Der GCC ist ja recht modular, die Kernfunktionen ist bei allen gleich,
nur das Backend ist für jeden Prozessor anders (jaja, die Insider werden
mich jetzt gleich korrigieren)
> Oder muss man sich dort>auch explizit auf das interne RAM "beschränken"?
Nein, dort ist alles in einem 32 Bit Adressraum direkt ereichbar.
>(Fragen über Fragen ... wenn du schon so gut Bescheid weisst ....)
Nicht wirklich, nur ungesundes Halbwissen. ;-)