I2C: Unterbrechung einer Sendesequenz?

Gast #109311
Lesenswert?

Hallo allerseits !

Was passiert eigentlich, wenn eine Sendesequenz auf dem I2C-Bus durch
einen Interrupt unterbrochen wird ? Sind die Slaves ohne weiteres in
der Lage beim nächsten Clock zu erkennen, dass es weitergeht oder muss
hierzu ein bestimmtes Timing eingehalten werden?
Sollten IRs generell deaktiviert werden, wenn auf dem I2C-Bus gesendet
wird ?

Viele Grüsse
Jan
Gast #109312
Lesenswert?

I2C ist timingunkritisch, d.h. du kannst die Übertragung komplett
einstellen und später fortsetzen. Die Slaves werten nur die Daten bei
Flankenwechsel der Clockleitung aus. Diese können beliebig langsam
kommen.
IRQs deaktivieren nicht notwendig.

----, (QuadDash).
#109313
Lesenswert?

Das Timing ist schon kritisch, d.h. die Minimalzeiten dürfen nicht
unterschritten werden.

Aber es gibt keine Maximalzeiten, Du kannst also ein Start senden und
ein Jahr später das Adreßbyte.

Allerdings wird in Multimasternetzen gerne ein Timeout von 1ms
eingebaut. D.h. wenn der Bus länger als 1ms belegt ist, ohne das sich
SCL geändert hat, wird davon ausgegangen, daß was schief gelaufen ist
und alle Teilnehmer resetten ihr I2C-Interface.

Und 1ms ist ja für Interrupts eine wahnsinnig lange Zeit, d.h. solange
sollten auch Interrupts den I2C nicht verzögern dürfen.


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