Im Slave Sender Modus werden eine Anzahl von Datenbytes an den Master Empfänger gesendet. Alle Statuscodes die nachfolgend verwendet werden, unterstellen, dass die Vorteilerbits mit 0 maskiert sind.
Slave Sender Modus
Um den Slave Sender Modus einzuschalten, müssen das TWAR und TWCR wie folgt initialisiert werden.
Slave Sender 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 Sender 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 1 ist (Read), arbeitet das TWI im Slave Sender Modus, andernfalls wird der Slave Empfänger Modus eingeschaltet. Nachdem die eigene Slave Adresse und das Read 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 Sender Modus kann auch eingeschaltet werden, wenn der Baustein das Schiedsgericht im Mastermodus verloren hat (siehe Status B0h).
Wenn das TWEA während einer Übertragung gelöscht wird, wird das letzte Byte der Übertragung übertragen. Danach treten die Statuscodes C0h oder C8h auf, abhängig davon, ob der Master Empfänger das letzte Byte mit einem NACK oder ACK bestätigt. Das TWI schaltet in den nicht adressierten Slave Modus um und ignoriert den Master, falls dieser die Übertragung weiter fortsetzen will. Daher empfängt der Master alle seriellen Daten als 1. Status C8h wird eingeschaltet wenn der Master weitere Daten abruft (durch Senden eines ACK) auch wenn der Slave das letzte Byte gesendet hat (TWEA null und erwartetem NACK vom Master).
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 Aufwachen 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.
Slave Senden Statuscodes
Slave Senden Formate