Yup, from the manual:
Could this be an issue?The I2C clock and data lines should be pulled up to Vcc with a 4.7K
RobertTransfer on the I2C bus can be paused by the receiving device by its holding the clock line low (not supported on 12-bit core PIC MCUs). To enable this the following DEFINE should be added to the program:
DEFINE I2C_HOLD 1
EDIT: I would try one last thing with Dave's code, add PAUSE 250 before every write to the LCD, just to eliminate that possibility.
Bookmarks