Forum: Mikrocontroller und Digitale Elektronik 28C256 programmieren


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von Wolfram F. (mega-hz)


Lesenswert?

Hallo,

ich habe eine Schaltung mit einem 6502 und einem 28C256 EEPROM sowie 
einen XILINX 9572 PLD (als Adress-Decoder u.A.).

Nun ist es so, das EEPROM wird nur zur Hälfte benutzt, also 16K.
(A14 auf HIGH)
Diese 16K sind im Bereich $C000 - $FFFF eingeblendet und 
schreibgeschützt.
Nur die Adresse $CFFF wird vom PLD zum lesen UND schreiben freigegeben.

Leider ist es nun so, daß wenn ich einen Wert nach $CFFF schreibe, das 
EEPROM diesen nicht übernimmt.

Ich habe WE an das PLD angeschlossen, CE ist auf LOW und OE ist mit 
einem Adressdecoder zwischen $C000-$FFFF verbunden.

Weiss jemand, warum man das EEPROM nicht beschreiben kann?


Gruß,
Wolfram.

: Bearbeitet durch User
von Klaus R. (klausro)


Lesenswert?

Wolfram F. schrieb:
> Ich habe WE an das PLD angeschlossen, CE ist auf LOW und OE ist mit
> einem Adressdecoder zwischen $C000-$FFFF verbunden.

Das ist nicht gut. CE sollte durch den Adressdecoder decodiert werden 
und OE sollte während des Schreibvorgangs (wahrscheinlich) high sein. 
Beim Read-Vorgang ist OE dann low. Um welches EEPROM handelt es sich 
denn? Schon mal ins Datenblatt geschaut? Kann das überhaupt 
1-Byte-Write-Cycles?

von Cyblord -. (cyblord)


Lesenswert?

Wolfram F. schrieb:
> Leider ist es nun so, daß wenn ich einen Wert nach $CFFF schreibe, das
> EEPROM diesen nicht übernimmt.

Also das EEPROM übernimmt den Wert falls die Adresse korrekt ist, kein 
Schreibschutz aktiv und du WE und OE und evt. CE korrekt bedienst.

Das meiste davon kann man leicht prüfen.

Schreibschutz gibt es bei den 28C diverse. Software und Hardware.
Den SW Schreibschutz kann man per bestimmter Ansteuersequenz an und 
ausschalten.
Mal ins DB geschaut?

: Bearbeitet durch User
von Volker Z. (vzavza)


Lesenswert?

OE soll High sein!
Software Data Protection nicht enabled?

Siehe: https://ww1.microchip.com/downloads/en/DeviceDoc/doc0006.pdf

von Thomas Z. (usbman)


Angehängte Dateien:

Lesenswert?

geht /OE auf high wenn /WE aktiv wird?

von Wolfram F. (mega-hz)


Lesenswert?

danke für die schnellen Tips!

hmm, nein, OE geht nicht auf HI wenn WE auf LO geht.
Das muss ich mal probieren!

So wie ich es verstanden habe, programmiert das EEPROM immer eine Page 
von 64Bytes.

Es handelt sich um ein XICOR X28C256
https://www.google.com/url?sa=t&source=web&rct=j&opi=89978449&url=https://www.jameco.com/Jameco/Products/ProdDS/74878XICOR.pdf%3Fsrsltid%3DAfmBOoqB44h2hTA29lh08-qeth62WWYosiB08fctSlMNsnVbksGcawiX&ved=2ahUKEwj6he_Msa-LAxWsRvEDHVucKtcQFnoECBQQAQ&usg=AOvVaw3WsX0HiY7slRfH-qY-QuE9

bedeutet das, daß ich selber 64 Bytes schreiben muss oder das das EEPROM 
auch bei nur 1 Byte seine 64 Bytes schreibt?

: Bearbeitet durch User
von Cyblord -. (cyblord)


Lesenswert?

Wolfram F. schrieb:
> bedeutet das, daß ich selber 64 Bytes schreiben muss oder das das EEPROM
> auch bei nur 1 Byte seine 64 Bytes schreibt?

Page Write ist Optional. Bis 64 Byte. man kann auch einfach byte weise 
schreiben.

Aber OE muss high sein!

Beitrag #7824740 wurde vom Autor gelöscht.
von Andreas H. (signore_rossi)


Lesenswert?

Die Datenpins sind doch bidirektional. Wenn Du Output Enable aktiviert 
lässt beim Schreiben, treiben das EEPROM und die CPU die Leitungen. Das 
kann nicht gesund sein. Bestensfalls schreibst Du dann einfach wieder 
den alten Wert, wenn das EEPROM gewinnt.

von Cyblord -. (cyblord)


Lesenswert?

Warum liest du das von dir verlinkte Datenblatt nicht einfach mal?

von Andreas H. (signore_rossi)


Lesenswert?

Das verlinkte Datenblatt ist eindeutig:
Write operations are initiated when both CE and WE are LOW and OE is 
HIGH.

von Wolfram F. (mega-hz)


Lesenswert?

ok.
Blöd nur, daß ich keinen weiteren Pin am PLD mehr frei habe,
aber mit nem Gatter könnte man bei WE=LOW OE=HI erledigen.

Software-Schreibschutz ist laut GALEP deaktiviert.

von Irgend W. (Firma: egal) (irgendwer)


Lesenswert?

Wolfram F. schrieb:
> bedeutet das, daß ich selber 64 Bytes schreiben muss oder das das EEPROM
> auch bei nur 1 Byte seine 64 Bytes schreibt?

So wie auch das Original scheint deiner auch Byte- und Page-Write zu 
können. Schau dir mal die Seite 14/15 in dem von dir verlinkten 
Datenblatt an...

von Gerald B. (gerald_b)


Lesenswert?

12V zum Schreiben angelegt? Die 28er wollen 12V Schreibspannung, ähnlich 
wie ein EPROM. Erst die 29er können lesen und schreiben mit 5V

von Cyblord -. (cyblord)


Lesenswert?

Gerald B. schrieb:
> 12V zum Schreiben angelegt? Die 28er wollen 12V Schreibspannung, ähnlich
> wie ein EPROM. Erst die 29er können lesen und schreiben mit 5V

Nein.

Weder der verlinkte Baustein noch ein normaler AT28CXXX brauchen das.

: Bearbeitet durch User
von Gerald B. (gerald_b)


Lesenswert?

Hm, ist zwar schon über 20 Jahre her, aber ich hatte mal ein EEPROM, da 
war es exakt so.
Weiß nicht mehr den Hersteller und genauen Typ. Könnte Intel oder 
Winbond gewesen sein.

von Thomas Z. (usbman)


Lesenswert?

Gerald B. schrieb:
> Hm, ist zwar schon über 20 Jahre her, aber ich hatte mal ein EEPROM, da
> war es exakt so.

nur für Chip Erase sin 12V notwendig

von Cyblord -. (cyblord)


Lesenswert?

Gerald B. schrieb:
> Hm, ist zwar schon über 20 Jahre her, aber ich hatte mal ein EEPROM, da
> war es exakt so.

Ach so, na dann kann natürlich ganz selbstverständlich so eine totale 
Falschinfo raushauen.
Sorry mein Fehler.

Thomas Z. schrieb:
> nur für Chip Erase sin 12V notwendig

Auch nicht.

Aus welcher Zeit sind eure Infos? Geschichten aus der Gruft.

Aber tröstet euch, die ATC28 bieten einen ID Bereich an, wenn man 12V 
anlegt.

: Bearbeitet durch User
von Michael B. (laberkopp)


Lesenswert?

Wolfram F. schrieb:
> Leider ist es nun so, daß wenn ich einen Wert nach $CFFF schreibe, das
> EEPROM diesen nicht übernimmt.

Ein EEPROM ist kein RAM.

Wolfram F. schrieb:
> Ich habe WE an das PLD angeschlossen, CE ist auf LOW und OE ist mit
> einem Adressdecoder zwischen $C000-$FFFF verbunden.

Du aktivierst WE und OE gleichzeitig beim Zugriff auf $CFFF ?

Warum kann das wohl nicht funktionieren ?

Fang nochmal von vorne an: Timing, Betriebsspannung und Aktivierung im 
Datenblatt von genau deinem Chip nachlesen.

von Thomas Z. (usbman)


Lesenswert?

Cyblord -. schrieb:
> Thomas Z. schrieb:
>> nur für Chip Erase sin 12V notwendig
>
> Auch nicht.

siehe Beitrag "Re: 28C256 programmieren"

gerade noch mal bei Microchip überprüft. Da steht eindeutig VH = 12V bei 
Chip Erase

Cyblord -. schrieb:
> Warum liest du das von dir verlinkte Datenblatt nicht einfach mal?

: Bearbeitet durch User
von Christoph db1uq K. (christoph_kessler)


Lesenswert?

Das gilt anscheinend für den Microchip AT28C256. Im Datenblatt von Xicor 
gibt es keinen Chip-Erase. Die Adresse oben geht auch kürzer:
https://www.jameco.com/Jameco/Products/ProdDS/74878XICOR.pdf

von Cyblord -. (cyblord)


Lesenswert?

Christoph db1uq K. schrieb:
> Das gilt anscheinend für den Microchip AT28C256.

Korrekt.

> Im Datenblatt von Xicor
> gibt es keinen Chip-Erase. Die Adresse oben geht auch kürzer:
> https://www.jameco.com/Jameco/Products/ProdDS/74878XICOR.pdf

Ja da gibts nichts mit 12V. Und Chip Erase ist auch gar nicht das 
Problem des TE sondern normales Schreiben.

von Wolfram F. (mega-hz)


Angehängte Dateien:

Lesenswert?

war ein langer Tag, daher bin ich grade etwas verwirrt... ist die Logik
so richtig?

/EEPROM_OE = /OE * WE

von Wolfram F. (mega-hz)


Angehängte Dateien:

Lesenswert?

EDIT:
CE muss in dem Falle ja ans OE Signal, damits auch beim schreiben 
richtig adressiert wird...

von Obelix X. (obelix)


Lesenswert?

Wolfram F. schrieb:
> ist die Logik
> so richtig?

Nimm dir einen Zettel und mal dir eine Wahrheitstabelle.

Warum so kompliziert? Du brauchst nur einen Inverter, der das WE-Signal 
invertiert an OE gibt und CE steuerst du direkt.

Verinnerliche dir einfach mal die drei Pin-Namen, dann erklärt sich die 
Funktion von alleine.

: Bearbeitet durch User
von Wolfram F. (mega-hz)


Lesenswert?

Hui, ja stimmt!
Manchmal programmiert man einfach zu kompliziert ums eigentliche 
herum...

Danke Dir, das ist natürlich ne super-einfache Lösung!

Bin gespannt, obs dann funktioniert.

von Wolfram F. (mega-hz)


Lesenswert?

also ich muss leider berichten, daß das beschreiben nicht funktioniert.

Ich habe einen Transistor, der mit dem WE Signal angesteuert wird und 
wenn WE HI ist, OE auf LO zieht und andersrum.
Die Schaltung selber funktioniert (mit LEDs an WE und OE zur Sicherheit 
getestet)

in meinem PLD ist als Dekoder folgendes:
1
     if (adr = x"CF00") and rw = '0' then
2
      ee_rw <= '0';
3
    else
4
      ee_rw <= '1';
5
     end if;
oder auch:
1
     if (adr = x"CF00") and rw = '0' then
2
      ee_rw <= rw;
3
    else
4
      ee_rw <= '1';
5
     end if;

wenn ich nun CF00 mit 55 beschreibe und es danach auslese, ist der alte 
Inhalt (77) drin.
Ebenso keine Änderung wenn ich
1
600: LDA #$55
2
     STA CF00
3
     JMP 600
als mini-assembler-routine es beschreiben lasse.
Die WE LED leuchtet, wenn die Dauerschleife läuft.

Im GALEP habe ich nochmals geprüft, ob evt. ein Softwareschutz aktiv 
ist, ist deaktiviert.

Hat jemand noch ne Idee?

von Thomas Z. (usbman)


Lesenswert?

Wolfram F. schrieb:
> lso ich muss leider berichten, daß das beschreiben nicht funktioniert.
>
> Ich habe einen Transistor, der mit dem WE Signal angesteuert wird und
> wenn WE HI ist, OE auf LO zieht und andersrum.

Ich sehe keinen Schaltplan der alle 3 Signale zeigt.
Dir ist schon klar dass nach einem Schreibvorgang warten musst oder per 
data polling das Ende abwarten musst. Da du in einer Dauerloop schreibst 
aktivierst do page write willst du das?

Aus dem Datenblatt:
1
Write
2
Write operations are initiated when both CE and WE are
3
LOW and OE is HIGH. The X28C256 supports both a CE
4
and WE controlled write cycle. That is, the address is
5
latched by the falling edge of either CE or WE, whichever
6
occurs last. Similarly, the data is latched internally by the
7
rising edge of either CE or WE, whichever occurs first.
8
A byte write operation, once initiated, will automatically
9
continue to completion, typically within 5ms"

Datenblatt lesen hilft

: Bearbeitet durch User
von Peter D. (peda)


Lesenswert?

Gerald B. schrieb:
> 12V zum Schreiben angelegt?

Dann macht es kurz mal Puff und der Deckel hebt ab.
Im Datenblatt steht doch eindeutig:
"Voltage on any Pin with Respect to VSS: –1V to +7V"

von Peter D. (peda)


Lesenswert?

Wolfram F. schrieb:
> Im GALEP habe ich nochmals geprüft, ob evt. ein Softwareschutz aktiv
> ist, ist deaktiviert.

Der Galep kann nicht hellsehen. Er kann bestenfalls die 6 Bytes zum 
Deaktivieren schreiben.
Der aktive Softwareschutz kann nur indirekt durch einen Schreibversuch 
festgestellt werden, d.h. der EEPROM Inhalt wird geändert oder nicht.
Ohne explizites Kommando macht kein Programmiergerät einen 
Schreibzugriff von sich aus.

von Peter D. (peda)


Lesenswert?

Wolfram F. schrieb:
> Ich habe einen Transistor, der mit dem WE Signal angesteuert wird und
> wenn WE HI ist, OE auf LO zieht und andersrum.

Das kann nicht funktionieren.
/OE muß um die t_OES vor /WE = low auf high gehen.

von Wolfram F. (mega-hz)


Lesenswert?

Thomas Z. schrieb:
> Wolfram F. schrieb:
>> lso ich muss leider berichten, daß das beschreiben nicht funktioniert.
>>
>> Ich habe einen Transistor, der mit dem WE Signal angesteuert wird und
>> wenn WE HI ist, OE auf LO zieht und andersrum.
>
> Ich sehe keinen Schaltplan der alle 3 Signale zeigt.
> Dir ist schon klar dass nach einem Schreibvorgang warten musst oder per
> data polling das Ende abwarten musst. Da du in einer Dauerloop schreibst
> aktivierst do page write willst du das?
>
> Aus dem Datenblatt:
>
1
> Write
2
> Write operations are initiated when both CE and WE are
3
> LOW and OE is HIGH. The X28C256 supports both a CE
4
> and WE controlled write cycle. That is, the address is
5
> latched by the falling edge of either CE or WE, whichever
6
> occurs last. Similarly, the data is latched internally by the
7
> rising edge of either CE or WE, whichever occurs first.
8
> A byte write operation, once initiated, will automatically
9
> continue to completion, typically within 5ms"
10
>
>
> Datenblatt lesen hilft

wie ich schon geschrieben hatte, hab ich es auch mit nur 1 Byte 
schreiben
versucht, die Schleife war nur ein weiterer Test.

Schaltplan? Dafür brauch man keinen Schaltplan...

4k7 von BC546 Basis an WE,
4k7 vom BC546 Collector nach +5V,
BC546 Emitter an GND.

OE an Collector BC546 (invertiertes WE)
WE an PLD (nur LOW, wenn RW=LOW und Adresse = CF00)
CE an Adressdecoder (nur LOW, wenn Adresse C000-FFFF)

Leider kann ich in der vorhandenen Schaltung nicht folgende Schritte 
ausführen da ich nicht auf alle Adressen des EEPROMs zugreifen kann:


    load data AA to address 5555
    load data 55 to address 2AAA
    load data 80 to address 5555
    load data AA to address 5555
    load data 55 to address 2AAA
    load data 20 to address 5555
    load data XX to any address
    load last byte to last address

um SDP zu deaktivieren, muss wohl mit nem Arduino was basteln um das zu 
beschreiben. Obwohl, eigentlich sollte das der Galep können.
Im Galep kann ich den 28C256 ohne jeglche Probleme programmieren.
Ob 1 Byte oder 32K.

von Cyblord -. (cyblord)


Lesenswert?

Einfach systematisch prüfen.

Adresse anlegen -> am EEPROM messen ob Adresse anliegt.
Daten anlegen -> am EEPROM messen ob Daten korrekt anliegen
Steuerleitungen einzeln einschalten -> prüfen ob die korrekt am EEPROM 
anliegen.

Wolfram F. schrieb:
> Schaltplan? Dafür brauch man keinen Schaltplan...

ja weißt du, wenn die Schaltung ok ist und die SW ok ist, dann muss es 
ja funktionieren. D.h. wenn es dann doch nicht funktioniert dann bildest 
du dir vielleicht nur ein dass es nicht funktioniert, weil es zwingend 
funktionieren muss.

: Bearbeitet durch User
von Wolfram F. (mega-hz)


Lesenswert?

bis auf das Schreiben geht ja alles.
Im EEPROM ist ein Betriebssystem welches auch läuft.

Es ist ein alter Atari 8Bit Computer in dem das ganze läuft.

In dem Betriebssystem ist bei CF00-CFFF noch unbenutzter Platz frei
und es befindet sich auch ein kleiner Maschinensprache-Monitor drin, mit 
dem ich alle Adressen anschauen und verändern kann, zusätzlich ist auch 
noch ein Mini-Assembler drin.
Die Grundlegenden Funktionen wie Daten, richtige Adressen und richtiges 
CE/OE/WE verwenden sind also vorhanden und funktionieren.

Zusätzlich habe ich eine weitere kleine Hardware dran, mit der ich auf 
7Segment-Anzeigen eine ausgewählte Adresse in Echtzeit überwachen kann.
Daran kann ich auch sehen, daß Schreibzugriffe auf CF00 auch geschrieben 
werden. Beim erneuten lesen jedoch ist der alte Wert vorhanden.
Also muss es rein mit dem EEPROM sein.

EDIT: Das mit ner Wartepause nach dem Schreiben von 1Byte hatte ich 
bereits auch probiert...
Fraglich ist nur, muss während des Wartens WE LOW bleiben oder wieder 
HIGH sein?

Ich probiere mal einen anderen Chip.. wer weiss...

: Bearbeitet durch User
von Richard W. (richardw)


Lesenswert?

Hast du keinen Logicanalyzer mit dem du die relevanten Teile des Bus 
beobachten kannst? Falls nicht, unbedingt besorgen und weniger 
Lebenszeit verschwenden.

von Wolfram F. (mega-hz)


Lesenswert?

ja hab daran auch schon gedacht...
werde den nachher mal anklemmen..

von Cyblord -. (cyblord)


Lesenswert?

Wolfram F. schrieb:
> ja hab daran auch schon gedacht...
> werde den nachher mal anklemmen..

Interessant dass man diese offensichtliche Option erst wählt, nach dem 
man wochenlang in Foren gepostet hast.

Sollte das nicht einer der ersten Schritte sein?

von Peter D. (peda)


Lesenswert?

Wolfram F. schrieb:
> richtiges
> CE/OE/WE verwenden sind also vorhanden und funktionieren.

Eben nicht!
Schau nochmal ins Datenblatt.

"WE Controlled Write Cycle":
/CE darf dauerhaft auf low bleiben, aber /OE muß t_OES vor /WE 
umschalten!

Wolfram F. schrieb:
> EDIT: Das mit ner Wartepause nach dem Schreiben von 1Byte hatte ich
> bereits auch probiert...

Nicht nur probieren, muß sein!

Wolfram F. schrieb:
> Fraglich ist nur, muss während des Wartens WE LOW bleiben oder wieder
> HIGH sein?

Siehe
"Figure 2. DATA Polling Bus Sequence"
oder
"Figure 4. Toggle Bit Bus Sequence"

/WE muß dabei high sein!
Und ohne eine dieser Sequenzen, minimal t_BLC warten!

: Bearbeitet durch User
von Thomas Z. (usbman)


Angehängte Dateien:

Lesenswert?

Wolfram F. schrieb:
> Fraglich ist nur, muss während des Wartens WE LOW bleiben oder wieder
> HIGH sein?

was für eine Frage.... Nach deiner Aussage ist !WE ein invertiertes !OE. 
Wenn du also liest ist OE automatisch 0 und WE 1-> data polling

> Schaltplan? Dafür brauch man keinen Schaltplan...
nö Schalpläne werden überbewertet, die braucht kein Mensch solange das 
funktioniert.

Ich würde das so wie im Anhang machen dann gehen auch die 
Sonderkommandos.

von Wolfram F. (mega-hz)


Lesenswert?

also ich habe eben den LA angeklemmt und herausgefunden,
das bei WE=0 OE immer 0 bleibt!
dies passiert aber NUR im laufenden Rechner!
Wenn ich WE von Hand auf LO lege, wird OE HI.
(Und das EEPROM teilweise mit Schrott beschrieben...)

Dann scheint die TransistorSchaltung wohl zu langsam zu sein.
Muss wohl nen richtigen Inverter nehmen!
Bzw. die 139er Schaltung! (danke dafür!)

: Bearbeitet durch User
von Thomas Z. (usbman)


Lesenswert?

Wolfram F. schrieb:
> Bzw. die 139er Schaltung! (danke dafür!)

ich hab für solche Zwecke immer ein paar 139er in der Bastelkiste, ein 
passend beschalteter 138er geht natürlich auch.

Ein Fallstrick gibt es noch:
Eventuell ist das EEprom nach dem Schreiben nicht ansprechbar bis der 
Write Zyklus abgeschlossen ist. Dann musst du die Schreibroutine ins Ram 
kopieren und vom Ram starten. Das ist z.B. bei Flashs oft notwendig.

: Bearbeitet durch User
von Wolfram F. (mega-hz)


Angehängte Dateien:

Lesenswert?

ja hab auch etliche 139,138 und eigentlich alles ab 7400 da.
Das mit deiner Schaltung hat nun geklappt! :-)
Da noch IRQs im Hintergrund laufen, stürzt der beim direkten Schreiben 
ab,
das geht aber in dem man für die Schreibzeit die IRQs/NMIs deaktiviert.
Aber die Schreibroutine kommt später sowieso in Ram, also kein Problem!

Super!

Nur schade, daß ich absolut keinen IO am PLD mehr frei habe, sonst hätte 
man auf den externen 74139 verzichten können...

Werde noch ne Routine zum testen schreiben, die alle 1Sek. den Wert 
erhöht und vergleicht, wenn das 24h erfolgreich läuft, braucht man wohl 
die o.g. Pause OE->HI bevor WE->LOW nicht.
Ich hatte in den 90ern bereits mal ne 6502 Schaltung mit 28C256 EEPROM 
gesehen, da war das WE einfach nur an R/W dran, finde das aber nicht 
mehr.

(Warum der Transistor das nicht schnell genug invertierte, ist mir ein 
Rätsel.. ein BC547 sollte das doch locker schaffen.)

Allen sehr vielen Dank für die Tips und Hilfen!

: Bearbeitet durch User
von Ralf D. (doeblitz)


Lesenswert?

Wolfram F. schrieb:
> (Warum der Transistor das nicht schnell genug invertierte, ist mir ein
> Rätsel.. ein BC547 sollte das doch locker schaffen.)

Hast du mal die Kurvenform mit Oszi angesehen? Bei 4k7 an Basis und 
Kollektor könnte es je nach Kapazität durchaus sein, dass das zu langsam 
wird. Dann könnten kleinere Widerstände helfen ...

Aber du hast jetzt ja eh schon eine funktionierende Schaltung, daher 
wäre das höchstens noch aus reinem Forscherdrang relevant.

von Wolfram F. (mega-hz)


Lesenswert?

nein, habe z.z. kein Oszi mehr.
Für die Platine wäre es nur toll gewesen, nur einen Transistor 
zusätzlich
zu benutzen. Aber ein 74LS139 im SO8 passt da auch noch.

Vielleicht gelingt es mir ja doch noch, irgendwie einen freien IO im PLD 
herzuzaubern.. dann könnte die Logik aus extern verschwinden.

von Wolfram F. (mega-hz)


Lesenswert?

So, endlich funktioniert das Beschreiben des EEPROMs richtig!
Ich hatte bislang noch das Problem, das der Rechner nach/während des 
schreibens abgestürzt ist.

eine kleine Routine hat dazu beigetragen, daß es nun reibungslos 
funktioniert:
1
write_eeprom: LDA Latch_final     Lese Wert aus RAM
2
              STA $CFFF           Schreibe ins EEPROM
3
loop:         LDA $CFFF           Lese vom EEPROM
4
              CMP Latch_final     Vergleiche mit RAM
5
              BNE loop            solange wiederholen...
6
              RTS                 ... bis der Wert stimmt.
Damit hat das EEPROM dann seinen internen Programmierauftrag 
abgeschlossen.

Also wie weiter oben schon beschrieben MUSS man tatsächlich solange 
warten, bis der Wert stimmt (bzw. D7 signalisiert das auch)

Gruß,
Wolfram.

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.