Hallo zusammen Ich habe zwei Fragen zur Verwendung von externem RAM am AVR: 1. Welche AVR-Typen haben ein Memory-Interface zum Anschluss von externem RAM? Ich habe diese Information nicht finden können auf der Atmel-Hompage. 2. Gibt es bei AVR-Typen die KEIN solches Interface haben eine Möglichkeit trotzdem externes SRAM zu verwenden? Kann man also ein Memory-Interface in Software implementieren (ähnlich wie z. B. ein Software UART als Ersatz eines Hardware UART)? Der externe RAM sollte dabei im C-Code möglichst gleich angesprochen werden können wie der interne RAM. Danke für jede Antwort.
Hallo Könnte das der 8515 sein? (Kein Gewähr, ich kann mich nur so an ein paar mitgelesene Diskussionen erinnern.) Natürlich kannst du externes SRAM auch anbinden, wenn der Controller kein Memory-Interface hat. Es gibt aber ein paar Probleme: 1. Anzahl Pins: für 16 k * 1 Byte brauchst du 14 Adresspins, 8 Datenpins und 3 Steuerpins. Da ist selbst ein Mega32 schon sehr gut belegt. Möchtest du weniger Pins verwenden, kannst du natürlich auch externe Logik für die Steuerung verwenden, womit wir beim zweiten Problem wären: 2. Ein im internen RAM gehaltenes Byte kannst du in maximal 4 Taktzyklen wahlfrei auslesen (2 für die Adresse aufzusetzen, 2 für das lesen). Für externes SRAM benötigst du wesentlich mehr. (4 für die Adresse, 2 für die Daten, 3 Befehle ung einige 'nops' für die Steuerung, macht ganz sicher 10 Zyklen.) Wenn du, um Pins zu sparen noch externe Latches, Schieberegister oder Counter (für rein sequentiellen Zugriff) anbindest, dauert der Vorgang noch länger. 3. Der avr-gcc kann von Haus aus natürlich nicht mit deinem externen SRAM umgehen. AFAIK kann man dem avr-gcc weitere Speichertypen beibringen, ich weiss aber nicht wie. Gruss Michael
Controller wrote: > 1. Welche AVR-Typen haben ein Memory-Interface zum Anschluss von > externem RAM? AT90S4414 AT90S8515 ATmega8515 ATmega162 ATmega64 ATmega128 ATmega640/1280/1281/2560/2561 AT90CANxx AT90USBxx > 2. Gibt es bei AVR-Typen die KEIN solches Interface haben eine > Möglichkeit trotzdem externes SRAM zu verwenden? Im Prinzip ja, aber es ist langsamer und nicht mit normalen Speicherzugriffen adressierbar. > Der externe > RAM sollte dabei im C-Code möglichst gleich angesprochen werden können > wie der interne RAM. Genau das geht dabei nicht. > 3. Der avr-gcc kann von Haus aus natürlich nicht mit deinem externen > SRAM umgehen. Den AVR-GCC interessiert es natürlich von Haus aus überhaupt nicht, ob der RAM, auf den er zugreift, intern oder extern ist.
Hallo Danke für alle diese extrem schnellen und informativen Antworten. Vielleicht beschreibe ich meine Situation noch etwas genauer: Ich verwende im Moment einen ATmega8 mit 128K externem SRAM. Zur Einsparung von Pins werden die Adressen von einem externen Zähler generiert (sequenzieller Zugriff). Die Software ist bis jetzt in AVR-Assembler geschrieben. Nun möchte ich das ganze mit AVR-GCC verwenden und dabei am liebsten auch noch einen wahlfreien Zugriff ermöglichen (z.B. mit Schieberegister). Gibt es dazu vielleicht bereits fertige Lösungen oder Code-Beispiele an denen man sich orientieren könnte? Danke für jede Antwort.
>Ich verwende im Moment einen ATmega8 mit 128K externem SRAM.
Ich würde auf einen ATmega162 migrieren, der hat ein externes SRAM-
Interface, allerdings kann nur 64K direkt angesprochen werden, da müsste
man müsste zwei 64K Banks mittels Port-Pin umschalten.
Ich glaube kaum, dass es für deine Spezial-Lösung fertige Code-Beispiele
gibt.
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.