During development the I²C bus often gets interrupted when you compile. To fix this, I check (at start up) for SDA being held low and send clock pulses until it's released. Once released the next start condition will reset everything.
Mike.
BTW, what language are you using?
Mike.
BTW, what language are you using?