[time-nuts] Maxim DS3232 and I2C

mike cook michael.cook at sfr.fr
Sat Feb 15 11:40:11 EST 2014

I don't think this is an issue. The datasheet indicates :

When reading or writing the time and date registers, secondary
(user) buffers are used to prevent errors when
the internal registers update. When reading the time and
date registers, the user buffers are synchronized to the
internal registers on any START and when the register
pointer rolls over to zero. The time information is read
from these secondary registers, while the clock continues
to run. This eliminates the need to reread the registers
in case the main registers update during a read.

So if you do a multi-byte read to get the lot at once, then it should be coherent. I saw some code to do this somewhere, but I have lost track of it.

Le 14 févr. 2014 à 23:20, d0ct0r a écrit :

> I would like to ask an advise for following:
> Lets say I have a DS3232 RTC connected by I2C to some MCU. The maximum allowed I2C bus speed is 400KHZ. And I need to read time (HH:MM:SS) from it. It will be THREE SEPARATE REQUESTS for each part (hours, minutes and seconds). My concern: what if I start to read time at the edge, when it will change itself inside of DS3232 ? Potentially, I could get weird results, like hours and minutes stay the same, but seconds has changed. Or even worth - hours is the same, but seconds and minutes has changed. Is there any method to read all three values (HH:MM:SS) by one single requests ? Or is there any other workaround for this issue ? Or it is not issue at all ? Thanks !
> -- 
> WBW,
> V.P.
> _______________________________________________
> time-nuts mailing list -- time-nuts at febo.com
> To unsubscribe, go to https://www.febo.com/cgi-bin/mailman/listinfo/time-nuts
> and follow the instructions there.

More information about the time-nuts mailing list