Forum: Mikrocontroller und Digitale Elektronik I2C: Unterbrechung einer Sendesequenz?


von Jan (Gast)


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

von ---- (Gast)


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).

von Peter D. (peda)


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

von Michael (Gast)


Lesenswert?

Wie meinst du das Peter, SCL ruht stille vor sich hin und die
Datenleitung flattert?
Michael

von Peter D. (peda)


Lesenswert?

Genau wie ichs sagte, der Bus befindet sich irgendwo zwischen Start und
Stop, aber auf SCL tut sich nichts >1ms.

Aber das ist nur ne reine Softwarefrage, ob man das implementiert oder
nicht.
Z.B. der P87C751 hat dafür extra einen 1ms Timeoutzähler.


Peter

von Jan (Gast)


Lesenswert?

Mir ging's genau um die Sache mit den Maximalzeiten.
Danke für Eure schnellen Antworten ;-)
Jan

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
Noch kein Account? Hier anmelden.