Find some hints on the troublesome topic of “How to deal with I2C status -35″, which appears, if NXT doesn’t receive an ACK from the remote device. I2C lines are tristate ones. Probably, the device is hooked in high impedance state, as it should pull down the line to ground being an output line at that moment.
The PIC16F88 is programmed to detect the hooked state, then reconfigure the I2C pins to output with high level shortly, then with low level during 2ms and to finally reconfigure the I2C module.
NEWS: giving the sensor a power-up time of a few seconds and not following the NI toolkit user guide recommendation to write a few new bytes after status -35, but instead aborting the communication and re-enabling as indicated above, makes the communication completely stable with a very low number of lost packages: 120 (lost) / 123000 (sent) within 1 hour.
Read more… www.convict.lu/Jeunes/RoboticsIntro.htm