I'm working on controlling a PCA9685 LED Driver with an ATTiny84. I'm using Peter Fleury's I2C code, based on Atmel's AVR310 paper, to run I2C in software, since the ATTiny84 doesn't have hardware TWI.
The PCA9685 never acknowledges the I2C start. If I attach my Saleae Logic, it can easily decode the I2C Start, and the address and write bits, but the slave never acknowledges.
Looking closer with an o-scope I see that the Clock and SDA timing seem to be a bit off. I'm attaching a couple images of what I'm seeing with my o-scope.
I've tried looking up the tolerance of I2C timing, but didn't find anything definitive. Anyone know how tight the tolerance is? With a clock of about 18kHz, I'm seeing the clock leading SDA by about 4uSec.
If the problem isn't the timing delay, do you experts out there have any other suggestions? I've verified the slave's physical address. I went with the default used in Figure 26 of the PDF for the PCA9685, and am attempting to address 0xAA, but I got so desperate, I looped through every possible address looking for an ACK from the slave, lol. No luck.