26.7.5 Miscellaneous States
There are two status codes that do not correspond to a defined TWI state, see the table in this section.
Status 0xF8 indicates that no relevant information is available because the TWINT flag is not set. This occurs between other states, and when the TWI is not involved in a serial transfer.
Status 0x00 indicates that a bus error has occurred during a two-wire serial bus transfer. A bus error occurs when a START or STOP condition occurs at an illegal position in the format frame. Examples of such illegal positions are during the serial transfer of an address byte, a data byte, or an acknowledge bit. When a bus error occurs, TWINT is set. To recover from a bus error, the TWSTO flag must set and TWINT must be cleared by writing a logic one to it. This causes the TWI to enter the not addressed Slave mode and to clear the TWSTO flag (no other bits in TWCRn are affected). The SDA and SCL lines are released, and no STOP condition is transmitted.
Status Code (TWSR) Prescaler Bits are 0 | Status of the Two-Wire Serial Bus and Two-Wire Serial Interface Hardware | Application Software Response | Next Action Taken by TWI Hardware | ||||
---|---|---|---|---|---|---|---|
To/From TWDRn | To TWCRn | ||||||
STA | STO | TWINT | TWEA | ||||
0xF8 | No relevant state information available; TWINT = “0” | No TWDRn action | No TWCRn action | Wait or proceed current transfer | |||
0x00 | Bus error due to an illegal START or STOP condition | No TWDRn action | 0 | 1 | 1 | X | Only the internal hardware is affected, no STOP condition is sent on the bus. In all cases, the bus is released and TWSTO is cleared. |