ich möchte ein I2C-EEPROM 24C64 vom AVR aus mit dem sequential read auslesen. Ich schreibe also I2C-Start, Control-Byte, Adressbytes 1 und 2, Start und Control. Nun müsste ich lt. Datenblatt die bytes eines nach dem anderen auslesen können. Darf ich, wenn ich en byte gelesen und bestätigt habe ein wenig warten um das byte seriell auszugeben, bevor ich das nächste Byte auslese? Im meinem Datenblatt fand ich dazu nichts. Gruss Matthias
Hallo, siehe auch http://www.mikrocontroller.net/forum/read-1-106023.html#new . Bei I2C ist die minimale Zeit kritisch (die darf nicht unterschritten werden.). Die maximale Zeit kannst Du (bei reiner Master-Slave Kommunikation) "frei" wählen. Gruss Andreas
Hallo Andreas, danke für den Hinweis. :-) Dort las ich allerdings auch etwas von einem möglichen Timeoutzähler von 1ms. Du meinst also es gibt keine Probleme, wenn ich mal ein paar Sekunden lang zwischen den Bytes warte. Dann werde ich es mal so weiter implementieren. Gruss Matthias
Ein Timeout ist nur in Multimasternetzen notwendig, falls sich da mal was verklemmt (Softwarefehler, Störimpulse). Da man dort ja nicht weiß, welcher Master gerade abgekackt ist, macht eben jeder den Timeout und gut is. Als Singlemaster kann man jedoch einfach ein Stop senden (u.U. bis zu 9 mal), bis der Bus wieder frei ist. Peter
Genau so isses. I2C ist was das Protokoll anbetrifft völlig Zeitunkritisch da I2C eigentlich nur auf simplen Schieberegistern mit einfacher logik beruht (Interface only natürlich) Du kannst beide Leitungen bis zum Limmit Takten aber auch die Bits im Wochen oder Monatsrythmus per Kippschalter schalten. Wie Peter schon sagte gibt es Timeouts nur bei mehreren Mastern am Bus und selbst dort hats du genug zeit zum versenden denn du kannst das Eeprom auch Adressiert auslesen. Da spielt es keine Rolle ob zwischendurch ein anderer was gelesen hat.
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.