ArduinoThread
ArduinoThread copied to clipboard
What happens when millis() overflows?
I'm developing opens source project to sustentable agriculture. I want to know what happens when millis() overflows...
If I need to remove all threads -> reset millis() -> addition all threads back to ThreadController in main code.
Thank you and congratulation for awesome library.
I found this, after a quick Google search:
https://www.norwegiancreations.com/2018/10/arduino-tutorial-avoiding-the-overflow-issue-when-using-millis-and-micros/
@gregkrsak thank you for reply.
My doubt is I need to controll it in my main code? I'm a newbie, sorry.
Library code.... bool Thread::shouldRun(unsigned long time){ // If the "sign" bit is set the signed difference would be negative bool time_remaining = (time - _cached_next_run) & 0x80000000;
// Exceeded the time limit, AND is enabled? Then should run...
return !time_remaining && enabled;
}
I think it doesn't have any problem because. _cached_next_run is unsigned long too.
So when void Thread::runned(unsigned long time){ // Saves last_run last_run = time;
// Cache next run
**_cached_next_run = last_run + interval;**
}
_cached_next_run restarts too.