27.5.5 Control Unit

The Control unit monitors the TWI bus and generates responses corresponding to settings in the TWI Control Register (TWCRn). When an event requiring the attention of the application occurs on the TWI bus, the TWI Interrupt Flag (TWINT) is asserted. In the next clock cycle, the TWI Status Register (TWSRn) is updated with a status code identifying the event. The TWSRn only contains relevant status information when the TWI Interrupt Flag is asserted. At all other times, the TWSRn contains a special status code indicating that no relevant status information is available. As long as the TWINT Flag is set, the SCL line is held low. This allows the application software to complete its tasks before allowing the TWI transmission to continue.

The TWINT Flag is set in the following situations:

  • After the TWI has transmitted a START/REPEATED START condition
  • After the TWI has transmitted SLA+R/W
  • After the TWI has transmitted an address byte
  • After the TWI has lost arbitration
  • After the TWI has been addressed by own slave address or general call
  • After the TWI has received a data byte
  • After a STOP or REPEATED START has been received while still addressed as a Slave
  • When a bus error has occurred due to an illegal START or STOP condition