I’m debugging an i2c bus for a project at the moment and I am experiencing some behaviour that I cannot explain. Any advice or explanations are welcome.
The problem is that my i2c subroutine is written to send bytes in 400u - 500u seconds but in this case I am not seeing that on the oscilloscope.
What I am seeing is the first byte (address byte) sent in under 500u seconds and the second byte (data) being transmitted directly after the address over 1250u seconds. The same subroutine is used for both transmissions, so what causes the second byte to be stretched so far?
The weirdest part is that when I put the command CALL SENDVAL in-between loading the second byte and sending the second byte the stretching doesn’t happen.
I am transmitting to an NXP PCF 8574 and a TI DAC 8574.
The code used for this procedure is attached in .asm file.