A couple of observations...1) Use the 1Hz signal coming out of the RTC to drive one of the two interrupt pins on the 328P and hence increment the seconds. Thus, you do not have to query the clock at all via I2C to get great second-by-second performance. Sure, you have to keep track of seconds and minutes, and hours, but that's pretty simple.2) If you want to be extra careful (guard against bad code or other mishaps resulting in a lost interrupt), have the code query the clock once a day in the middle of the night, etc. Then your seconds, minutes, and hours, will once again be in perfect harmony.3) Never worry about flickering again - the code overhead for the clock is hence minimized and the Arduino can spend its time keeping the display happy.
I'm sorry if I didn't make myself clear. What I aim to do is to have the clock show civil time, with all its irregularities, and to be as independent from outside sources of time-related information as possible. I am using a Chronodot, but do not count this as an "outside source"; the outside sources to which I refer are mains frequency and NTP / radio / GPS signals. Ideally, I set the clock once in the entire duration of its existence, though in practice, I will almost certainly need to make occasional adjustments of a few seconds.I would prefer to be able to tell the clock, "leap second coming at end of month XXX", and have it correctly insert that at the right time, as well.
Because the Earth's rotation speed varies in response to climatic and geological events, UTC leap seconds are irregularly spaced and unpredictable. Insertion of each UTC leap second is usually decided about six months in advance by the International Earth Rotation and Reference Systems Service (IERS), when needed to ensure that the difference between the UTC and UT1 readings will never exceed 0.9 second. Between their adoption in 1972 and June 2012, 25 leap seconds have been scheduled, all positive.
Hi odometer, thanks for the clarification. Daylight Savings Time is a bit more precise description than "civil" time. Implementing it should be easy.