Brett vorm Kopf: Schreiben auf I2C EEPROM

Hallo,

ich habe hier gerade ein volles Brett vorm Kopf mit einem I2C EEPROM

24LC21. Lesen funktioniert einwandfrei, positionieren des Zeigers (also Schreiben!) auch. Nur beim Schreiben von Bytes wird mit immer der doppelte Wert (also um ein Bit nach links geschoben) ins EEPROM geschrieben.

Hier das Bild (ist zwar eng, man kann aber alles erkennen, was wichtig ist, wenn man's vergrößert):

formatting link

Man sieht zunächst, dass ich eine gültige Start Condition erzeuge. Dann

8 Bits reinclocke (0xa0 = 0x50 > Wo hattest Du das Beben nochmal GENAU vorhergesagt?
Zumindest nicht öffentlich!

Ah, der neueste und bis heute genialste Streich unsere großen Kosmologen: Die Geheim-Vorhersage. - Karl Kaos über Rüdiger Thomas in dsa

Reply to
Johannes Bauer
Loading thread data ...

Mit EEPROMs am I2C habe ich nicht gespielt, aber schau noch mal in die specs, ob das zu schreibende Byte nicht ohne ACK zu schicken ist. Manche Devices die ich am Wickel hatte hatten so was (und mir ein paar graue Haare mehr bereitet :-)).

Waldemar

Reply to
Waldemar Krzok

Am 11.11.2010 19:03, schrieb Waldemar Krzok:

Naja, im Datenblatt steht zwar:

Note: The 24LC21 does not generate any acknowledge bits if an internal programming cycle is in progress.

Aber sagt dann auch, um den "Schreibe Byte" Algorithmus zu erklären:

After receiving another acknowledge signal from the 24LC21 the master device will transmit the data word to be written into the addressed memory location. The 24LC21 acknowledges again and the master generates a stop condition. This initiates the internal write cycle, and during this time the 24LC21 will not generate acknowledge signals (Figure 4-1)

D.h. ganz normal das Byte reinschreiben, ACK auslesen, Stop Condition senden und dann erst schreibt das EEPROM. Sollte also alles so passen, oder hab ich mich vertan?

Viele Grüße, Johannes

--
>> Wo hattest Du das Beben nochmal GENAU vorhergesagt?
> Zumindest nicht öffentlich!
Ah, der neueste und bis heute genialste Streich unsere großen
Kosmologen: Die Geheim-Vorhersage.
 - Karl Kaos über Rüdiger Thomas in dsa
Reply to
Johannes Bauer

Johannes Bauer schrieb:

Bist Du sicher, dass wirklich das Schreiben fehlschlägt und nicht etwa das Lesen? Vielleicht schreibst Du ja das korrekte Byte, liest es aber um ein Bit geshiftet. Ein Scope-Screenshot vom Lesen wäre da hilfreich.

Christian

--
Christian Zietz  -  CHZ-Soft  -  czietz (at) gmx.net
WWW: http://www.chzsoft.de/
PGP/GnuPG-Key-ID: 0x6DA025CA
Reply to
Christian Zietz

Kann ich nicht viel zu sagen da ich kaum I2C benutze, aber Dein letzter Satz macht mich stutzig weil Du von "mein ACK" schreibst. M.W. sollen bei I2C nur empfangende Devices ACK generieren, schreibende aber nicht. Das schreibende muss nur einen einzelnen Clock Cycle dafuer erzeugen. Sorry wenn ich das jetzt missverstanden habe.

Muss man bei Pages Writes nicht zuerst die Stop Condition senden und dann erst kommt ACK?

--
Gruesse, Joerg

http://www.analogconsultants.com/

"gmail" domain blocked because of excessive spam.
Use another domain or send PM.
Reply to
Joerg

Am 11.11.2010 19:27, schrieb Christian Zietz:

Meine Güte :-(

Du hast natürlich völlig Recht. Genau das war's. Zum falschen Zeitpunkt den SDA gesampled. Den Code hatte ich getestet und da ging er, dann was geändert und völlig vergessen, erneut zu testen.

Vielen Dank für diesen Wink mit dem Zaunpfahl!

Viele Grüße, Johannes

--
>> Wo hattest Du das Beben nochmal GENAU vorhergesagt?
> Zumindest nicht öffentlich!
Ah, der neueste und bis heute genialste Streich unsere großen
Kosmologen: Die Geheim-Vorhersage.
 - Karl Kaos über Rüdiger Thomas in dsa
Reply to
Johannes Bauer

Am 11.11.2010 19:37, schrieb Joerg:

Nein, ich hab mich blöd ausgedrückt. War natürlich der ACK vom EEPROM. Der Fehler lag aber woanders, ich hatte den betroffenen Code nach einem Test für unfehlbar gehalten - dann was geändert und natürlich nicht mehr getestet. Weia.

Hm nein, zumindest bei dem EEPROM kommt der ACK immer nach dem Senden, danach die Stop Condition.

Viele Grüße, Johannes

--
>> Wo hattest Du das Beben nochmal GENAU vorhergesagt?
> Zumindest nicht öffentlich!
Ah, der neueste und bis heute genialste Streich unsere großen
Kosmologen: Die Geheim-Vorhersage.
 - Karl Kaos über Rüdiger Thomas in dsa
Reply to
Johannes Bauer

Da steht nirgendwo etwas davon, daß der 24LC21 auf ein ACK vom Master wartet. Oder anders ausgedrückt: Deine Vermutung, daß er dein ACK als Datenbit interpretiert, ist wohl richtig.

Du solltest an deinem Englisch arbeiten...

Reply to
Heiko Nocon

Das passiert auch Analogleuten. Ich war absolut hundertpro sicher dass ich den Kondensator nach dem Bode-Test wieder getauscht ... :-)

Erst gemerkt nachdem der zweite PWM Chip in Folge die spektakulaere Abrauche gemacht hatte.

[...]
--
Gruesse, Joerg

http://www.analogconsultants.com/

"gmail" domain blocked because of excessive spam.
Use another domain or send PM.
Reply to
Joerg

Bei I²C sendet grundsätzlich der Empfänger das ACK. Der Master muss natürlich den Takt entsprechend bereitstellen.

Passt, denke ich. Der EEPROM ACKt nicht, solange er schreibt, deshalb musst du beim nächsten Zugriff (z.B. fürs Rücklesen) eben solange versuchen, ihn zu adressieren, bis er mit dem Schreiben fertig ist.

Stefan

Reply to
Stefan Reuther

Solange Du nicht wie ein Kunde eine Schachtel neue SNTs aus US bestellst...

Ersten ans Netz *fatz*peng* Mist, gleich beim ersten ein defektes erwischt. Nächstes *plopp* - *fatz*peng*.

*Kopfkratzen* Mist, da is ja ein Umschalter 110-220 dran.

Ich musste mich festhalten, sonst wär ich vor Lachen unter den Tisch gefallen.

Heinz "Experience is that marvelous thing that enables you to recognize a mistake when you make it again." -- F. P. Jones

Reply to
Heinz Liebhart

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.