Crystal uses (compared to ceramic resonators)

If you really need it for long-term timing, the other alternative is observe what the real frequency is and calibrate your timing routine to compensate for the error. For example, run your timing routine for an hour and see how many seconds you are off by (e.g. if your error is -0.5%, you will be off be 18 seconds slow). Once you know how many seconds you lose/gain in an hour, you can effectively recalibrate your timing routine to be orders of magnitude more accurate. As long as your Arduino-based alarm clock isn't experiencing massive temperature swings while you're gone, the frequency error will be systematic (i.e. relatively constant).

For example, this is how you can often safely use the mega168's internal RC oscillator for serial communication. If instead of trying to use a fixed baud rate you set your baud based on how you measure the baud of the incoming data, your serial frequency error can be well within the 2% limit even if your RC oscillator is off by 10%.

  • Ben