I'm experiencing problems with receiving data from my slave. The slave knows its addressed and sets its data into SSPBUF. The data also clocks out, but when I read the SSPBUF in the master, it's not the value I send over I2C.
This is the picture of the master receiving data ( address = 0x08, the +1 for reading, data = 0xAA).
Fixed : The problem was there is a busbuffer and opto coupler between the master & slave. A resistor was chosen badly and the LOW level was 4.5V, by choosing a correct resistor, the low level went to 0.5V and the master received a NACK.