Read the time from the RTC. If it is time to do something, do it. If not, don't.The TimeAlarm class does take care of making sure that the thing to be done is done only once, when the time is right, so you'll need to deal with that, too.
Have you used Alarm.delay() anywhere in your program
I'd also read from the RTC after setting the time, just as a sanity check, to make sure that you have the correct number of values, in the correct order. If you are setting the time to 9:29, but the time that gets read after you do that is 255:255, well, something isn't right.
Serial.print(hour()); Serial.print("\t"); Serial.print(minute()); Serial.print("\t"); Serial.println(second());
#if defined(__AVR__)#define dtNBR_ALARMS 6 // max is 255#else#define dtNBR_ALARMS 12 // assume non-AVR has more memory#endif
I knew they could interfer with the code, but come on, it's just 1ms
but what does the second line (the one with the 12) do?