Herunterladen Inhalt Inhalt Diese Seite drucken

Verklemmung (Deadlock) Auf Dem I²C-Bus - elv USB-I2C Handbuch

Inhaltsverzeichnis

Werbung

Nach dem Start von LogView ist nun über den Menüpunkt und „Gerät" und dann „Gerät und Port wählen" in
der Geräteliste ganz unten „OpenFormat\USB-I2C_PCF8591" auszuwählen. Dann noch „automatisch Auf-
zeichnung starten" anklicken und neben „RS232(Seriell)" den richtigen COM-Port wählen.
Zuvor muss aber unbedingt über das Terminalprogramm HTerm das nachfolgende Makro ins USB-I2C-
Interface gespeichert werden. Die Baudrate des Interfaces muss zudem auf der Werkseinstellung 11520
Baud stehen und der COM-Port muss nach dem Speichern und dem Starten des Makros in HTerm wieder
geschlossen werden, damit LogView darauf zugreifen kann.
Zugehörige USB-I2C-Anweisungsfolge (Messung ca. alle 0,5 s):
Y01
Y41
Y71
V00{S90 05 .[$1;1;;] R01; R01; R01; R01; P [0]. L01DF >08}
Antwort z. B.:
$1;1;;33;255;255;217;0
...
Im folgenden Bild ist ein Beispiel zu sehen, wie „LogView" diese Messwerte darstellt:
4.6. Verklemmung (Deadlock) auf dem I²C-Bus
Im Falle einer I²C-Verklemmung („Deadlock") kann der Master normalerweise keine Stopp-Bedingung mehr
ausführen, wodurch jede weitere Kommunikation mit den angeschlossenen Slaves unmöglich wird.
Eine solche Verklemmung auf dem I²C-Bus kann beispielsweise geschehen, wenn ein angeschlossener Sla-
ve erwartet, dass als nächstes weitere Bits von ihm gelesen werden sollen (durch falsche Anweisungsfolge
oder durch Störung auf Signalleitung) und er die SDA-Leitung dafür auf Low-Pegel hält. Der Master möchte
wiederum auch etwas auf die SDA-Leitung schreiben und wartet nun darauf, dass die SDA-Leitung vom
Slave freigegeben wird. Das System ist nun verklemmt (alle warten auf etwas) und eine weitere Datenüber-
tragung ist nicht mehr möglich.
Um das zu verhindern, versucht das USB-I2C-Interface eine erkannte Verklemmung (bei der Ausführung der
Start-Bedingung) automatisch wieder aufzulösen. Dazu gibt es 8 zusätzliche Takt-Pulse auf die SCL-Leitung,
sobald die Stopp-Bedingung nicht mehr ausführbar sein sollte (also wenn die SDA-Leitung vom Slave auf
Low-Pegel gehalten wird). Dadurch „schreibt" ein Slave seine Datenbits heraus und gibt anschließend die
SDA-Leitung wieder frei.
Die Kommunikation kann nun weitergehen und das USB-I2C-Interface sendet zur Kenntnisnahme die fol-
gende Fehlermeldung zum PC:
Solve I2C-Bus-Lock
38

Werbung

Inhaltsverzeichnis
loading

Inhaltsverzeichnis