klassen Counter – pulsräknare¶
Klassen Counter kapslar in i.MX RT QENC-hårdvarublocket (kvadraturkodare / räknare) konfigurerat som en pulsräknare med en enda ingång. Varje stigande flank på källstiftet ökar (eller minskar) en hårdvarubaserad positionsräknare; återanrop i programvara kan kopplas till händelserna ROLL_OVER / ROLL_UNDER / RESET / INDEX / MATCH.
Endast tillgänglig på OpenMV Cam RT1062 (mimxrt-porten). På de STM32-baserade OpenMV-kamerorna använder du i stället pyb.Timer konfigurerad för insignalsinfångning. Exponeras inte på OpenMV Cam AE3 (alif-porten).
Exempel på användning:
from machine import Pin, Counter
counter = Counter(0, Pin("P0", Pin.IN))
counter.value(0)
# ... wait some time ...
print("pulses:", counter.value())
Konstruktorer¶
- 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)¶
Konstruera (eller hämta singletonen för) QENC-räknarblocket som identifieras av
id. RT1062 har flera QENC-block (idväljer ett); samma argument accepteras även avinit()för att omkonfigurera en befintlig instans.src– ingångsstiftet vars stigande flanker räknas.direction(endast nyckelord) – antingenUP/DOWNför att ange en fast riktning, eller ettPinvars logiknivå väljer riktningen vid körning (låg = räkna upp, hög = räkna ner).filter_ns(endast nyckelord) – minsta tid i nanosekunder som insignalen måste vara stabil för att en puls ska räknas. Drivrutinen använder det längsta hårdvarufiltret som är mindre än eller lika med detta värde.0(standard) inaktiverar filtreringen.max/min(endast nyckelord) – modulo-intervall för positionsräknaren. När räknaren rullar förbimaxslår den runt tillminoch cykelräknaren ökar (minskar vid nedräkning). Om bådemaxochminanges som0inaktiveras intervallet.reset(endast nyckelord) – ettPinvars stigande flank laddar om positionsräknaren till startvärdet (utan att ändra cykelräknaren).match(endast nyckelord) – räknarvärdet vid vilket ettIRQ_MATCH-avbrott utlöses. AngeNoneför att inaktivera.match_pin(endast nyckelord) – ettPinsom drivs högt medan positionsräknaren är lika medmatchoch lågt annars.Metoder¶
- 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¶
Initiera om räknaren med de angivna parametrarna och nollställ dess positions- och cykelräknare. Accepterar samma nyckelordsargument som konstruktorn.
- deinit() None¶
Stoppa räknaren, inaktivera eventuella väntande avbrott och frigör QENC-hårdvaruresurserna. En mjuk återställning avinitierar automatiskt alla
Counter-instanser.
- value() int¶
- value(value: int, /) int
Hämta eller ange den teckenförsedda positionsräknaren.
Utan argument returneras det aktuella värdet.
Med ett enda
value-argument ställs positionsräknaren atomärt tillvalueoch det föregående värdet returneras. Det vanliga uttrycketcounter.value(0)nollställer räknaren i början av ett mätfönster.
- cycles() int¶
- cycles(value: int, /) int
Hämta eller ange cykelräknaren, ett teckenförsett 16-bitars heltal som håller reda på hur många gånger positionsräknaren har rullat förbi
max/min.Utan argument returneras det aktuella cykelvärdet.
Med ett enda
value-argument ställs cykelräknaren tillvalue(utan att röra positionsräknaren) och det föregående värdet returneras.
- irq(handler: Callable[[Counter], None] | None = None, trigger: int = 0, hard: bool = False) None¶
Registrera ett återanrop som anropas när någon av de QENC-händelser som stöds utlöses. Hanteraren får
Counter-objektet som sitt enda argument; den specifika händelsen kan identifieras inuti hanteraren viairq.flags().triggerär en bitmask med en eller fleraIRQ_*-konstanter:IRQ_RESET–reset-stiftet aktiverades.IRQ_INDEX– en övergång påindex-linjen.IRQ_MATCH– positionsräknaren nåddematch. Match inaktiveras automatiskt efter utlösning och måste återaktiveras genom att IRQ:n installeras om.IRQ_ROLL_OVER– positionsräknaren slog runt frånmaxtillmin.IRQ_ROLL_UNDER– positionsräknaren slog runt frånmintillmax.
hard=Trueregistrerar en hård avbrottshanterare (lägre latens, men hanteraren får inte allokera minne). Standard är ett schemalagt återanrop. Angehandler=Noneför att inaktivera avbrottet.
Konstanter¶