With this Release V0.2.0 14MAR2018, Wire()
can handle a bus fault, Grounding SDA and or SCL is now recoverable. The bus_busy cascade failure should be solved!
The signal glitch that was created when attaching pins to the i2c peripheral has also been solved!
A bus_busy status is now auto-magically cleared. When this status is detected upon entry into the hal layer i2cProcQueue()
, i2cProcQueue()
immediately returns I2C_ERROR_BUSY
which causes TwoWire() to attempt to clear the bus, first TwoWire()
re-inits the i2c peripheral with a hardware reset!, then it attempts to cycle the i2c bus manually. TwoWire()
then retries the transaction once. If the bus did not clear, the I2C_ERROR_BUSY
is returned to the app.
This branch should handle both I2C peripherals at the same time, UnTESTED, but, it should work.