Skip to the content.

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()

Torna all’indice generazione tempi >Versione in C++