mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Externes RAM am atmega128


Autor: M. H. (bambel2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute. Will mit einem atmega128 daten verarbeiten und im externem 
RAM abspeichern, bis ich sie abhole. Hab da jetzt ne Frage:

Kann mir jemand sagen wie ich das machen soll??
(1. Welcher Baustein
 2. Anschlussbelegung
 3. Ansprechen mit Assembler)
Hab schon viel gegoogelt und co. , hab aber nixx verwertbares gefunden. 
Bräuchte in etwa 4kB

Danke im Voraus

Gruß M.H.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

Steht doch alles im Datenblatt -> External Memory Interface

MfG Spess

Autor: M. H. (bambel2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok schau's mir mal an.

Danke.


Falls ich noch fragen hab poste ich sie.

Autor: Henrik (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Aloa,

für externes Ram brauchst du ne Menge Pins. In der Regel mehr als 10 
Addressleitungen, mindesten 4 Datenleitungen. Das betrifft SRAM.
Ein SDRAM kannst du wahrscheinlich ganz vergessen, da du die 
entsprechende Clock wohl nicht mit dem Mega128 hinbekommst.

Reicht nich auch ein EEPROM über SPI? Da sind 4kB nicht unüblich und 
Schreibzyklen hat so ein Teil idR mindestens 1Mio. Und ab dann wird 
nicht mehr garantiert, dass die Daten mindetsne 10Jahre halten. Das Teil 
ist dann aber lange noch nicht kaputt.

Autor: M. H. (bambel2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab das ganze leider nicht so verstanden.

da wird die ganze zeit was von Atmega103-kompatibilität geredet.

Autor: M. H. (bambel2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Henrik

NHein ein EEProm würde nicht funktionieren, weil ich viele Daten pro 
minute habe und ein ram weniger zeit als ein eeprom benötigt.

Autor: Henrik (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du brauchst halt insgesamt 19 Leitungen plus ein extra IC (Latch). Ob 
sich das lohnt wg. zusätzlichen 4kB?

Da ist doch schon 4kB internes SRAM. Das kannst du doch nehmen?
Und wenn du das ganze in 5 Minuten tatsächlich noch nicht begriffen 
hast, lies es einfach nochmal. Niemand begreift das alles in 5 Minuten.

Autor: M. H. (bambel2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ja die 4kB intern sind schon in gebrauch und das mit den 5min. sttimmt 
auch nicht ganz. Versuche das ja schon länger

Autor: Henrik (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Fehlen nur noch die Fragen, die du posten wolltest... ;) Die ATMega103 
Kompatibilität brauchst du wohl nicht, da du ja nur den Mega128 nutzt.
Ansonsten Seite 4 lesen.

Autor: Dennis (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Muss es denn UNBEDINGT ein AVR sein? Da lohnt sich schon fast der 
Umstieg auf was vernünftigeres, wie etwa stm32...

Autor: Frank K. (fchk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
M. H. schrieb:
> Hallo Leute. Will mit einem atmega128 daten verarbeiten und im externem
> RAM abspeichern, bis ich sie abhole. Hab da jetzt ne Frage:
>
> Kann mir jemand sagen wie ich das machen soll??
> (1. Welcher Baustein
>  2. Anschlussbelegung
>  3. Ansprechen mit Assembler)
> Hab schon viel gegoogelt und co. , hab aber nixx verwertbares gefunden.
> Bräuchte in etwa 4kB

1. Irgendein SRAM, gibts in 8k oder 32k, nennt sich 6264 (8k) oder 62256 
(32k)

2. Du brauchst die Ports A (Daten und untere 8 Bit der Adressen), Port C 
(die oberen Adreßleitungen) und Port G (ALE, RD(OE), WR) und ein Latch, 
zB 74HC574. Rest steht im Datenblatt des AVR.

3. Ganz einfache Adreßzugriffe wie aufs interne SRAM auch.

fchk

Autor: avr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn es über SPI reicht schau mal bei Microchip.

SRAM im 8-Pin Gehäuse mit SPI-Interface bis 20 MHz und 256 Kbit.

z.B.:http://www.microchip.com/wwwproducts/Devices.aspx?...

Zugriff halt nicht direkt, dafür Pinsparend.

avr

Autor: M. H. (bambel2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Eine Frage zum Latch. Das ist doch ein Baustein, der die Pins von port a 
auf die datenleitungen bzw. auf die Adressleitungen legt. sozusagen ein 
umschalter, oder?

P.S.: Apropos gescheiter controller. Hab auch schon mit dem t89c51cc01 
gearbeitet falls euch das was sagt. Dachte nur der ist vielleicht ein 
wenig zu, nun ja, übertrieben für'n paar messungen.

Autor: M. H. (bambel2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hab mir mal den 6264angeschaut.

Wofür sind die Anschlüsse CE1 und CE2??

und dass mit dem Column und row decoder schnall ich auch nicht. Ich 
dachte ich kann einen 16 bit wert mit der speicheradresse übergeben.

Autor: Detlev T. (detlevt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo M.H.

du hast nicht geschrieben, warum es unbedingt ein MEGA128 sein muss. Es 
gibt seit einer Weile ja auch einen MEGA1284p. Der hat 16kB internes 
SRAM und genauso viel Flash und EEPROM wie der 128. Vielleicht passt der 
ja.

Gruß, DetlevT

Autor: M. H. (bambel2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ja den könnte ich nehmen.

Danke. Aber nehmen wir mal an ich will einen externen verwenden. Wie 
mache ich es dann mit dem 6264??

Warum ist das ganze in zeilen und Spalten eingeteilt??

noch dazu so ne bescheuerte anzahl.

Frank K. schrieb:
> Du brauchst die Ports A (Daten und untere 8 Bit der Adressen), Port C
> (die oberen Adreßleitungen) und Port G (ALE, RD(OE), WR) und ein Latch,
> zB 74HC574. Rest steht im Datenblatt des AVR.

Untere 8 bit und obere 8 bit gibts ja auch  nicht, da ich nur 13 
adressleitungen habe.

Autor: Alexander v. Grafenstein (avogra)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Statt so nem dicken AtMega würd ich eher nen Xmega nehmen, wenn du bei 
AVR bleiben willst. die gibts mit bis zu 16KB Ram und sind sogar 
billiger. Das meiste funktioniert wie bei den Megas, nur dass du ne 
ganze Latte extra-features bekommst. Zumindest hab ich das so 
aufgefasst. bin selber gerade an nem Projekt, wo ich zum ersten mal 
einen hernehmen werd.

Aber schreib doch mal, was genau du eigentlich machen möchtest. Also das 
gesamte Projekt. Oft gibts noch ganz andere Möglichkeiten, an die man 
selbst erst einmal gar nicht denkt :)

Gruß, Alex

Autor: M. H. (bambel2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich nehm einfach nen t89c51cc01. Bei dem weiss ich wie das geht.


Danke für die Hilfe.

Gruß M.H.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

> Das ist doch ein Baustein, der die Pins von port a
>auf die datenleitungen bzw. auf die Adressleitungen legt.

Nein, das ist ein Speicher für Adressleitungen.

>Warum ist das ganze in zeilen und Spalten eingeteilt??

Was für Zeilen und Spalten? Für dich sind nur die 13 Adressleitungen 
interessant.

>Wofür sind die Anschlüsse CE1 und CE2??

CE-> Chip Enable. Beide CEs müssen auf L liegen damit der Speicher 
ansprechbar ist.

MfG Spess

Autor: AVRuser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

> Eine Frage zum Latch. Das ist doch ein Baustein, der die Pins von port a
> auf die datenleitungen bzw. auf die Adressleitungen legt. sozusagen ein
> umschalter, oder?

Kein Umschalter; ein Latch ist ein "Speicher", der bei inaktivem 
Latch-Signal die zuvor anliegenden Daten speichert. Hier werden mit dem 
ALE-Signal des AVR ie unteren 8Bit der Adresse gespeichert; die gleichen 
Leitungen des AVR dienen auch als Datenleitungen.

> Hab mir mal den 6264angeschaut.
> Wofür sind die Anschlüsse CE1 und CE2??
> und dass mit dem Column und row decoder schnall ich auch nicht. Ich
> dachte ich kann einen 16 bit wert mit der speicheradresse übergeben.

/CE1 und CE2 sind Chipselect-Eingänge. Diese müssen Low und High sein, 
dann ist das RAM selektiert. Hier sollte /CS1 an GND und CS2 an eine 
Adress-Leitung (A13). Ansonsten die Datenleitungen D0-D7 an die 
AVR-Datenleitungen und die Adressleitungen A0-A7 ans Latch und A8-A12 
sowie CS2 an die entsprechenden AVR-Adresspins A8-A13. Dann ist der 
Speicher im AVR-Adressraum von 0x8000 bis 0x9FFF anzusprechen.

Der 6264 hat 64kBit; das sind 8kByte Grösse. Da der Speicher intern aus 
Bits aufgebaut und in einer Matrix angeordnet ist, kommt der interne 
Aufbau zustande. Für die Benutzung des RAMs ist das aber egal. Hier 
zählen die Adress- und Datenleitungen sowie CS, /RD und /WR.

Autor: M. H. (bambel2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Kann mir dann mal jemand nen beispielcode und nen schaltplan schicken, 
weil mich das grad alles total verwirrt

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi

>Kann mir dann mal jemand nen beispielcode...

Wenn du das Datenblatt gelesen hättest, wäre dir der Beispielcode (sogar 
in Assembler) aufgefallen.

MfG Spess

Autor: Frank K. (fchk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
M. H. schrieb:
> Ja den könnte ich nehmen.
>
> Danke. Aber nehmen wir mal an ich will einen externen verwenden. Wie
> mache ich es dann mit dem 6264??
>
> Warum ist das ganze in zeilen und Spalten eingeteilt??

? Diese Frage verstehe ich nicht.

> Frank K. schrieb:
>> Du brauchst die Ports A (Daten und untere 8 Bit der Adressen), Port C
>> (die oberen Adreßleitungen) und Port G (ALE, RD(OE), WR) und ein Latch,
>> zB 74HC574. Rest steht im Datenblatt des AVR.
>
> Untere 8 bit und obere 8 bit gibts ja auch  nicht, da ich nur 13
> adressleitungen habe.

Der AVR hat 16 Adreßbits für 64k, Du brauchst aber nur die unteren 13. 
Den Rest läßt Du offen.

Also:
Port A:
AVR  RAM  HC574
PA0-->D0---D0
...
PA7-->D7---D7

und

      A0---Q0
      ...
      A7---Q7

Port C:
PC0-->A8
PC1-->A9
PC2-->A10
PC3-->A11
PC4-->A13

Port G
PG0-->!WR
PG1-->!OE
PG2--------CP (der Takteingang vom HC574)
           !OE--GND (vom HC574)
      !CE1------GND (vom RAM)
      CE2-------VCC (vom RAM)

Soweit abgepinnt?

Steht aber eigentlich auch alles im Hersteller-Datenblatt des Mega128. 
Abschnitt "External Memory Interface". Den Abschnitt musst Du sowieso 
lesen, weil Du das External Memory Interface vor Gebrauch noch 
anschalten und konfigurieren musst.

fchk

Autor: M. H. (bambel2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
OK. Jetzt hab ichs verstanden.


Danke für die Hilfe/Geduld.


Gruß M.H.

Und falls ihr Sommerferien habt, dann schöne Ferien.

Autor: M. H. (bambel2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ahh sorry noch ne frage. Das latch hat doch die anschlüsse CLK und 
output control. nehm mal an, der clk übernimmt die daten. und output 
control gibt sie am ausgang aus

Gruß M.H.

Autor: avr (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert

Autor: Frank K. (fchk)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
M. H. schrieb:
> Ahh sorry noch ne frage. Das latch hat doch die anschlüsse CLK und
> output control. nehm mal an, der clk übernimmt die daten. und output
> control gibt sie am ausgang aus

Genau. Ausgeben soll er die Daten immer - das RAM braucht ja alle 
Adressleitungen, und der Clock kommt vom ALE-Signal des Prozessors, das 
anzeigt, daß auf Port A jetzt eine Adresse aufliegt, die gespeichert 
werden soll. (Pinsparmaßnahme)

fchk

Autor: M. H. (bambel2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
1.woher wisst ihr eigentlich, dass das RAM im bereich 0x8000 und 0x9FFF 
ist??

Autor: Spezi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

hast du den Link mit dem Schaltplan nicht angesehen? Dort ist alles 
schön zu sehen. (Nur das RAM ist grösser: 32kByte)

Das von dir genannte Latch ist falsch; du brauchst ein 74xx573 und 
keinen 574er. Siehe oben.

Der Speicher-Adressbereich des AVR geht von 0x0000 bis 0xFFFF (16bit). 
Der untere Bereich ist vom internen RAM belegt; der Rest ist frei.
Wo nun das externe RAM liegt, bestimmt der CS2-Anschluss des RAM. Ist er 
an Adressleitung A15 (nicht A12, wie ich fälschlich sagte) 
angeschlossen, so ist das RAM im genannten Bereich (0x8000 bis 0x9FFF) 
zu finden (es wird noch an einigen anderen Stellen eingeblendet, aber 
das ist hier egal).
Im Adressbereich ab 0x8000 ist Adressleitung A15 auf High; damit ist das 
RAM über CS2 selektiert und kann angesprochen werden.

Autor: M. H. (bambel2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok aber dass mit der adresse check ich nicht. der chip hat gar keinen 
a15 pin. und cs2 liegt weder an a12 noch an a15

Autor: M. H. (bambel2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
M. H. schrieb:
> Frank K. schrieb:
>> Du brauchst die Ports A (Daten und untere 8 Bit der Adressen), Port C
>> (die oberen Adreßleitungen) und Port G (ALE, RD(OE), WR) und ein Latch,
>> zB 74HC574. Rest steht im Datenblatt des AVR.

hier ist ein latch mit 574 am ende.

ist das nicht egal welches ich nehme?

Autor: M. H. (bambel2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ohh hab das ganze verstanden. also verbinde ich einfach den ausgang am 
avr der zu a15 führen würde mit cs2, oder?? a14 bleibt frei.

Autor: Spezi (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also noch mal ...

Der AVR hat 16 Adress-Leitungen (8 über das Latch und 8 über PortC). Das 
6264-RAM hat 13 Adress-Leitungen (A0-A12). Diese werden an die 
zugehörigen Pins vom Latch und PortC angeschlossen; der Rest am AVR 
bleibt frei. Bis auf den A15-Pin (PC7), dieser kommt an CE2. Die 
Leitungen /RD und /WR werden auch an RAM und AVR angeschlossen. CE1 vom 
RAM kommt auf GND.
Dann ist der gennannte Adressbereich fürs RAM gültig.

Beim Aufbau der Schaltung die Abblock-Kondensatoren beim AVR, dem Latch 
und dem RAM nicht vergessen!

> hier ist ein latch mit 574 am ende. ist das nicht egal welches ich nehme?

Nein, ist es nicht. In allen mir bekannten Schaltungen findet man einen 
573-Chip. Und wenn man sich das Timing des ALE-Signals ansieht, wird 
auch klar, warum das so sein muss ...
Falls nicht: der 573 speichert, wenn LE auf Low ist; der 574 speichert 
auf steigender Flanke des CK-Signals.
Es gibt dazu (glaube ich) auch eine AN von ATMEL für das externe 
Interface. Dort sind alle Komponenten beschrieben. Auch im 
Mega128-Datenblatt ist ein Hinweis zum 74xx573-Chip und dessen 
Timing-Anforderungen.

> ohh hab das ganze verstanden. also verbinde ich einfach den ausgang am
> avr der zu a15 führen würde mit cs2, oder?? a14 bleibt frei.

Ja, so ist es. Habe ich gerade oben beschrieben ...

Autor: M. H. (bambel2)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ok danke, dass ihr's mir mit so viel Mühe beigebracht habt.


Gruß, M.H.

Autor: Juergen Harms (harms)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich bin gerade beim Blättern auf diese Diskussion gestossen: in den 
Daten zum AT90CAN128 steht die Warnung, dass die klassischen 74HC ICs 
den Anforderungen (Anstiegszeit, Verzögerung ...) an den Puffer zwischen 
Prozessor und Speicher nicht genügen, ATMEL sagt dass (zumindest beim 
AT90CAN) 74AHC Bausteine zu verwenden sind.

Autor: Detlev T. (detlevt)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ist jetzt vielleicht etwas spät, aber es gibt von Microchip auch SRAMs 
mit 8 bzw. 32kiB und SPI-Schnittstelle. Ist vielleicht für den einen 
oder anderen eine Alternative zum Pinfressenden SRAM mit 
Parallel-Schnittstelle.

http://www.microchip.com/stellent/idcplg?IdcServic...

Autor: AVRuser (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

@ Juergen Harms:

Das ist eine Frage der Taktfrequenz, mit der der Controller läuft. Wenn 
der maximal mögliche Takt (16MHz) verwendet wird, passt das Timing der 
"HC" Bausteine nicht mehr, da etwas zu langsam. Dann muss man die 
schnelleren "AHC" oder auch "AC" Bausteine werwenden; also für das Latch 
einen 74A(H)C573.

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.