-
-
Erfahrener Benutzer
Roboter-Spezialist
yaro,
ja, SLA wird immer in demselben Byte versendet, wie das R/W-Bit. Deshalb kann es gar keinen Unterschied geben. Es ist so, wie Du es verstehst. Am Beste versteht man die Abläufe, wenn man nach den Zustandsbytes (TWSR) geht. Immer, wenn ein TWI-Interrupt erzeugt wird, steht auch ein neuer Wert in TWSR an, der angibt, was der Interrupt bedeutet.
Bei der STOP-Anweisung hast Du irgendwas in den falschen Hals bekommen
: Nach einer STOP-Anweisung kann SCL gar nicht low sein! Die STOP-Anweisung besteht in einer 0->1-Flanke auf der SDA-Leitung, während die SCL-Leitung stabil auf 1 ist. Wenn SCL Null wäre, wäre der Bus blockiert.
Der heikle Fall ist das "clock stretching" durch den Slave Transmitter: Er kann die SCL-Leitung auf 0 halten, so lange er die Antwort an den Master zusammenstellt. Wenn er sich dabei aufhängt, ist der Bus tot. Deshalb benutze ich kein clock stretching. Eigentlich benutze ich den Slave transmitter-Modus ausschliesslich beim Abfragen externer TWI-Chips (PCF 8574 u.ä.). Bei AVR-AVR-Kommunikation benutze ich nur den Master-Modus.
Ciao,
mare_crisium
Berechtigungen
- Neue Themen erstellen: Nein
- Themen beantworten: Nein
- Anhänge hochladen: Nein
- Beiträge bearbeiten: Nein
-
Foren-Regeln
Lesezeichen