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.
Hi Steht doch alles im Datenblatt -> External Memory Interface MfG Spess
ok schau's mir mal an. Danke. Falls ich noch fragen hab poste ich sie.
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.
Hab das ganze leider nicht so verstanden. da wird die ganze zeit was von Atmega103-kompatibilität geredet.
@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.
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.
ja die 4kB intern sind schon in gebrauch und das mit den 5min. sttimmt auch nicht ganz. Versuche das ja schon länger
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.
Muss es denn UNBEDINGT ein AVR sein? Da lohnt sich schon fast der Umstieg auf was vernünftigeres, wie etwa stm32...
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
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?dDocName=en539045 Zugriff halt nicht direkt, dafür Pinsparend. avr
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
Ich nehm einfach nen t89c51cc01. Bei dem weiss ich wie das geht. Danke für die Hilfe. Gruß M.H.
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.
Kann mir dann mal jemand nen beispielcode und nen schaltplan schicken, weil mich das grad alles total verwirrt
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
OK. Jetzt hab ichs verstanden. Danke für die Hilfe/Geduld. Gruß M.H. Und falls ihr Sommerferien habt, dann schöne Ferien.
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
1.woher wisst ihr eigentlich, dass das RAM im bereich 0x8000 und 0x9FFF ist??
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.
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
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?
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.
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 ...
Ok danke, dass ihr's mir mit so viel Mühe beigebracht habt. Gruß, M.H.
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.
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?IdcService=SS_GET_PAGE&nodeId=2698
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.