My Arduino is ARM based so the "Wire while loop fix" does not apply here.
What could be causing the IC to freeze entirely?
Is there something I can try to debug this problem?
So you have a Due or Zero. May we get the information which one you're using? The bug you mention is fixed for a while (given I refer to the same problem).
Freezing the chip is probably not the right term. One possibility I see is that you clear inadvertently the HAEN flag in the configuration register which might change the I2C address until the chip is reset.If you reset the Arduino and the chip is not responsive run an I2C address scanner. If the chip responds my above guess might be correct.
I have contacted Microchip about this problem, whether it's a design flaw or bad chip, but no reply yet..
This is a known bug in our MCP23017. We are aware of it and in the process of creating an errata data for this bug.There is no workaround for this issue except to use a different pin as input.
This thread can be closed or marked as "Solved"