I2C rework is complete and tested. I pushed to main and you can find the update in the latest autobuild.
I’m extremely pleased with the updates, I2C feels much more solid now:
- No timeout errors (unless a real timeout while clock stretching)
- No more “I2C bus errors” generated by the PIO program being too “cute”
- No longer need a violent recovery from failure sequence to shake the PIO loose during “I2C bus errors”
- Repeated starts should work again
- Note: if no device responds with an ACK, the bus transaction will no longer abort