Titelbild Mikrocontroller

16.6.2. TWCR – TWI Control Register

Das TWCR wird verwendet, um die Arbeit des TWI zu kontrollieren. Es wird verwendet, um den TWI freizugeben, um einen Masterzugriff durch Aussenden einer Start-Bedingung zu beginnen, um die Emfangsbestätigung zu erzeugen, um eine Stopp-Bedingung zu erzeugen und um den Takt anzuhalten, während die Daten, die auf den Bus geschrieben werden sollen in das TWDR Register geschrieben werden. Es zeigt ebenfalls eine Schreibkollision wenn versucht wird, Daten in das TWDR zu schreiben, während dieses Register nicht ansprechbar ist.

TWCR Register des ATmega8

TWCR Register des ATmega8


Bit 7– TWINT: TWI Interrupt Flag

Diese Bits wird durch die Hardware gesetzt, wenn das TWI seinen laufenden Job beendet hat und auf eine Antwort der Applikationssoftware wartet. Wenn das I-Bit im SREG und das TWIE-Bit im TWCR gesetzt sind, springt die MCU zu dem TWI Interrupt Vektor. Während das TWINT Flag gesetzt ist, wird der SCL Takt auf Low gehalten. Das TWINT Flag wird nicht automatisch durch die Hardware gelöscht, wenn der Interrupt ausgeführt wird. Das Flag muss vielmehr durch die Software gelöscht werden, indem es mit einer logischen 1 beschrieben wird. Das Löschen des Flags startet die Arbeit des TWI wieder, daher müssen alle Zugriffe auf das TWI Address Register (TWAR), das TWI Status Register (TWSR) und das TWI Data Register (TWDR) vorher abgeschlossen sein.

Bit 6– TWEA: TWI Enable Acknowledge Bit

Diese Bits kontrolliert das Erzeugen des Empfangsbestätigungs Pulses. Wenn das TWEA Bit mit einer 1 beschrieben ist, so wird ein ACK Puls erzeugt, wenn eine der folgenden Bedingungen zutrifft. 1. Die Slaveadresse des Bausteins wurde empfangen
2. Ein Rundruf wurde empfangen während das TWGCE Bit im TWAR gesetzt war
3. Ein Datenbyte wurde im Master- oder Slave-Modus empfangen.

Durch Setzen dieses Bits auf Null kann der Baustein vorübergehend virtuell vom Bus getrennt werden. Die Adresserkennung kann dann wieder freigegeben werden, indem das Bit wieder auf 1 gesetzt wird.

Bit 5– TWSTA: TWI START Condition Bit

Die Applikation schreibt das TWSTA Bit auf 1, wenn sie Master über den TWI Bus werden will. Die TWI Hardware überprüft, ob der Bus frei ist und erzeugt eine Start-Bedingung, wenn der Bus frei war. Wenn der Bus nicht frei war, wartet die TWI bis eine Stopp-Bedingung erkannt wird, und erzeugt dann eine neue Start-Bedingung, um die Kontrolle über den Bus zu übernehmen. Das TWSTA muss durch die Software gelöscht werden, wenn die Start-Bedingung gesendet wurde.

Bit 4– TWSTO: TWI STOP Condition Bit

Wenn das TWSTO Bit im Master Modus auf eins gesetzt wird, wird eine Stopp-Bedingung auf dem TWI-Bus erzeugt. Nach dem Erzeugen der Stopp-Bedingung wird das TWSTO Bit automatisch gelöscht. Im Slave Modus kann das Setzen des TWSTO Bits verwendet werden, um aus einer Fehlersituation zurückzukehren. Dadurch wird zwar keine Stopp-Bedingung auf dem Bus erzeugt, allerdings kehrt das TWI in einen definierten Zustand zurück.

Bit 3– TWWC: TWI Write Collision Flag

Dieses Bit wird gesetzt, wenn versucht wird in das TWI Data Register (TWDA) zu schreiben, während das TWINT Flag Low ist. Das TWWC Flag wird gelöscht, wenn in das TWDA geschrieben wird, während TWINT High ist.

Bit 2– TWEN: TWI Enable Bit

Das TWEN Bit gibt das TWI frei und aktiviert das TWI Interface. Wenn das TWIEN Bit auf Eins gesetzt ist, übernimmt das TWI die Kontrolle über die I/O-Pins, die mit SDA und SCL verbunden sind, und gibt die Übertragungsratenverzögerung und die Spitzenfilter frei. Wenn das TWEN Bit auf Null gesetzt wird, wird das TWI ausgeschaltet und alle Übertragungen werden abgebrochen, unabhängig davon, ob diese bereits beendet sind oder nicht.

Bit 1 – Res: Reserviertes Bit

Dieses Bit ist reserviert und wird immer als 0 gelesen.

Bit 0– TWIE: TWI Interrupt Enable

Wenn dieses Bit auf 1 gesetzt ist und das I-Bit im SREG ebenfalls 1 ist, wird der TWI Interrupt so lange ausgeführt, wie das TWINT Flag High ist.
Impressum