Collecting time-stamped datapoints, sleeping inbetween

Here's my situation:

  • I'm running an arduino pro mini on batteries.

  • The arduino will be woken up by an external interrupt on INT0 on fairly regular intervals (roughly every 2 seconds, varies at different times of day). Otherwise it will be sleeping in the as deep a sleep as possible to preserve power (it will also be slightly modded to remove other power hogs like the regulator and power LED).

  • At every interrupt, the processor should save the time that interrupt arrived with about +- 1s accuracy.

  • Data will be sent to a server about once a day at which point the arduino can sync up its timekeeping to prevent drift.

  • Contacting the server consumes a lot of power, so it should not be done except when sending collected data.

Now, my question is this: Is it possible for the arduino to sleep while still keeping some internal timer running that will keep fairly accurate time up to 24 hours? Or do i have to run with an external RTC IC?

Thanks in advance for any suggestions!

Check the pages of Nick Gammon on pwr mgmt - http://www.gammon.com.au/forum/?id=11497 -

An external RTC with its own crystal tends to be much more accurate, but I would dig around in the power management modes.

A suggestion my friend used for a similar device was to include a cheap GPS module and gather the time data from the GPS data stream rather than maintain it on board, but that requires acquiring a lock each time so it might not work in all locations (though I believe the time data is easier to acquire than position data). Power wise, I believe it was lower, since you could then turn off the GPS when not in use.

Kind of forgot about this thread but thanks for the answers. I decided to run an external RTC chip, namely this one: Arduino Playground - DS1302