3.3. Virtualni mjerači vremena¶
Stranica Mjerenje vremena obradila je vremenske oznake i neblokirajuće petlje vođene s time.ticks_diff(). Virtualni mjerač vremena je druga strana medalje: softver traži od izvršnog okruženja da pozove funkciju prema rasporedu, a izvršno okruženje poziva povratni poziv bez da skripta sama mora provjeravati sat.
3.3.1. Klasa machine.Timer¶
machine.Timer konstruira virtualni mjerač vremena. Ponašanje neovisno o portu zahtijeva poseban id -1; sve ostalo – period, način rada, povratni poziv – postavlja se kroz imenovane argumente:
from machine import Timer
def tick(t):
print("tick")
tim = Timer(-1)
tim.init(period=100, callback=tick) # 10 Hz
Povratni poziv se poziva kao bilo koji obični poziv funkcije – može alocirati objekte, koristiti print() i pozivati drugi kod biblioteke bez ikakvih posebnih ograničenja.
3.3.2. Periodični i jednokratni¶
Dostupna su dva načina rada:
Timer.PERIODIC(zadani). Povratni poziv se aktivira svakihperiodmilisekundi, zauvijek, dok se ne pozovedeinit()ili dok se mjerač vremena ponovno ne inicijalizira.Timer.ONE_SHOT. Povratni poziv se aktivira jednom,periodmilisekundi nakoninit(), a mjerač vremena se zatim zaustavlja.
Timer(-1).init(mode=Timer.ONE_SHOT, period=2000, callback=fire)
deinit() zaustavlja periodični mjerač vremena i otkazuje sve povratne pozive na čekanju:
tim.deinit()
3.3.3. Kada posegnuti za mjeračem vremena¶
Virtualni mjerači vremena i obrazac prozivanja s ticks_diff() sa stranice Mjerenje vremena rješavaju isti problem iz suprotnih smjerova. Prozivana petlja provjerava sat u svakoj iteraciji i djeluje kada je proteklo dovoljno vremena; mjerač vremena traži od izvršnog okruženja da probudi skriptu kada je proteklo dovoljno vremena.
Prozivani
ticks_diff. Sve ostaje na jednom mjestu – petlja posjeduje mjerenje vremena, nema dodatnih povratnih poziva o kojima treba voditi računa. Najbolje za kratak, dobro definiran posao koji povezuje nekoliko vremenski vođenih zadataka.Virtualni mjerač vremena. Premješta raspored izvan tijela petlje. Najbolje kada je periodični zadatak neovisan o glavnom tijeku (LED otkucaja srca, periodično uzorkovanje senzora) i omogućuje glavnoj petlji da svoje vrijeme troši na druge poslove.
Oba pristupa koriste isti temeljni sat i daju istu točnost pri periodima od milisekunde ili više. Nijedan nije prikladan za precizno prebacivanje pinova ili generiranje valnog oblika ispod milisekunde – kašnjenje povratnog poziva je reda veličine otkucaja raspoređivača, a ne nanosekundi.