Цитата(Dimmy @ Jun 23 2007, 10:38)

1.
BCLIF: Bus Collision Interrupt Flag bit 1 = A bus collision occurred while the SSP module (configured in I2C Master mode) was transmitting (must be cleared in software) - это флаг прерывания в регистре PIR2
Так вот, по какой-то причине фирменные исходники используют в качестве индикатора коллизий только флаг BCLIF:
какой проц?
по описанию флаг BCLIF выставляется только в двух случаях:
1. при старте линии SCL или SDA в нуле
2. при старте линия SCL упала раньше SDA
похоже проблемы в железе, осциллограф Вам поможет

и еще если возврщается состаяние этого бита, но он не сбрасывается в подпрограмме то это надо сделать вам
а насчет последовательного резистора тоже ставил, только 100 Ом когда на длинных межплатных соединениях иголки слишком большие были.
вообще проблемы были только с слейвом при чужом адресе (торомзил чуток, уже не помню как обошел)