Eeprom so langsam?

Gast #459972
Lesenswert?

Ich hab jetzt nach 2 Tagen endlich mal hinbekommen mein Eeprom (24LC64) 
zu beschreiben. Mein Fehler war dass ich nicht lange genug gewartet 
habe. Laut Datenblatt braucht er zum schreiben 5ms. Das ist ja eine 
halbe Ewigkeit. Was macht der so lange?
Da kann ich ja in einer Sekunde nur 200Bytes schreiben. Bei einem 
64kByte Eeprom dauert das dann ja 6Minuten?
Wie lange dauert es eine Page (128Byte) zu schreiben? 5ms oder 128*5ms?
Wie kann ich herausfinden ob er noch beschäftigt ist? In dieser Zeit 
generiert er kein Acknowledge. Wie kann ich abfragen ob er das bit 
sendet oder nicht?
Gast #459985
Lesenswert?

> Wie lange dauert es eine Page (128Byte) zu schreiben? 5ms oder 128*5ms?
> Wie kann ich herausfinden ob er noch beschäftigt ist? In dieser Zeit
> generiert er kein Acknowledge. Wie kann ich abfragen ob er das bit
> sendet oder nicht?

Die Antworten stehen alle im Datenblatt !
Da das Schreiben einer 'page' genauso lange dauert, wie das Schreiben 
eines Byte, ist es immer ratsam, seine Daten 'page'-orientiert zu 
speichern.
Gast #461444
Lesenswert?

OK, aber wie kann ich das acknowledge-bit abfragen? Ich hab dazu leider 
keine Möglichkeit gefunden. Im Datenblatt steht ja nur was vom Erzeugen 
des Bits z.B. im Slavemode oder beim empfangen.
#461874
Lesenswert?

Wenn du das ACK-bit nicht abfragen könntest, würde dein schreiben gar 
nicht funktionieren.
Normalerweise geht es so, daß man den schreiben befehl sendet, dann 
einen repeated start und die Adresse des EEPROM. So lange dieser die 
Adresse nicht mit einem Ack bestätigt, ist er noch mit schreiben 
beschäftigt.
Gast #462038
Lesenswert?

OK ich hab es jetzt hinbekommen. (Mega16)
Falls es jemand interessiert:
do
{
  i2c_start();
  i2c_write_byte(DEV_ADR);  //Sendet Geräteadresse RW=0, schreiben
} while (TWSR==0x20);   //Falls kein Ack: noch mal (siehe Datenblatt 
S.189)
#462084
Lesenswert?

@Walter

ne, das ist schon richtig so.

Um ein ACK zu kriegen, muß man den Chip natürlich adressieren.

Alternativ kann man auch 10ms warten.


Ein anderer gern gemachter Fehler ist, kein Stop zu senden.
Das Schreiben wird nämlich erst mit dem Stop gestartet.
Mit einem Repeat-Start werden dagegen alle gesendeten Daten verworfen.


Peter

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren