Datasheet

PIC17C7XX
DS30289C-page 160 1998-2013 Microchip Technology Inc.
FIGURE 15-25: MASTER TRANSMIT FLOW CHART
Idle Mode
Num_Clocks = 0,
Release SDA so
Slave can drive ACK,
Num_Clocks
Load BRG with
SDA = Current Data bit
Yes
BRG
Rollover?
No
BRG
No
Yes
Force SCL = 0
= 8?
Yes
No
Yes
BRG
Rollover?
No
Force SCL = 1,
Stop BRG
SCL = 1?
Load BRG with
Count High Time
Rollover?
No
Read SDA and place into
ACKSTAT bit (SSPCON2<6>)
Force SCL = 0,
SCL = 1?
SDA =
Data bit?
No
Yes
Yes
Rollover?
No
Yes
Stop BRG,
Force SCL = 1
(Clock Arbitration)
(Clock Arbitration)
Num_Clocks
= Num_Clocks + 1
Bus Collision Detected
Set BCLIF, Hold Prescale Off,
Yes
No
BF = 1
Force BF = 0
SSPADD<6:0>,
Start BRG Count,
Load BRG with
SSPADD<6:0>,
start BRG count
SSPADD<6:0>,
Load BRG with
Count SCL High Time
SSPADD<6:0>,
SDA =
Data bit?
Yes
No
Clear XMIT Enable
SCL = 0?
No
Yes
Reset BRG
Write SSPBUF
Set SSPIF