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 :(
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.
"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.
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!
>Und nochmal
Das kannst du noch 100 mal wiederholen.
Ohne Sourcecode kann dir keiner helfen.
Und zeig mal ein paar Bilder vom Oszi.
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
> 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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.