Skip to content

w/Hardware Reset, bus_busy recovery, glitch prevention

Latest
Compare
Choose a tag to compare
@stickbreaker stickbreaker released this 14 Mar 23:04
· 15 commits to master since this release
bb24e52

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.