Pages: 1 2 3 [4]   Go Down
Author Topic: RTC o timer con solo arduino?  (Read 5300 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
God Member
*****
Karma: 0
Posts: 689
AHHAH
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

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?
Logged

Global Moderator
Italy
Offline Offline
Brattain Member
*****
Karma: 313
Posts: 21657
Logic is my way
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

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.
Logged


Pages: 1 2 3 [4]   Go Up
Jump to: