Torna all’indice generazione tempi >Versione in C++
MISURE DI TEMPO ASSOLUTE
Per ottenere una cadenza periodica precisa è necessario usare una forma diversa dal solito schedulatore più adatta a cumulare con precisione lunghe misure di tempo. E’essenziale che l’accumulatore tass venga aggiornato esattamente con il tempo campionato. L’accumulatore unisce i vari campionamenti per ottenere una misura unica. Con questa forma ci si può aspettare un errore di qualche secondo all’ora dipendente solo dall’imprecisione dell’oscillatore.
from gpio import *
from time import *
def main():
tass = 0
periodo = 10
while True:
# il codice eseguito al tempo massimo della CPU va qui
# .........
if (uptime() - tass) >= periodo: # schedulatore (e anche antirimbalzo)
tass += periodo
# ..........
if __name__ == "__main__":
main()
Invece la forma seguente è errata. La condizione viene valutata in ritardo rispetto al momento ideale, “reimpostando” la variabile ‘tass” al tempo attuale, questo ritardo si aggiunge a tutti i ritardi precedenti. Con questa forma ci si può aspettare un errore di diversi secondi al minuto o anche peggiore.
from gpio import *
from time import *
def main():
tass = 0
periodo = 10
while True:
# il codice eseguito al tempo massimo della CPU va qui
# .........
if (uptime() - tass) >= periodo: # schedulatore (e anche antirimbalzo)
tass = uptime()
# ..........
if __name__ == "__main__":
main()