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.
Der Mega1284P hat kein Businterface zum direkten Anschluss von externem SRAM. Über dieses verfügen nur ATmega1280,1281,2560,2561 sowie Mega162
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. ;-)
Ok, dann hab ich wohl die Version vom ATMega durcheinander gewürfelt :) Wenn ich eh zu Fuss gehen muss kann ich ja gleich I2C/SPI Ram nehmen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.