Titelbild Mikrocontroller

16.8.2. Master Empfänger Modus

Im Master Empfänger Modus wird eine Anzahl von Bytes von einem Slave Sender empfangen. Um in den Master Empfänger Modus zu gelangen, wird eine START Bedingung ausgesendet. Das Format des darauf folgenden Adresspaketes bestimmt, ob der Master Sende oder Master Empfangs Modus ausgewählt wird. Wenn ein SLA+W Adresspaket ausgegeben wird, wird der Master Sende Modus ausgewählt, wenn ein SLA+R Adresspaket ausgegeben wird, erfolgt der Eintritt in den Master Empfangs Modus. Alle Statuscodes, die nachfolgend angegeben sind, unterstellen, dass die Vorteilerbits mit 0 maskiert sind.
Master Empfänger Modus

Master Empfänger Modus


Eine START Bedingung wird gesendet, wenn folgender Wert in das TWCR geschrieben wird.
START Bedingung

START Bedingung


TWEN muss gesetzt werden, um das TWI freizugeben. TWSTA muss auf eins gesetzt werden, um eine START Bedingung zu senden und TWINT muss mit einer 1 beschrieben werden, um das TWINT Flag zu löschen. Das TWI wird dann den TWI Bus überprüfen und eine START Bedingung senden, sobald der Bus frei wird. Nach dem Senden der START Bedingung wird das TWINT Flag durch die Hardware gesetzt und der Statuscode im TWSR wird auf 08h gesetzt. Um dann den Master Empfänger Modus zu aktivieren, muss anschließend ein SAL+R Adresspaket gesendet werden. Dies wird gemacht, indem eine SLA+R in das TWDR geschrieben wird. Anschließend muss das TWINT Bit gelöscht werden, indem eine 1 hineingeschrieben wird, um die Übertragung fortzusetzen. Es muss also folgender Wert in das TWCR geschrieben werden, um die Übertragung fortzusetzen.
Übertragung fortsetzen

Übertragung fortsetzen


Wenn das SLA+R Adresspaket gesendet und eine Bestätigung (ACK) empfangen wurde, so wird das TWINT Flag wieder gesetzt und der Stauscode im TWSR aktualisiert. Mögliche Statuscodes in diesem Master Modus sind 38h, 40h oder 48h. Wie bei den unterschiedlichen Statuscodes weiter verfahren wird, ist in der Tabelle angegeben.

Die empfangenen Daten können aus dem TWDR Register ausgelesen werden, wenn das TWINT Flag durch die Hardware auf High gesetzt wird.
Dieser Vorgang wird wiederholt, bis das letzte Datenbyte empfangen ist. Danach muss der Master Empfänger den Slave Sender durch Senden einer Nichtbestätigung (NACK) darüber informieren, dass der Datenempfang nun abgeschlossen werden kann. Die Übertragung wird dann beendet, indem eine STOPP Bedingung oder eine Wiederholte START Bedingung erzeugt wird.

Eine STOPP Bedingung wird erzeugt, indem folgender Wert in das TWCR geschrieben wird.
STOPP Bedingung

STOPP Bedingung


Eine Wiederholte START Bedingung wird erzeugt, indem folgender Wert in das TWCR geschrieben wird.
Wiederholte START Bedingung

Wiederholte START Bedingung


Nach einer Wiederholten START Bedingung (Status 10h) kann das TWI erneut auf den selben Slave zugreifen oder auf einen anderen Slave, ohne eine STOPP Bedingung auszusenden. Eine Wiederholte START Begingung ermöglicht das Umschalten zwischen verschiedenen Slaves oder Master Empfänger und Sender Modus, ohne die Kontrolle über den Bus zu verlieren.
Master Empfang Statuscodes

Master Empfang Statuscodes



Master Empfang Formate

Master Empfang Formate


Impressum