Any one else have thoughts on this.Andrew Lippitt: I've been looking very closely at the read write errors that I'm getting on the I2C bus. The reads from the servo often yield data where at some random bit, all remaining bits are 1. So when I'm expecting 0x0200 I receive 0x02FF. While this particular one is the most frequent, it seems like it might be able to start on any bit, not just byte boundries. I've seen 0x0201, 0x05FF. As for the writes, there is a different problem. The value that is written is often bit shifted right by 1. I seen other values I can't make sense of, but may be things like addresses or other data I've not recognized yet that has been shifted by some other amount. This happens with both the old TWI code and the new. I've varied the clock speed quite a bit and introduced inter-byte delays to no effect.
We tracked down an issue with the SDA pull-up resistor being enabled on the servo that we thought could cause problems, but further testing from Andy indicated the problem lies elsewhere.
Andy is going to continue to poke at this to try and find the culprit. I'll start working on this on Thursday if Andy hasn't found anything by then.
My leading theory is line noise caused by the h-bridge/motor as I've noticed similar issues when the motor is active. However, Andy's testing indicates the problem exists even when PWM is turned off. Maybe we are chasing multiple issues.