Open ithinuel opened 2 years ago
The issue seems to lie in the ISR's state after a write operation (where autopush is disabled but the ISR isn't cleared).
I noticed this as well. adding a mov isr, null
to the beginning of do_byte
in i2c.pio seems to resolve this...
There's also additional posts in the RPI forums about this issue: https://forums.raspberrypi.com/viewtopic.php?t=340111 https://forums.raspberrypi.com/viewtopic.php?p=2138637
In the forum discussions it's not clear how ISR count can end up in a de-synchronized state, since the pio program will always loop 8 bits.
Tested using an NXP LM75B temperature sensor.
Minimal code to reproduce: