Forum: Mikrocontroller und Digitale Elektronik externen SRAM am Atmega


von Atmel Anfänger (Gast)


Lesenswert?

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.

von Sebastian (Gast)


Lesenswert?

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

von Ja mann (Gast)


Lesenswert?

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.

von Atmel Anfänger (Gast)


Lesenswert?

>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?

von Falk B. (falk)


Lesenswert?

@ 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

von Robert S. (razer) Benutzerseite


Lesenswert?

Atmel Anfänger wrote:
> 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?

Genau

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
Noch kein Account? Hier anmelden.