Is there some way to set the run-time clock other than waiting 49 days for the clock to turn over. I need to certify that the rollover will be uneventful.
I need to certify that the rollover will be uneventful.
Use micros(), instead. Works the same way, but a much shorter fuse.
I use code like this in the Bitlash rollover example (bitlash/rollover.ino at master · billroy/bitlash · GitHub):
extern volatile unsigned long timer0_millis;
void setMillis(unsigned long newtime) {
uint8_t oldSREG = SREG;
cli();
timer0_millis = newtime;
SREG = oldSREG;
})
-br
urthlight:
Is there some way to set the run-time clock other than waiting 49 days for the clock to turn over. I need to certify that the rollover will be uneventful.
Just build your own time machine:
http://science.discovery.com/games-and-interactives/build-your-own-time-machine.htm
Just build your own time machine:
This might take longer than 49 days.
Good point.
Use micros(), instead.Works the same way,
Instead of the run-time clock?
Please explain.
but a much shorter fuse.
Fuse?
Instead of the run-time clock?
No, instead of millis().
Fuse?
micros() ticks 1000 times faster than millis. Results in 0.01% of the time.
Substitute a variable in place of using millis() directly. Instead of
if ( millis() ... whatever ) { ...
use
unsigned long ms = millis();
if ( ms ... whatever ) { ...
Make sure the code works as desired that way, then to test what happens around rollover, something like this:
unsigned long ms = 4294957296; //ten seconds before rollover
if ( ms ... whatever ) { ...