Forum: Mikrocontroller und Digitale Elektronik AT28C64B Fragen zur Beschaltung und zum Timing


von Thomas (Gast)


Lesenswert?

Hallo,

ich habe meine Schaltung EEPROM-Schaltung nun fast fertig. Hier eine
vereinfachte Schaltung
http://people.freenet.de/Thomasoly/Speicher_vs_AVR2.png
Habe allerdings nur 8 Bits zu Adressierung über einen 573er Latch
angeschloßen und 8 Datenleitungen direkt zum AVR. Dazu habe ich kurz
ein paar Fragen und wäre sehr dankbar wenn mir jemand dazu etwas helfen
könnte.

1. Soll ich die restlichen Adressleitungen über einen Wiederstand auf
Masse legen, direkt auf Masse oder kann ich Sie frei lassen?

2. Verstehe ich das Datenblatt richtig das man sowohl Byte Write als
auch Pagewrite nutzen kann, da ich speziell ersteres benötige. Auf
Seite 2 steht extra ein Abschnitt Bytewrite oder soll das die
Übermittlung für ein Byte der Page sein?
http://www.atmel.com/dyn/resources/prod_documents/doc0270.pdf

3. So wie ich das verstehe werde ich mit den Schreiben so vorgehen.
Ich gebe die Daten an das Latch und schate die Ausgänge ein. Lege dann
OE auf High und CE auf Low-Pegel, wenn ich jetzt die WE-Leitung auf Low
ziehe sollte das Byte doch ins EEPROM geschrieben werden.

4. Die ganzen Steuerleitung fürs ROM möchte ich über 10kOhm gegen Masse
ziehen und über den AVR jeweils high hingeben. Ist das so ratsam oder
sollte die Pins lieber über einen Wiederstand auf Hihg legen und mit
dem AVR auf low ziehen?

von Thomas (Gast)


Lesenswert?

Hallo,

jetzt hab ich was vergessen. Beim Auslesen, leigen die Daten da nur
einen Bestimmte Zeit an den Datenleitungen oder leigen die solange dort
an bis man dem EEPROM wieder neue Befehle (Flankenwechsel, OE,WE,CE usw)
gibt.

von Thomas (Gast)


Lesenswert?

Hallo,

habe es hinbekommen mit dem lesen und beschrieben. Eigentlich super
easy das ganze, bin sogar mit 30 Befehlen ausgekommen eine Stelle zu
beschreiben und auszulesen ohne jetzt auf einen kurzen Code zu achten.
Werde demnächst die Schaltung mit Erklärung bereitstellen.

von Thomas (Gast)


Lesenswert?

Hallo,

es scheint doch noch nicht zu funktioieren, habe gestern schon den
ganzen Tag dran rumbrobiert, glaube langsam der EEPROM ist kaputt, weil
ich da mal dummerweise LEDs an die I/O Ports gehängt habe oder aber die
Teile sind zu schnell für den AVR, da ich testweise mal ein paar 27C's
ausprobiert habe wo noch Biosdaten drauf sen sollten, mit dem Oszi
beobachte ich sehr kurze Flanken diese sind aber extrem kurz und
undeutlich (Mhz-Oszi) habe deswegen probiert die Daten über einen Port
auszulesen und über einen 2ten Wiederzugeben funktioniert aber auch
nicht.

Kann mir jemand sagen wie lange die Daten anliegen? Wenn ich doch CE
und OE nicht wieder auf high lege sollten die Daten doch ewig anleigen
oder?

von peter dannegger (Gast)


Lesenswert?

Wenn Dir Leute schreiben, daß offene Pins ganz ganz schlecht sind, dann
kannst Du das ruhig glauben.

Also OC vom 573 fest auf GND und sämtliche Adressen, OE, WE, CS auf
festes Potential, dann kommen auch stabile Daten raus.

27C64 und 28C64 sind nicht pinkompatibel.


Peter

von Thomas (Gast)


Lesenswert?

Hallo,

ja habe die Sachen schon gegen Masse gezogen, ich habe hier
Pinkompatible 27C und ein SRAM hier, mein Fehler lag aber wo anderst
habe versucht mittels in temp, portX Daten einzulesen, das muss aber in
temp, pinX heißen. Denke mal das ich es jetzt hinbekomme.

von TravelRec. (Gast)


Lesenswert?

Ahem, falls Du Portleitungen sparen möchtest: ich habe selbige Schaltung
mit ´nem 4040 als Adreßzähler gebaut und bekomme somit den vollen
Adreßumfang und habe dabei nur 2 Leitungen (Takt, Zähler-Reset) zur
Adressierung benutzt - kleine Anregung. BTW: 28C64 funktioniert super
und ist definitiv nicht zu schnell - eher zu langsam für den AVR :).
Anmerkung: nicht vergessen, daß das Schreiben einer Speicherzelle im
EEPROM über eine Millisekunde benötigt, in der das EEPROM nix anderes
machen kann (AVR muß also so lange warten).

von Thomas (Gast)


Lesenswert?

Hallo,

das hab ich berücksichtigt habe bei 8Mhz Takt 10 nops drin, heute hab
ich keine Zeit werd mich morgen nochmal dransetzten.

von Swidmann (Gast)


Lesenswert?

Hallo Thomas,

vielleicht habe ich etwas falsch verstanden, aber bei einer
Schreibzyklusdauer von ~1ms müsstest Du bei 8 MHz Takt dann aber 10000
NOPs einfügen (= 1,25 ms).

Grüße,

Stefan Widmann

von TravelRec. (Gast)


Lesenswert?

Wollt ich sagen 10 nops sind jar nüscht - die sind weg wie nix; ich habe
2 Delayregister ´runtergezählt bei 8Mhz, eingestellt auf 20*256 counts
zu je 8 Clock-Zyklen, das reicht dann gerade. Wenn die Spezifikationen
vom 23C64 bezüglich des Timings nicht eingehalten werden, dann ist
immer nur die erste Speicherzelle das, was Du haben willst, in den
anderen stehen dann nur noch Zufallszahlen.

von peter dannegger (Gast)


Lesenswert?

Ich nehme immer den Pagemodus, da kann man mehrere Bytes gleichzeitig
schreiben und dann mit Ready-Polling (Rücklesen bis gleich) das Ende
erkennen.

Allerdings nehme ich 24C64 ... 24C512, da spart man sich den ganzen
Verdrahtungswust.


Peter

von Thomas (Gast)


Lesenswert?

Hallo,

na wo bin ich nur mit meinen Gedanken werde da dann nochmal ne Schleife
reinmachen. Deswegen wurden warscheinlich auch einzelne Bytes nicht
gebrannt. Warte eh nich auf ein paar Pulldown-Wiederstandsreihen von
Reichelt und werds dann wieder in Angriff nehmen.

Ich nehme kein 24C weil ich mir da mit dem Code schwerer tuhe als mit
den paar Latches und schneller ist es auch noch dazu.

von Thomas (Gast)


Lesenswert?

Hallo,

kan nmir jemand das mit dem Poling erklären? Wenn das Byte geschrieben
ist was geschieht dann mit I/O Pin7? Gibt es ein High aus oder gibt es
das entsprechende Bit aus das zum schreiben dort anlag?

Dann gibts ja noch die Möglichkeit mit den I/O Pin6 dieser soll ja
wärend dem Schreiben hin und her springen. Ich müsste doch dann nur
jeweils 2 mal diesen Pin abfragen und wenn ich 2mal das gleiche auslese
weis ich ja das es nicht mehr springt, wenn ich langsam genug lese. Dann
bräuchte ich nicht 1000 Takte warten obwohl es vielleicht nur 850 Takte
dauert.

von TravelRec. (Gast)


Lesenswert?

Naja, ich schreib halt bislang nur immer einzelne Bytes (Datenlogger),
da ist das mit dem Warten relativ Bockwurst. Für schnelle Sachen ist
das Polling sicher besser geeignet. Wie´s funzt, steht im Datenblatt
des 28C64B, mit Timingtabellen!

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.