class Counter – pulssilaskuri¶
Counter-luokka kapseloi i.MX RT QENC -laitteistolohkon (kvadratuurienkooderi / laskuri), joka on konfiguroitu yhden tulon pulssilaskuriksi. Jokainen lähdenastan nouseva reuna kasvattaa (tai pienentää) laitteiston sijaintilaskuria; ohjelmistotakaisinkutsuja voi liittää ROLL_OVER- / ROLL_UNDER- / RESET- / INDEX- / MATCH-tapahtumiin.
Saatavilla vain OpenMV Cam RT1062 -laitteessa (mimxrt-portti). STM32-pohjaisissa OpenMV-kameroissa käytä sen sijaan input-capture-tilaan konfiguroitua pyb.Timer -ajastinta. Ei käytettävissä OpenMV Cam AE3 -laitteessa (alif-portti).
Esimerkkikäyttö:
from machine import Pin, Counter
counter = Counter(0, Pin("P0", Pin.IN))
counter.value(0)
# ... wait some time ...
print("pulses:", counter.value())
Konstruktorit¶
- 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)¶
Luo (tai hae singleton) QENC-laskurilohkolle, joka tunnistetaan tunnisteella
id. RT1062-laitteessa on useita QENC-lohkoja (idvalitsee yhden); samat argumentit hyväksyy myösinit()olemassa olevan instanssin uudelleenkonfigurointiin.src– tulonasta, jonka nousevat reunat lasketaan.direction(vain avainsanana) – jokoUP/DOWNkiinteän suunnan asettamiseksi, taiPin, jonka loogisen tason avulla suunta valitaan ajonaikaisesti (matala = laske ylöspäin, korkea = laske alaspäin).filter_ns(vain avainsanana) – vähimmäisaika nanosekunteina, jonka ajan tulon on pysyttävä vakaana, jotta pulssi lasketaan. Ajuri käyttää pisintä laitteistosuodatinta, joka on enintään tämän arvon suuruinen.0(oletus) poistaa suodatuksen käytöstä.max/min(vain avainsanana) – sijaintilaskurin modulo-alue. Kun laskuri ylittää arvonmax, se kiertyy arvoonminja kierroslaskuri kasvaa (pienenee laskettaessa alaspäin). Antamalla sekämaxettäminarvoksi0alue poistetaan käytöstä.reset(vain avainsanana) –Pin, jonka nouseva reuna lataa sijaintilaskurin uudelleen aloitusarvoon (muuttamatta kierroslaskuria).match(vain avainsanana) – laskuriarvo, jossaIRQ_MATCH-keskeytys laukeaa. AnnaNonepoistaaksesi käytöstä.match_pin(vain avainsanana) –Pin, joka ohjataan korkeaksi, kun sijaintilaskuri on yhtä suuri kuinmatch, ja matalaksi muulloin.Metodit¶
- 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¶
Alusta laskuri uudelleen annetuilla parametreilla ja nollaa sen sijainti- ja kierroslaskurit. Hyväksyy samat avainsana-argumentit kuin konstruktori.
- deinit() None¶
Pysäytä laskuri, poista odottavat keskeytykset käytöstä ja vapauta QENC-laitteistoresurssit. Pehmeä uudelleenkäynnistys poistaa kaikki
Counter-instanssit automaattisesti.
- value() int¶
- value(value: int, /) int
Hae tai aseta etumerkillinen sijaintilaskuri.
Ilman argumenttia palauttaa nykyisen lukeman.
Yhdellä
value-argumentilla asettaa atomisesti sijaintilaskurin arvoonvalueja palauttaa edellisen lukeman. Yleinen tapacounter.value(0)nollaa laskurin mittausjakson alussa.
- cycles() int¶
- cycles(value: int, /) int
Hae tai aseta kierroslaskuri, etumerkillinen 16-bittinen kokonaisluku, joka seuraa kuinka monta kertaa sijaintilaskuri on ylittänyt arvot
max/min.Ilman argumenttia palauttaa nykyisen kierroslukeman.
Yhdellä
value-argumentilla asettaa kierroslaskurin arvoonvalue(koskematta sijaintilaskuriin) ja palauttaa edellisen lukeman.
- irq(handler: Callable[[Counter], None] | None = None, trigger: int = 0, hard: bool = False) None¶
Rekisteröi takaisinkutsu, joka käynnistetään, kun jokin tuetuista QENC-tapahtumista laukeaa. Käsittelijä saa
Counter-objektin ainoana argumenttinaan; tietty tapahtuma voidaan tunnistaa käsittelijän sisälläirq.flags()-kutsulla.triggeron yhden tai useammanIRQ_*-vakion bittimaski:IRQ_RESET–reset-nasta aktivoitui.IRQ_INDEX– siirtymäindex-linjalla.IRQ_MATCH– sijaintilaskuri saavutti arvonmatch. Match poistetaan automaattisesti käytöstä laukeamisen jälkeen, ja se on viritettävä uudelleen asentamalla IRQ uudelleen.IRQ_ROLL_OVER– sijaintilaskuri kiertyi arvostamaxarvoonmin.IRQ_ROLL_UNDER– sijaintilaskuri kiertyi arvostaminarvoonmax.
hard=Truerekisteröi kovan keskeytyskäsittelijän (pienempi viive, mutta käsittelijä ei saa varata muistia). Oletuksena on ajastettu takaisinkutsu. Annahandler=Nonepoistaaksesi keskeytyksen käytöstä.
Vakiot¶