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