Kindly check if the master conforms to the I2C AC Specifications listed in Table 26 of the datasheet. Alternately, you may try by reducing the I2C speed, and check if the INT pin clears.
Thank you for your reply SampathS_11.
I looked again at the I2C AC Specification in Table 26 and reduced the I2C speed to about 62 KHz. And I'm still observing the same issue.
The INT still behaves the same, and the device reports all 1's from Interrupt Status Port 0 and Interrupt Status Port 1. There are no changes on inputs, and repeated reads of Interrupt Status Port 0 and Interrupt Status Port 1 always return all 1's.
Please find the capture of my I2C comms. This is the complete sequence. My device address is 0x40. I first write 0x10 to device address, then read two bytes from device address.
This is a zoomed in capture. The top capture is the write of 0x10 value to device address, followed by read of two bytes in the bottom capture. You can see in the bottom capture that device reports all 1's.
This is a zoomed capture of the clock, it's about 62 KHz.
Reading and writing of I/O pins still works as expected.
I hope that you can see something that I'm missing in these I2C comms captures.
Can you read the Interrupt Status Port 1 twice? I want to see what data it gives when read for the second time. Also kindly try to read the Input Port 1 register continuously to check if there is any change in the inputs.
I changed the value of Port 1 Pin 0 from 0 to 1 and read the Interrupt Status Port 1 and Input Port 1 repeatedly in a loop:
Input Port 1 value is always 0xFF
Interrupt Status Port 1 value is always 0xFF
This was the first test I did after noticing unexpected behavior of INT pin, it's mentioned in the original post.