Forum: Mikrocontroller und Digitale Elektronik ATMega32 und externer RAM


von Sascha Biedermann (Gast)


Lesenswert?

Hallo!

Ich möchte für eine Steuerung einen ATMega32 verwenden aber der interne
RAM (2k) ist für diese Aufgabe zu wenig. Da ein ganzer haufen
variablen, arrays usw. verwendet werden müssen. (Ich progge mit
AVR-GCC)
Ich habe gelesen, dass man da einen externen RAM "drankleben" kann.
Wie funktioniert das? Gib es irgentwo Schlatungs-beispiele?
Wie sieht das Softwareseitig aus?
Muss man bei der Programmierung "manuell" auf den RAM zugreifen, oder
läuft das genauso wie beim internen RAM...?

Ich habe schon ein wenig rum gesucht, aber nix richtiges gefunden. Also
schonmal danke für die Antworten und ein Frohes Fest!

MfG
Sascha

von Johannes (Gast)


Lesenswert?

Ein RAM kannst Du da zwar anschalten, allerdings geht das dann nur per
Port-IO, also grottenlangsam, weil Du das komplett selber programmieren
musst. Das nimmt Dir der Compiler nicht ab.
Was Du möchtest, bieten Dir nur die Mega 162/64/128 bzw. 8515. Nur die
haben ein externes Speicherinterface.

von Peter D. (peda)


Lesenswert?

Man braucht nur äußerst selten viel RAM auf MCs, deshalb haben die auch
so wenig.

Man muß nur überlegen, welche Variablen wirklich über die gesamte
Programmlaufzeit gültig sein müssen.


Ich habe früher auch nicht den Sinn lokaler Variablen eingesehen, bis
ich MCs programmiert habe.

Und da geht es oh Wunder ganz einfach mal eben 1kByte an lokalen
Variablen in nur 128Byte RAM unterzubringen.

Ist alles nur eine Frage des Programmierstils.


Peter

von Florian Pfanner (Gast)


Lesenswert?

Hallo,

ich hab schon mal ein RAM-Baustein am Mega161 dragehängt. Der 161 hat
dazu die Adress- und Datenleitungen herausgeführt. Man muss nur noch
ein Bit im Register setzten und schon wird er Externe Speicher
angesprochen.

Ich hab den Speicher jedoch manuell angesteuert: dem Compiler hab ich
gesagt, dass ich nur den Internen Speicher verwende. Für ein Paar große
Arrays (1kb) hab ich die Adresse dann im Externen Speicher definiert.
Der Compiler hat zwar eine Warnung geschrieben, aber es funktioniert
wunderbar.

Zuerst wollte ich zwar auch, dass der Compiler die großen Arrays selbst
verwaltet, aber CodeVision kommt wohl nicht mit dem Externen Speicher
zurecht. Jedenfalls wenn ich den ext. Speicher im Compiler aktiviert
habe, kam vom Compiler eine Fehlermeldung über einen Interruptvektor.
(Kann mir jedoch keinen Reim auf den zusammenhang machen, aber was
sollst...).
Wie das jedoch mit AVR-GCC aussieht kann ich dir nicht sagen. Versuchs
mal mit der Suche-funktion. Vor ein paar Tagen war glaub ich ein
Beitrag über dieses Tema im Forum.

Gruß, Florian

von Sascha Biedermann (Gast)


Lesenswert?

Hallo!

Also ich habt mir schonmal sehr geholfen!

Ich bin noch nicht sicher, wieviel RAM ich genau brauchen werde, denn
ich hab das nur so "PI mal Daumen" gerechnet. evtl. werde ich ein
paar Lookup-Tables in den internen EEPROM auslagern.

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.