mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik ATMega32 und externer RAM


Autor: Sascha Biedermann (Gast)
Datum:

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

Autor: Johannes (Gast)
Datum:

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

Autor: Peter Dannegger (peda)
Datum:

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

Autor: Florian Pfanner (Gast)
Datum:

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

Autor: Sascha Biedermann (Gast)
Datum:

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

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.