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?
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.
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.
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?
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
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.
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).
Hallo, das hab ich berücksichtigt habe bei 8Mhz Takt 10 nops drin, heute hab ich keine Zeit werd mich morgen nochmal dransetzten.
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
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.
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
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.