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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.