externen SRAM am Atmega

Gast #933214
Hallo, ich möchte meinem Atmega128 mit 16 MHz einen externen SRAM 
verpasssen. 32KB würden reichen. Habe noch meine Fragen dazu. Gibt es 
einen ausführlichen Tutorium dazu im Web, würde bei der Platine von 
vorne rein Fehler vermeiden. Atmel Datenblatt und ein paar Beiträge hier 
habe ich bereits gelesen. Werden die Daten dynamisch adressiert oder 
muss man jeder einzelnen Variable einen Zeiger zuweisen? Mich 
interessiert das Ganze auch mehr aus der Programmiersicht. C 
Codebeispiel im Atmel Datenblatt ist leider recht mager.
Gast
Du musst halt den Speicherbus vom AVR verwenden und darfst nicht 
versuchen, den RAM händisch anzusprechen. Aber dann verhält der sich 
soweit ich weiß genauso wie interner SRAM. Einzig die Zugriffszeit ist 
glaub ich ein paar Takte länger, aber das darf einen eh nicht stören, 
wenn man in C schreibt.

Zum anschließen: Wo liegt denn das Problem? Ist im Datenblatt kein 
Beispiel? Vielleicht findet sich auf der Atmel-Seite auch Application 
Note dazu.

Sebastian
Gast
Von der Programmierseite gibt es eigentlich keinen Unterschied zum 
internen SRAM, ausser dass du mit einem bestimmten Register den externen 
RAM aktivieren musst. Du musst noch im makefile die Adressbereiche 
anpassen.
Hardwareseitig brauchst du noch einen Addresslatch, der Dir die Pins 
AD0-7 vom AVR in D0-7 und A0-7 aufteilt.
Gast
>Du musst halt den Speicherbus vom AVR verwenden und darfst nicht
>versuchen
Ok, das ist mir soweit klar ;)


>Von der Programmierseite gibt es eigentlich keinen Unterschied zum
>internen SRAM.

Also muss ich mich nicht selbst um die Pointer kümmern? Sprich, ich 
deklariere ein Array mit 128 Werten, dieser wird automatisch irgendwo 
gespeichert und wenn ich die Daten wieder haben möchte, greife ich auf 
die Variablen ganz wie gewohnt zu?
@ Atmel Anfänger (Gast)

>Also muss ich mich nicht selbst um die Pointer kümmern?

Kommt drauf an. Man kann dem C-Compiler mitteilen, dass jetzt mehr 
Speicher da ist und wo der liegt. Das ist aber AFAIK recht kompliziert. 
Einfacher ist Verarbeitung "per Hand" und Pointer. Ist aber in C kein 
grosser Unterschied.
Steht genauer in Doku der libc vom AVR-GCC.

MFG
Falk

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 18 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.