Forum: Mikrocontroller und Digitale Elektronik I2C 24LC1025 EEPROM page write Problem


von 24LC1025 nicht versteher (Gast)


Lesenswert?

Hallo Leute,
ich benutze das 24LC1025 EEPROM und Daten zu speichern.
Schreibvorgang :
Wenn ich an das Ende einer Seite komme löse ich die Stoppbedingung aus 
und fange an das EEPROM auf ein ACK zu abzufragen.
(Wie ich das Datenblatt(Seite 11) richtig verstehe. Wird das EEPROM nur 
ein ACK  senden wenn es mit dem schreiben der Daten fertig ist.)
Hab ich das ACK empfangen, schreibe ich wieder die EEPROM Add., die neue 
Seitenadd. und die Daten.
Dass dieser Vorgang so abläuft hab ich mit dem Oszi kontrolliert. Auf 
dem i2c werden die erwarteten Daten richtig geschrieben.
Lese ich wieder die geschriebenen Daten von Seite (X) sind diese nach 
dem "umblättern" der Seite (X+1)  korrupt.
Wenn ich beim Schreiben der Daten vor dem umblättern der Seite einen 
Brake point setze bzw warte, funktioniert das Schreiben tadellos.

Übersehe ich irgendwas im Datenblatt  ist das EEPROM hin oder was ist da 
los?
Steh grade total auf dem Schlauch :(

von Falk B. (falk)


Lesenswert?

Es liegt zu 99% an deiner fehlerhaften Software.

von 24LC1025 nicht versteher (Gast)


Lesenswert?

Begründung?

Wie gesagt, ich hab die i2c daten die geschrieben werden mit dem Oszi 
überprüft. Diese werden korrekt auf den BUS geschrieben.
Und alle Start Stop bedingungen und das ACK polling kann ich dort 
korrekt ablesen.

von Falk B. (falk)


Lesenswert?

"Wenn ich beim Schreiben der Daten vor dem umblättern der Seite einen
Brake point setze bzw warte, funktioniert das Schreiben tadellos."

Dann ist wahrscheinlich dein Abfrage, ob der EEPROM schon wieder 
schreiben kann, fehlerhaft. Poste Code als Anhang.

von 24LC1025 nicht versteher (Gast)


Lesenswert?

Und nochmal

Ich hab den gesammten schreibvorgang ohne den Brake point zu setzen im 
Oszi aufgezeichnet. und die Software arbeitet wie erwartet.
Sie pollt solange bis das eeprom ein ACK sendet!
Dabach Schreib sie die richtigen Daten auf den i2c BUS!

von holger (Gast)


Lesenswert?

>Und nochmal

Das kannst du noch 100 mal wiederholen.
Ohne Sourcecode kann dir keiner helfen.
Und zeig mal ein paar Bilder vom Oszi.

von TK (Gast)


Lesenswert?

Hallo,
ich möchte mich meinen Vorgängern anschliessen - ohne Source Code
haben alle nur die Glaskugel im Regal.
Wie sieht denn überhaupt Dein ACK Polling aus?
Mir war noch (dunkel) so, dass man die ADR während des Schreibvorgangs 
NICHT
ändern darf - also auch nicht während des ACK Pollings!!!
Eine Alternative wäre:
1) PAGE Schreiben
2) ACK Polling auf der letzten ADR
3) VERIFY der selben PAGE
dann wieder zu 1.

Gruß
TK

von Ralf (Gast)


Lesenswert?

> Lese ich wieder die geschriebenen Daten von Seite (X) sind diese nach
> dem "umblättern" der Seite (X+1)  korrupt.
Hmmm... undeutlich formuliert. Allein schon deswegen wäre ein Blick auf 
deinen Code nötig, damit wir sehen, was du tust und zu tun glaubst.

Nach obiger Beschreibung ist nicht klar, ob du beim "umblättern" nur 
einen Read machst oder auch in (X+1) schreibst. Außerdem ist 
beispielsweise nicht ersichtlich, auf welche Weise die gelesenen Daten 
korrupt sind - das kann von "nicht geschrieben" bis "Inhalt der 
eigentlich an (X+1) gehört" alles bedeuten...

Ralf

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.
Lade...