Servicing the Interrupt

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 3-2.

Note: If a repeated START condition transmits, the status code is 10h instead of 08h.

 

Table 3-2. Codes After Servicing Interrupts (Master Transmit)

 

 

 

 

 

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

B0h

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

 

D0h

Second Address byte +

 

Write byte to DATA, clear IFLG

Transmit data byte, receive ACK

 

W, transmitted ACK

 

 

 

 

received

 

OR

 

 

 

 

Set STA, clear IFLG

Transmit repeated START

 

 

 

OR

 

 

 

 

Set STP, clear IFLG

Transmit STOP

 

 

 

OR

 

 

 

 

Set STA & STP, clear IFLG

Transmit STOP, then START

D8h

Second Address byte +

 

Same as code D0h

Same as code D0h

 

W, transmitted ACK

 

 

 

 

received

 

 

 

15

Page 23
Image 23
Lantronix DSTni-EX manual Servicing the Interrupt, 2. Codes After Servicing Interrupts Master Transmit