www.mikrocontroller.net

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


Autor: Jan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: ---- (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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).

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Michael (Gast)
Datum:

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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jan (Gast)
Datum:

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

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.