I'm interfaceing an Xmega128C3 with MMA8451Q acceleration sensor via i2c. I was able to initialize the accelerometer, I checked every transmission on oscilloscope, it was done properly.
The problem occurs when the xmega tries to read (in Master mode) from the slave. According to the following figure, after an acknowledged Address+Read transmission, the xmega should start receiving the first byte from the slave. However, I checked it on the scope, it does not do so.
(One more thing I discovered which possibly relates to this: if I send the "Send acknowledge and receive next byte" command (CTRLC=0x02) right after the Address+read+ACK, then the whole i2c seems to "rush" one cycle ahead, and this way I was able to recieve 7 bits from the slave.)
Is this a hardware error in the xmega, or am I misunderstanding something?