I2C bus recovery
I wonder how useful would it be to add a bus recovery mechanism to the software I2C implementation. It would be something similar to what is discussed here: https://github.com/esp8266/Arduino/issues/1025
The particular use case is when either the slave or the master get reset in the middle of a transmission, and leave the bus in inconsistent state, usually with the other party pulling one of the lines down and preventing communication. This can easily happen when we are doing aggressive power management, entering deep sleep or cutting power to the sensors.
The proposed solution is to strobe the clock line several times and send a NACK, to make sure all the devices on the bus get to finish the last byte they were sending.
Multiple i2c.init calls can hang the bus
Link from forum: http://forum.micropython.org/viewtopic.php?f=5&t=231&start=20#p1768
It seems that calling i2c.init multiple times when there are multiple devices on the bus can cause the bus to hang.
I'd like to propose that initializing the bus as MASTER a second time should either fail, or detect that it's already initialized and not reinitialize the HW.