Hardware-based I2C works fine on a physical ATmega328P with a physical LCD1602. Bit-banged I2C works fine on physical devices and on simulated simulated devices. I'm pretty sure the hardware-based I2C worked on the simulator earlier, before I remembered to introduce some configuration code (the absence of which made it not work on the physical devices).
This would suggest the problem is in the configuration code -- perhaps a timing problem?
Hardware-based I2C works fine on a physical ATmega328P with a physical LCD1602. Bit-banged I2C works fine on physical devices and on simulated simulated devices. I'm pretty sure the hardware-based I2C worked on the simulator earlier, before I remembered to introduce some configuration code (the absence of which made it not work on the physical devices).
This would suggest the problem is in the configuration code -- perhaps a timing problem?