Datasheet
PIC16C77X
DS30275B-page 80 Advance Information 1999-2013 Microchip Technology Inc.
FIGURE 8-25: MASTER TRANSMIT FLOWCHART
Idle Mode
Num_Clocks = 0,
Release SDA so
slave can drive ACK,
Num_Clocks
Load BRG with
SDA = Current Data bit
Ye s
BRG
rollover?
No
BRG
No
Ye s
Force SCL = 0
= 8?
Yes
No
Ye s
BRG
rollover?
No
Force SCL = 1,
Stop BRG
SCL = 1?
Load BRG with
count high time
Rollover?
No
Read SDA and place into
AKSTAT bit (SSPCON2<6>)
Force SCL = 0,
SCL = 1?
SDA =
Data bit?
No
Ye s
Ye s
rollover?
No
Ye s
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?
Ye s
No
Clear XMIT enable
SCL = 0?
No
Ye s
Reset BRG
Write SSPBUF
Set SSPIF
774.book Page 80 Tuesday, January 29, 2013 12:02 PM