Pages: [1]   Go Down
Author Topic: Reset automatico  (Read 525 times)
0 Members and 1 Guest are viewing this topic.
Offline Offline
Sr. Member
****
Karma: 0
Posts: 362
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Visti i problemi di millis() vorrei sapere come faccio a fare un reset automatico.

Esiste il comando apposito ?

Oppure collego D1 a RST e quando millis() supera un numero x, metto D1 in HIGH ?

Logged

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 120
Posts: 9185
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Visti i problemi di millis() vorrei sapere come faccio a fare un reset automatico.

Non puoi resettare un AVR utilizzando direttamente un suo pin perché il tempo per cui è necessario tenere reset a 0 è maggiore del tempo dopo il quale le periferiche vengono disabilitate, pin che vanno in alta impedenza, dall''inizio delle operazioni di reset.
Eventualmente puoi resettare a comando utilizzando un monostabile che si occupa di mantenere il pin reset a 0 per tutto il tempo necessario indipendentemente dal fatto che il comando che l'ha avviato non è più disponibile.
Per quanto riguarda la millis è possibile resettarla a piacere quando ti pare, p.e. non appena raggiunge un certo conteggio, basta che metti nelle definizioni globali dello sketch la seguente riga :
Code:
extern unsigned long timer0_millis;  
Dopo di che per resettare la millis :
Code:
timer0_millis = 0;
Logged

BZ (I)
Online Online
Brattain Member
*****
Karma: 234
Posts: 20214
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Descrivi per favore i problemi che hai con la funzione millis()
Ciao Uwe
Logged

Offline Offline
Sr. Member
****
Karma: 0
Posts: 362
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

Descrivi per favore i problemi che hai con la funzione millis()
Ciao Uwe
Non ho ancora avuto problemi, ma mi dicono che dopo 47 giorni si blocca.....
Logged

Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 120
Posts: 9185
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

Non ho ancora avuto problemi, ma mi dicono che dopo 47 giorni si blocca.....

Il limite è 1193 ore (49.7 giorni) e non si blocca nulla, semplicemente il conteggio riparte da 0, i casi sono due o lo azzeri tu prima che raggiunge il limite oppure tieni conto dell'overflow nel computo del tempo.
Logged

BZ (I)
Online Online
Brattain Member
*****
Karma: 234
Posts: 20214
+39 349 2158303
View Profile
 Bigger Bigger  Smaller Smaller  Reset Reset

L'overflow non é un problema. Se scrivi le condizioni dei IF in modo giusto funzionano anche se capita un overflow. La limitazione é che non puoi controllare tempi maggiori di 49 giorni. Ma per questo uso é comunque meglio usare un orologio RTC perché funziona a batteria e un spegnimento del Arduino non lo azzera.
Ciao Uwe
Logged

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

La mia swRTC non soffre del bug di millis perché il registro a 32 bit che uso per il conteggio dei secondi va in overflow dopo 136 anni  smiley-yell smiley-yell
Logged


Rome (Italy)
Offline Offline
Tesla Member
***
Karma: 120
Posts: 9185
"Il Vero Programmatore ha imparato il C sul K&R, qualunque altro testo è inutile e deviante."
View Profile
WWW
 Bigger Bigger  Smaller Smaller  Reset Reset

bug di millis

Non si può parlare di bug, è semplicemente un limite operativo della funzione, non è un errore.
Logged

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

bug di millis

Non si può parlare di bug, è semplicemente un limite operativo della funzione, non è un errore.

Corretto.
E' per abbreviare e non stare a descrivere per esteso che il bug riguarda gli sketch scritti senza tener conto dell'overflow.
Logged


Pages: [1]   Go Up
Jump to: