Another thing to try is the I2C speed. Default is 400 kHz. Try 100 kHz.
The execution times listed in the datasheet is calculated based on typical HD44780 oscillator speed, see the HD44780 datasheet. Typical is 270 kHz == 3.7 usec whereas the execution time is listed as 37 usec, so 10 clocks. Now, worst case oscillator specs is 190 kHz == 5.3 usec, so for my PIC16 code I use the 53 usec worst-case timing in the I2C comms code. Then again, I haven't tried running my LCD parts 24x7, so I can't say for sure it will fix the issue.
[Edit] Then again, maybe it's not a HD44780 issue. But I have a better guess.
See the PCF8574/PCF8574A datasheet. It's a 100 kHz rated part.
The execution times listed in the datasheet is calculated based on typical HD44780 oscillator speed, see the HD44780 datasheet. Typical is 270 kHz == 3.7 usec whereas the execution time is listed as 37 usec, so 10 clocks. Now, worst case oscillator specs is 190 kHz == 5.3 usec, so for my PIC16 code I use the 53 usec worst-case timing in the I2C comms code. Then again, I haven't tried running my LCD parts 24x7, so I can't say for sure it will fix the issue.
[Edit] Then again, maybe it's not a HD44780 issue. But I have a better guess.
See the PCF8574/PCF8574A datasheet. It's a 100 kHz rated part.
Statistics: Posted by katak255 — Sun Feb 02, 2025 1:23 am