I've tried to use I2C module of dsPIC 30F6014A. I've used pic30 library <i2c.h> to perform I2C communication with 24AA1025 1Mbit serial eeprom from M*crochip.
I've spent many hours debugging, because it didn't work as it is suggested in datasheet and examples.
StartI2C();
while(I2CCONbits.SEN ); // while start condition ... wait
It seems that the SEN bit is resetted too early, or not set fast enough, because this while-loop passes without any delay, even before the START condition is sent to I2C bus.
This situation applies to any bit (TBF, PEN, RSEN, ACKSTAT)...