I've been working with a Real-Time-Clock chip, the DS-1337+, and noticed that if the final I2C read operation isn't accompanied by a 'no-ack' then I2C communications hang-up shortly thereafter. The PIC language I'm using (MikroPascal) does not have a proper "time-out" for I2C operations, so everything hangs until the watchdog finally kicks in, which is rather inelegant.
The docs say the 'no-ack' condition is necessary - but communications are known to fail once in a great while (so I've heard) and that means that one out of 'X' READ commands will be malinterpreted.
What the datasheet does NOT say is what one can DO about this situation - beyond cycling power on the RTC chip to reset everything.
No biggie for something sitting on your desk ... but my app is going to way out 'yonder "in the field" and needs a way to cope with any I2C hang-ups on its own.
Is there a decent way to UN-hang a Dallas RTC chip, one that doesn't destroy the time/date/alarm registers ?
Any info helpful.