Forum: Mikrocontroller und Digitale Elektronik SRAM ansteuerung


von miwitt001 (Gast)


Lesenswert?

Hallo!
Ich wollte mit einem AVR einen externen SRAM ansteuern. Ich hab zwar
das Datenblatt gelesen und auch einige andere Quellen zu dem Thema,
aber eine kleine Frage hätte ich noch.
Wenn ich etwas in das RAM schreibe, dann läuft das doch folgendermaßen
ab:
1. Adresse anlegen
2. Write Enable auf 0
3. Daten anlegen
4. Write Enable auf 1
Die Chip Select Leitung ist immer auf Masse.
Mein Problem ist nun folgendes:
Wenn ich WE auf 0 ziehe, geht das RAM in den "Schreib-Modus". Nun
ändere ich die Richtung des Ports am AVR (DDRx Register) auf Ausgang.
Allerdings ist doch dann der Dateneingang des RAMs einen kurzen Moment
auf einem undefinierten Pegel, nämlich bis ich die Richtung des Port
gewechselt hab und der AVR immer noch auf "Lesen" steht. Stört das
irgendwie?? Mir würde spontan einfallen die Pullups des AVR
anzuschalten, oder macht für eine so kurze Zeit ein undefinierter
Zustand nichts aus?
Nur zur Sicherhet noch: Zum Lesen leg ich einfach die Adresse an und
lese die Daten sonst muss ich da ja nichts machen? Und kann ich die
Output enable Leitung einfach auf Masse legen oder was macht man mit
der? Laut Datenblatt kann ich damit nur die Ausgänge des RAMs hochomig
schalten, aber wozu?
Danke schonmal
mfg Michael

von Matthias (Gast)


Lesenswert?

Hi

OE/ und WR/ dürfen nicht gleichzeitig aktiv sein. Du mußt also bei
ansteuern.

Der Ablauf zum Beschreiben:
1. OE/ und WR/ inaktiv
2. Adresse anlegen
3. Daten anlegen
4. WR/ aktiv
5. WR/ inaktiv

Der Ablauf zum Lesen:
1. OE/ und WR/ inaktiv
2. Adresse anlegen
3. OE/ aktiv
4. Daten einlesen
5. OE/ inaktiv

Matthias

von thkais (Gast)


Lesenswert?

Der kurze undefinierte Zustand ist nicht problematisch, die Pull-Ups
kannst Du getrost vergessen. Das RAM übernimmt die Daten mit der
steigenden Flanke an /WE, in den Datenblättern sind die entsprechenden
Timingdiagramme.
Die /OE Leitung ist zur Steuerung der Output-Treiber des RAM da. Wenn
mehrere RAMs benutzt werden, oder falls ein 16-Bit breiter Datenbus
genutzt wird, der auch Byte-weise angesteuert werden soll, dann werden
die verschiedenen Enable-Signale benötigt. In Deinem Fall, mit nur
einem einzigen SRAM, kannst Du rein theoretisch /CE und /OE fest auf
Masse legen, da ein Low an /WE priorität hat. Nachteilig ist, daß dann
der Datenbus nicht mehr von anderen Komponenten genutzt werden kann.

von crazy horse (Gast)


Lesenswert?

wie wärs denn mit einem AVR, der schon ein Interface für ext. Speicher
hat?

von miwitt001 (Gast)


Lesenswert?

OK danke mehr wollt ich gar net wissen. Damit is alles klar. Wegen des
AVR mit dem externen SRAM Interface: Dann kann ich aber doch das SRAM
nicht mehr an die Leitungen anschließen wie ich will, oder kann man das
irgendwie einstellen?? Muss ich gleich mal schaun, glaub ich hab noch
einen Mega16 rumliegen.
mfg Michael

von miwitt001 (Gast)


Lesenswert?

Oh, anscheinend hat der Mega16 sowas gar net. Dann code ich das ganze
lieber selber, sonst muss ich mir extra einen neuen bestellen... So is
billiger und macht mehr Spaß :-)

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.