class Counter – darbe sayacı¶
Counter sınıfı, tek girişli bir darbe sayacı olarak yapılandırılmış i.MX RT QENC (kuadratür enkoder / sayaç) donanım bloğunu sarmalar. Kaynak pin üzerindeki her yükselen kenar, bir donanım konum sayacını artırır (veya azaltır); ROLL_OVER / ROLL_UNDER / RESET / INDEX / MATCH olaylarına yazılım geri çağırmaları (callback) eklenebilir.
Yalnızca OpenMV Cam RT1062 (mimxrt portu) üzerinde mevcuttur. STM32 tabanlı OpenMV kameralarında, bunun yerine giriş yakalama için yapılandırılmış pyb.Timer kullanın. OpenMV Cam AE3 (alif portu) üzerinde sunulmaz.
Örnek kullanım:
from machine import Pin, Counter
counter = Counter(0, Pin("P0", Pin.IN))
counter.value(0)
# ... wait some time ...
print("pulses:", counter.value())
Yapıcılar¶
- 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)¶
idile tanımlanan QENC sayaç bloğunu oluşturur (veya bu blok için tekil örneği getirir). RT1062 birden fazla QENC bloğuna sahiptir (idbunlardan birini seçer); aynı argümanlar, mevcut bir örneği yeniden yapılandırmak içininit()tarafından da kabul edilir.src– yükselen kenarları sayılan giriş pini.direction(yalnızca anahtar sözcük) – sabit bir yön ayarlamak için yaUP/DOWNya da çalışma zamanında yönü mantık seviyesi ile seçen birPin(düşük = yukarı say, yüksek = aşağı say).filter_ns(yalnızca anahtar sözcük) – bir darbenin sayılması için gereken nanosaniye cinsinden minimum giriş kararlılık süresi. Sürücü, bu değere eşit veya bundan küçük olan en uzun donanım filtresini kullanır.0(varsayılan) filtrelemeyi devre dışı bırakır.max/min(yalnızca anahtar sözcük) – konum sayacının modulo aralığı. Sayaçmaxdeğerini geçtiğindemindeğerine sarmalanır ve cycles sayacı artar (aşağı sayarken azalır). Hemmaxhem demindeğerlerini0olarak geçmek aralığı devre dışı bırakır.reset(yalnızca anahtar sözcük) – yükselen kenarı konum sayacını başlangıç değerine yeniden yükleyen birPin(cycles sayacını değiştirmeden).match(yalnızca anahtar sözcük) – birIRQ_MATCHkesmesinin tetiklendiği sayaç değeri. Devre dışı bırakmak içinNonegeçin.match_pin(yalnızca anahtar sözcük) – konum sayacımatchdeğerine eşit olduğunda yüksek, aksi halde düşük sürülen birPin.Metotlar¶
- 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¶
Sayacı verilen parametrelerle yeniden başlatır ve konum ile cycles sayaçlarını sıfırlar. Yapıcı ile aynı anahtar sözcük argümanlarını kabul eder.
- deinit() None¶
Sayacı durdurur, bekleyen tüm kesmeleri devre dışı bırakır ve QENC donanım kaynaklarını serbest bırakır. Bir yazılımsal sıfırlama, tüm
Counterörneklerini otomatik olarak serbest bırakır.
- value() int¶
- value(value: int, /) int
İşaretli konum sayacını alır veya ayarlar.
Argüman verilmediğinde, geçerli sayımı döndürür.
Tek bir
valueargümanı ile, konum sayacını atomik olarakvaluedeğerine ayarlar ve önceki sayımı döndürür. Yaygın deyimcounter.value(0), bir ölçüm penceresinin başında sayacı sıfırlar.
- cycles() int¶
- cycles(value: int, /) int
Konum sayacının
max/mindeğerlerini kaç kez geçtiğini izleyen, işaretli 16 bitlik bir tamsayı olan cycles sayacını alır veya ayarlar.Argüman verilmediğinde, geçerli cycles sayımını döndürür.
Tek bir
valueargümanı ile, cycles sayacını (konum sayacına dokunmadan)valuedeğerine ayarlar ve önceki sayımı döndürür.
- irq(handler: Callable[[Counter], None] | None = None, trigger: int = 0, hard: bool = False) None¶
Desteklenen QENC olaylarından biri tetiklendiğinde çağrılacak bir geri çağırma (callback) kaydeder. İşleyici, tek argümanı olarak
Counternesnesini alır; belirli olay, işleyici içindeirq.flags()aracılığıyla tanımlanabilir.trigger, bir veya daha fazlaIRQ_*sabitinden oluşan bir bit maskesidir:IRQ_RESET–resetpini etkinleştirildi.IRQ_INDEX–indexhattında bir geçiş.IRQ_MATCH– konum sayacımatchdeğerine ulaştı. Match, tetiklendikten sonra otomatik olarak devre dışı bırakılır ve IRQ yeniden kurularak yeniden etkinleştirilmelidir.IRQ_ROLL_OVER– konum sayacımaxdeğerindenmindeğerine sarmalandı.IRQ_ROLL_UNDER– konum sayacımindeğerindenmaxdeğerine sarmalandı.
hard=True, bir donanım kesme işleyicisi kaydeder (daha düşük gecikme, ancak işleyici bellek ayırmamalıdır). Varsayılan, zamanlanmış bir geri çağırmadır. Kesmeyi devre dışı bırakmak içinhandler=Nonegeçin.
Sabitler¶