Titelbild Mikrocontroller

16.8.4. Slave Empfänger Modus

Im Slave Empfänger Modus werden eine Anzahl von Bytes von einem Master Sender empfangen. Alle Statuscodes die nachfolgend verwendet werden, untsertellen, dass die Vorteilerbits mit 0 maskiert sind.
Slave Empfänger Modus

Slave Empfänger Modus


Um den Slave Empfänger Modus einzuschalten, müssen das TWAR und TWCR wie folgt initialisiert werden.
Slave Empfänger Modus einschalten

Slave Empfänger Modus einschalten


Die oberen 7 Bits bilden die Adresse, über die das TWI durch einen anderen Master angesprochen werden kann. Wenn das TWGCE Bit gesetzt ist, wird der Baustein auch durch einen Rundruf angesprochen, andernfalls ignoriert er Rundrufe.
Slave Empfänger Modus einschalten

Slave Empfänger Modus einschalten


TWEN muss auf 1 gesetzt werden, um das TWI freizugeben. Das TWEA Bit muss auf eins gesetzt werden, um das Bestätigen der eigenen Salve-Adresse oder eines Rundrufes freizugeben. TWSTA und TWSTO müssen auf 0 gesetzt werden.

Wenn TWAR und TWCR initialisiert sind, wartet das TWI bis es durch die eigene Salve Adresse (oder einen Rundruf, wenn freigegeben) gefolgt von dem Datenrichtigs Bit adressiert wurde. Wenn das Richtungsbit 0 ist (Write), arbeitet das TWI im Slave Empfänger Modus, andernfalls wird der Slave Sender Modus eingeschaltet. Nachdem die eigene Slave Adresse und das Write Bit empfangen wurden, wird das TWINT Flag gesetzt und ein gültiger Statuscode kann aus dem TWSR gelesen werden. Der Statuscode wird verwendet, um die folgende Aktion der Software zu bestimmen. Die möglichen Aktionen der Software sind für die unterschiedlichen Statuscodes in der nachfolgenden Tabelle beschrieben. Der Slave Empfänger Modus wird auch eingeschaltet, wenn der Baustein das Schiedsgericht im Mastermodus verloren hat (siehe Status 68h und 78h).

Wenn das TWEA während einer Übertragung gelöscht wird, wird das TWI eine Nichtbestätigung (NACK) auf der SDA Leitung zurückgeben, nachdem das nächste Datenbyte empfangen wurde. Dies kann dazu benutzt werden, um zu signalisieren, dass der Slave keine weiteren Daten mehr empfangen kann. Während TWEA auf Null ist, wird das TWI die eigene Slave Adresse nicht bestätigen. Der TWI Bus wird aber weiterhin überwacht, so dass der Adressvergleich jederzeit durch Setzen des TWEA Bits wieder eingeschaltet werden kann. Das bedeutet, dass das TWEA Bit dazu verwendet werden kann, das TWI vorübergehend vom Bus zu isolieren.

In allen Sleep Modi außer dem Idle Modus wird das Taktsystem des TWI ausgeschaltet. Wenn das TWEA Bit gesetzt ist, kann der Baustein weiterhin seine eigene Slave Adresse oder einen Rundruf bestätigen, indem er den Takt des TWI-Busses als Taktquelle verwendet. Der Baustein wird dann aufwachen und das TWI hält die SCL Leitung so lange auf Low, bis das Auwachen abgeschlossen ist und das TWINT Flag gelöscht wird (durch Beschreiben mit einer 1). Der weitere Datenempfang verwendet dann wieder die normalen AVR Takte. Man beachte, dass, wenn der AVR auf eine lange Aufwachzeit eingestellt ist, die SCL Leitung ebenfalls lange auf Low gehalten wird und dadurch andere Datenübertragungen blockiert werden.

Man beachte, dass das TWDR nach dem Aufwachen aus dem Sleep Modus nicht das letzte Byte enthält, das auf dem Bus präsent war.
Statuscodes

Statuscodes



Formate

Formate


Impressum