If the LSB of the address given to SSP1BUF as part of an I2C read is set, the expected SSP1IF interrupt is never set. Even though the flags in SSP1CON2 & SSP1STAT indicate I2C is idle, doing further I2C operations such as RCEN=1 result in "I2C not idle" warnings.
I2C writes, where LSB of SSP1BUF is zero, work fine. See attached source file.
Using Subversion r2424.
Anonymous
Have attached a more complete example. On a physical PIC12F1822 (with a UMFT201 acting as slave) chip it will run to completion with a successful read & write, but under emulation with the attached .stc file it will hang as described previously. Looks like a clocking issue.
Fixed timing issue with I2C