lesto:
sì, vengono aggiornate insieme, però timer0_millis viene incrementato di "MILLIS_INC" (che è l'equivalente della mia SECONDS_PER_TIMER0_OVERFLOW), mentre timer0_overflow_count viene incrementata di 1.
guarda se MILLIS_INC vale 1, proprio come l'incremento di timer0_overflow_count ![]()
Se risolvi tutte le define che generano MILLIS_INC, vedrai appunto il risultato che ti ho detto: 1.
Noto con piacere che però loro anno salvato anche la parte decimale in timer0_fract.. questo è un punto a cui non avevo pensato, e bisogna farlo. ion pratica bisogna diplicare il codice della millis()
Lo hanno dovuto fare perché, come ti ho spiegato, non usano un modo diverso di gestire la cosa.
Nella swRTC io difatti impostavo il contatore in modalità "contatore" appunto, con prescaler e valore iniziale del registro calcolati per ottenere esattamente 1000 overflow al secondo, mentre loro impostano il timer per funzionare in modalità "phase correct PWM", ottenendo una frequenza di 976,5625 Hz sui pin esterni e poco più di 1000 overflow al secondo. Di questa differenza loro tengono conto per riallineare i millis all'effettivo scorrere del tempo. Quindi della parte decimale non so che farmene ![]()
Casomai si può pensare di incrementare il contatore separato dei millisecondi ad ogni incremento di millis, così da sapere quando sono passati 1000 ms senza fare i conteggi a 976. Però non facendo il confronto diretto con millis perché questa va in overflow... ora butto giù 2 righe...
@pablos:
gli darò un'occhiata