I'm at my daughter's at the.moment and won't be back until Monday. There is a way to "uncrash" the I2C bus which I can post when I'm back. It's just looking at the (I2C) data line and sending clock pulses until it's low.
Try adding extra pullup resistors to the I2C lines? eg. 4k7 to 3.3V
It seems some arduinos have some level of onboard pullup and others may rely on the weak pullups within the MCU, which are too high value for proper I2C operation.
And / Or reduce the I2C bus speed, if you have it above 100KHz?
Try adding extra pullup resistors to the I2C lines? eg. 4k7 to 3.3V
It seems some arduinos have some level of onboard pullup and others may rely on the weak pullups within the MCU, which are too high value for proper I2C operation.
And / Or reduce the I2C bus speed, if you have it above 100KHz?
The I2C lines get out of sync when they are interrupted during transmission. Normally, this cannot happen but if a random reset occurs by uploading a new sketch then it can. So, the only place you need to clear the lines is when it first boots up I.E. in setup before initializing the I2C.