Servicing the Interrupt
After servicing this interrupt and transmitting the second part of the address, the Status register contains one of the codes in Table
| Table | |||
|
|
|
|
|
Code | I2C State |
| Microprocessor Response | Next I2C Action |
38h | Arbitration lost |
| Clear IFLG | Return to idle |
|
|
| OR |
|
|
|
| Set STA, clear IFLG | Transmit START when bus free |
68h | Arbitration lost, |
| Clear IFLG, AAK=0 | Receive data byte, transmit not ACK |
| SLA + W received, |
|
|
|
| ACK transmitted |
| OR |
|
|
|
| Clear IFLG, AAK=1 | Receive data byte, transmit ACK |
78h | Arbitration lost, |
| Write byte to DATA, Clear IFLG, | Transmit data byte, receive ACK |
| SLA + R received, |
| AAK=0 |
|
| ACK transmitted |
| OR |
|
|
|
|
| |
|
|
| Write byte to DATA, Clear IFLG, | Transmit data byte, receive ACK |
|
|
| AAK=1 |
|
B0h | Arbitration lost |
| Clear IFLG | Return to idle |
|
|
| OR |
|
|
|
| Set STA, clear IFLG | Transmit START when bus free |
E0h | Second Address byte + |
| Clear IFLG, AAK=0 | Receive data byte, transmit not ACK |
| R transmitted, ACK |
|
|
|
| received |
| OR |
|
|
|
| Clear IFLG, AAK=1 | Receive data byte, transmit ACK |
E8h | Second Address byte + |
| Clear IFLG, AAK=0 | Receive data byte, transmit not ACK |
| R transmitted, ACK not |
|
|
|
| received |
| OR |
|
|
|
| Clear IFLG, AAK=1 | Receive data byte, transmit ACK |
18