I have been implementing I2C using the bit banging, during the implementation phase where I was implementing the collision detection on the bus I came across an issue, the sensor generates a ACK for the pointer byte 0xFF which a invalid pointer.
My scenario :
To test my code I inserted the additional SCLK pulse after passing the whole address to the sensor(before R/W and ACK), this additional SCLK pulse cause the sensor to sample A0 two times, one time as address and other time as the R/W , the Slaves runs ahead of the master now. As A0 is zero in my case this causes the Sensor to assume a Write operation.
Using the Bus detection, I sense the inconsistency at the part of Read operation on the Bus but the Slave pulls the SDA line low as its a step ahead and generates a ACK.
As I have sensed the inconsistency I try to recover the bus by sending nine clock pulse (SDA open), but as the Sensor though my operation in write state is took this as a pointer byte which was sent 0xFF and generates a ACK.
My question the LM75AD datasheet doesn't enlist 0xFF as a valid pointer location than how come the sensor is generating a ACK. please help if I got it right.