Datasheet

2010-2012 Microchip Technology Inc. DS41419D-page 289
PIC16(L)F1824/1828
25.6.13.3 Bus Collision During a Stop
Condition
Bus collision occurs during a Stop condition if:
a) After the SDA pin has been deasserted and
allowed to float high, SDA is sampled low after
the BRG has timed out.
b) After the SCL pin is deasserted, SCL is sampled
low before SDA goes high.
The Stop condition begins with SDA asserted low.
When SDA is sampled low, the SCL pin is allowed to
float. When the pin is sampled high (clock arbitration),
the Baud Rate Generator is loaded with SSP1ADD and
counts down to 0. After the BRG times out, SDA is
sampled. If SDA is sampled low, a bus collision has
occurred. This is due to another master attempting to
drive a data0’ (Figure 25-38). If the SCL pin is sampled
low before SDA is allowed to float high, a bus collision
occurs. This is another case of another master
attempting to drive a data ‘0’ (Figure 25-39).
FIGURE 25-38: BUS COLLISION DURING A STOP CONDITION (CASE 1)
FIGURE 25-39: BUS COLLISION DURING A STOP CONDITION (CASE 2)
SDA
SCL
BCL1IF
PEN
P
SSP1IF
TBRG TBRG TBRG
SDA asserted low
SDA sampled
low after T
BRG,
set BCL1IF
0
0
SDA
SCL
BCL1IF
PEN
P
SSP1IF
TBRG TBRG TBRG
Assert SDA
SCL goes low before SDA goes high,
set BCL1IF
0
0