mikrocontroller.net

Forum: Compiler & IDEs externes SRAM am AVR


Autor: Controller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: mr.chip (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Controller (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
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.

Autor: Peter Fleury (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.