I use a lot of I2C LCDs, in both 16x2 and 20x4. I recently started having a problem that really has me stumped. With any LCD, I can eventually get into a state where the LCD seems to be driving the SDA line, and the only way I can clear it is to disconnect power from the LCD. In years of using these things, I've never seen this happen, yet I can now reproduce it pretty regularly.
The question is: Does anyone know how the I2C "backpack" can possibly be put into this state? All the LCDs use either the Philips/NXP PCF8574AT or PCF8574AT (the only difference between the two is the I2C address, which is 0x38-0x3f for the AT, and 0x20-0x27 for the T). I'm driving them with I2C1 on a Due.
I don't believe there is any problem with the display itself, as it occurs with displays I've used for years with no problems. It's not the specific Due board, because I've tried several, and all act the same. I believe it's likely something in my firmware, but it's a bloody huge application (250K of object code), and I don't know where to start looking. The LCD code is only called from one place in the code, and it is not in an interrupt context (though there are LOTS of interrupt running). The LCD code has not been touched in months, but I only started seeing this problem a few weeks ago.
Regards, Ray L.