Go Down

Topic: RTC o timer con solo arduino? (Read 7755 times) previous topic - next topic

reizel

aspetta non mi e' chiaro

se lascio un programma con un loop lungo 24h questo s'impallera' a 49,7giorni?

a questo punto faccio un programma che a 24h mi da un reset e riparte per altre 24h e cosi' via, questo funziona, giusto?

leo72

Arduino, o per meglio dire l'Atmega, non ha un orologio in tempo reale interno (un RTC per capirsi) ma usa un contatore a 32 bit aggiornato ogni millesimo di secondo da un timer del micro.
Questo contatore è usato per le funzioni temporali dell'Atmega, quali delay() e millis(). Millis() conta appunto quanti millisecondi sono trascorsi dall'avvio dello sketch, ossia dal momento in cui hai dato tensione al micro è questo si è "svegliato".

Generalmente per compiti da eseguire ogni tot si usa o un delay(xxx) oppure un confronto con millis() tipo if (millis()+intervallo > qualcosa) ecc...
Su brevi intervalli temporali la cosa non crea problemi, ma se hai un Arduino o un Atmega che sta acceso SEMPRE e basa alcune operazioni sullo scorrere del tempo, se usi le funzioni interne (delay e millis) puoi andare incontro a problemi dopo 49,7 gg (ossia 2^32 ms). Nel senso che se ad esempio hai un controllo con millis e sfortunatamente leggi millis poco prima che il contatore si azzeri, il tuo programma uscirà dal loop fra circa 50 gg, ossia quando il valore tornerà prossimo a quello letto poco prima dell'azzeramento.

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy