Microchip Technology MCU PIC PIC18F87K22-I/PTRSL TQFP-80 MCP PIC18F87K22-I/PTRSL Hoja De Datos

Los códigos de productos
PIC18F87K22-I/PTRSL
Descargar
Página de 550
PIC18F87K22 FAMILY
DS39960D-page 322
 2009-2011 Microchip Technology Inc.
21.4.17.1
Bus Collision During a Start 
Condition
During a Start condition, a bus collision occurs if:
a)
SDAx or SCLx is sampled low at the beginning
of the Start condition (
).
b)
SCLx is sampled low before SDAx is asserted
low (
During a Start condition, both the SDAx and the SCLx
pins are monitored. 
If the SDAx pin is already low, or the SCLx pin is
already low, then all of the following occur:
• The Start condition is aborted
• The BCLxIF flag is set
• The MSSP module is reset to its inactive state 
(
The Start condition begins with the SDAx and SCLx
pins deasserted. When the SDAx pin is sampled high,
the Baud Rate Generator is loaded from
SSPxADD<6:0> and counts down to 0. If the SCLx pin
is sampled low while SDAx is high, a bus collision
occurs because it is assumed that another master is
attempting to drive a data ‘1’ during the Start condition. 
If the SDAx pin is sampled low during this count, the
BRG is reset and the SDAx line is asserted early
(
). If, however, a ‘1’ is sampled on the
SDAx pin, the SDAx pin is asserted low at the end of
the BRG count. The Baud Rate Generator is then
reloaded and counts down to 0. If the SCLx pin is
sampled as ‘0’ during this time, a bus collision does not
occur. At the end of the BRG count, the SCLx pin is
asserted low.      
FIGURE 21-28:
BUS COLLISION DURING START CONDITION (SDAx ONLY)      
Note:
The reason that a bus collision is not a
factor during a Start condition is that no two
bus masters can assert a Start condition at
the exact same time. Therefore, one
master will always assert SDAx before the
other. This condition does not cause a bus
collision because the two masters must be
allowed to arbitrate the first address
following the Start condition. If the address
is the same, arbitration must be allowed to
continue into the data portion, Repeated
Start or Stop conditions.
SDAx
SCLx
SEN
SDAx Sampled Low Before 
SDAx Goes Low Before the SEN bit is Set.
S bit and SSPxIF Set Because
MSSP module Reset into Idle State
SEN Cleared Automatically Because of Bus Collision, 
S bit and SSPxIF Set Because
Set SEN, Enable Start
Condition if SDAx = 1, SCLx = 1
SDAx = 0, SCLx = 1
BCLxIF
S
SSPxIF
SDAx = 0, SCLx = 1
SSPxIF and BCLxIF are
Cleared in Software
SSPxIF and BCLxIF are
Cleared in Software
Set BCLxIF,
Start Condition, Set BCLxIF,