klasa Counter – brojač impulsa¶
Klasa Counter obavija i.MX RT QENC (kvadraturni enkoder / brojač) sklopovski blok konfiguriran kao brojač impulsa s jednim ulazom. Svaki rastući brid na izvornom pinu povećava (ili smanjuje) sklopovski brojač položaja; softverski povratni pozivi mogu se pridružiti događajima ROLL_OVER / ROLL_UNDER / RESET / INDEX / MATCH.
Dostupno samo na OpenMV Cam RT1062 (mimxrt port). Na OpenMV kamerama temeljenim na STM32 umjesto toga koristite pyb.Timer konfiguriran za hvatanje ulaza (input-capture). Nije izloženo na OpenMV Cam AE3 (alif port).
Primjer upotrebe:
from machine import Pin, Counter
counter = Counter(0, Pin("P0", Pin.IN))
counter.value(0)
# ... wait some time ...
print("pulses:", counter.value())
Konstruktori¶
- class machine.Counter(id: int, src: Pin | None = None, *, direction: int | Pin = UP, filter_ns: int = 0, max: int | None = None, min: int = 0, reset: Pin | None = None, match: int | None = None, match_pin: Pin | None = None)¶
Konstruira (ili dohvaća jedinstvenu instancu za) QENC brojački blok određen s
id. RT1062 ima više QENC blokova (idodabire jedan); iste argumente prihvaća iinit()za ponovnu konfiguraciju postojeće instance.src– ulazni pin čiji se rastući bridovi broje.direction(samo kao ključna riječ) – iliUP/DOWNza postavljanje fiksnog smjera, iliPinčija logička razina odabire smjer tijekom rada (nisko = brojanje prema gore, visoko = brojanje prema dolje).filter_ns(samo kao ključna riječ) – minimalno vrijeme stabilnosti ulaza u nanosekundama da bi se impuls brojao. Upravljački program koristi najduži sklopovski filtar koji je manji ili jednak ovoj vrijednosti.0(zadano) onemogućuje filtriranje.max/min(samo kao ključna riječ) – modulo raspon brojača položaja. Kada brojač prijeđemax, omota se namini brojač ciklusa se povećava (smanjuje pri brojanju prema dolje). Prosljeđivanje imaximinkao0onemogućuje raspon.reset(samo kao ključna riječ) –Pinčiji rastući brid ponovno učitava brojač položaja na početnu vrijednost (bez promjene brojača ciklusa).match(samo kao ključna riječ) – vrijednost brojača pri kojoj se okida prekidIRQ_MATCH. ProslijediteNoneda onemogućite.match_pin(samo kao ključna riječ) –Pinpostavljen visoko dok je brojač položaja jednakmatch, a inače nisko.Metode¶
- init(src: Pin | None = None, *, direction: int | Pin = UP, filter_ns: int = 0, max: int | None = None, min: int = 0, reset: Pin | None = None, match: int | None = None, match_pin: Pin | None = None) None¶
Ponovno inicijalizira brojač sa zadanim parametrima te resetira njegove brojače položaja i ciklusa. Prihvaća iste argumente s ključnom riječi kao i konstruktor.
- deinit() None¶
Zaustavlja brojač, onemogućuje sve neobrađene prekide i oslobađa QENC sklopovske resurse. Meko resetiranje (soft reset) automatski deinicijalizira sve
Counterinstance.
- value() int¶
- value(value: int, /) int
Dohvaća ili postavlja predznakom označen brojač položaja.
Bez argumenta vraća trenutnu vrijednost brojanja.
S jednim argumentom
valueatomarno postavlja brojač položaja navaluei vraća prethodnu vrijednost brojanja. Uobičajeni idiomcounter.value(0)resetira brojač na početku mjernog prozora.
- cycles() int¶
- cycles(value: int, /) int
Dohvaća ili postavlja brojač ciklusa, predznakom označen 16-bitni cijeli broj koji prati koliko je puta brojač položaja prešao
max/min.Bez argumenta vraća trenutnu vrijednost brojača ciklusa.
S jednim argumentom
valuepostavlja brojač ciklusa navalue(bez utjecaja na brojač položaja) i vraća prethodnu vrijednost.
- irq(handler: Callable[[Counter], None] | None = None, trigger: int = 0, hard: bool = False) None¶
Registrira povratni poziv koji se poziva kada se okine jedan od podržanih QENC događaja. Rukovatelj prima objekt
Counterkao svoj jedini argument; pojedini se događaj može identificirati unutar rukovatelja putemirq.flags().triggerje bitovna maska jedne ili višeIRQ_*konstanti:IRQ_RESET– pinresetje aktiviran.IRQ_INDEX– prijelaz na linijiindex.IRQ_MATCH– brojač položaja je dosegaomatch. Podudaranje se automatski onemogućuje nakon okidanja i mora se ponovno naoružati ponovnom instalacijom IRQ-a.IRQ_ROLL_OVER– brojač položaja omotao se smaxnamin.IRQ_ROLL_UNDER– brojač položaja omotao se sminnamax.
hard=Trueregistrira rukovatelja tvrdim prekidom (manje kašnjenje, ali rukovatelj ne smije alocirati memoriju). Zadano je raspoređeni povratni poziv. Proslijeditehandler=Noneda onemogućite prekid.
Konstante¶