Other Parts Discussed in Thread: INA237,
I have a sensor loop reading the I2C data from eight INA237 shunt monitors every 100ms. The sensors are running in continuous conversion mode and I am reading them asynchronously. About 0.03% of the time, I am seeing a sensor read result in a clock extension of approximately 30 milliseconds before the transaction times out and the I2C bus is released. Any bytes read after the timeout are a value of 0xFF.
Here is an example of the failure when reading the DIAG_ALRT (0x0B) register:
There are two problems with this:
- It delays the sensor loop such that a read that normally takes 270 microseconds now takes 30 milliseconds and throws off the 100ms sampling rate
- Sometimes the timeout is during data reads which results in an erroneous 0xFF or 0xFFFF being read. I'll do some testing to see if I can filter these out by timing the transfers
Is there any way to avoid this timeout issue? I am using the alert output pin for overvoltage fault shutdown of the load, so changing to triggered mode is not possible for my usecase.
Cheers,
Eric