mikrocontroller.net

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


Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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/...

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?

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: TravelRec. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

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

Autor: Swidmann (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: TravelRec. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Thomas (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: TravelRec. (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.