class Counter -- bộ đếm xung¶
Lớp Counter bao bọc khối phần cứng i.MX RT QENC (bộ mã hóa cầu phương / bộ đếm) được cấu hình dưới dạng bộ đếm xung đơn đầu vào. Mỗi cạnh lên trên chân nguồn sẽ tăng (hoặc giảm) một bộ đếm vị trí phần cứng; có thể gắn các hàm gọi lại phần mềm vào các sự kiện ROLL_OVER / ROLL_UNDER / RESET / INDEX / MATCH.
Chỉ khả dụng trên OpenMV Cam RT1062 (cổng mimxrt). Trên các OpenMV Cam dựa trên STM32, hãy dùng pyb.Timer được cấu hình cho chế độ bắt đầu vào thay thế. Không được hỗ trợ trên OpenMV Cam AE3 (cổng alif).
Ví dụ sử dụng:
from machine import Pin, Counter
counter = Counter(0, Pin("P0", Pin.IN))
counter.value(0)
# ... wait some time ...
print("pulses:", counter.value())
Hàm khởi tạo¶
- 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)¶
Khởi tạo (hoặc lấy singleton của) khối bộ đếm QENC được xác định bởi
id. RT1062 có nhiều khối QENC (idchọn một); các đối số tương tự cũng đượcinit()chấp nhận để cấu hình lại một thực thể hiện có.src-- chân đầu vào có các cạnh lên được đếm.direction(chỉ từ khóa) -- hoặc làUP/DOWNđể đặt hướng cố định, hoặc là mộtPinmà mức logic của nó chọn hướng tại thời điểm chạy (thấp = đếm lên, cao = đếm xuống).filter_ns(chỉ từ khóa) -- thời gian đầu vào ổn định tối thiểu tính bằng nano giây để một xung được đếm. Driver sử dụng bộ lọc phần cứng dài nhất nhỏ hơn hoặc bằng giá trị này.0(mặc định) sẽ tắt bộ lọc.max/min(chỉ từ khóa) -- phạm vi modulo của bộ đếm vị trí. Khi bộ đếm vượt quamax, nó quay vềminvà bộ đếm chu kỳ tăng lên (giảm khi đếm xuống). Truyền cảmaxvàminbằng0sẽ vô hiệu hóa phạm vi.reset(chỉ từ khóa) -- mộtPincó cạnh lên sẽ nạp lại bộ đếm vị trí về giá trị bắt đầu (không thay đổi bộ đếm chu kỳ).match(chỉ từ khóa) -- giá trị bộ đếm mà tại đó một ngắtIRQ_MATCHđược kích hoạt. TruyềnNoneđể vô hiệu hóa.match_pin(chỉ từ khóa) -- mộtPinđược kéo cao khi bộ đếm vị trí bằngmatchvà kéo thấp trong các trường hợp còn lại.Phương thức¶
- 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¶
Khởi tạo lại bộ đếm với các tham số đã cho và đặt lại các bộ đếm vị trí và chu kỳ. Chấp nhận các đối số từ khóa giống như hàm khởi tạo.
- deinit() None¶
Dừng bộ đếm, vô hiệu hóa bất kỳ ngắt đang chờ xử lý nào và giải phóng tài nguyên phần cứng QENC. Một lần reset mềm sẽ tự động deinitialise tất cả các thực thể
Counter.
- value() int¶
- value(value: int, /) int
Lấy hoặc đặt bộ đếm vị trí có dấu.
Không có đối số, trả về giá trị đếm hiện tại.
Với một đối số
valueduy nhất, đặt nguyên tử bộ đếm vị trí thànhvaluevà trả về giá trị đếm trước đó. Thành ngữ phổ biếncounter.value(0)đặt lại bộ đếm ở đầu cửa sổ đo lường.
- cycles() int¶
- cycles(value: int, /) int
Lấy hoặc đặt bộ đếm chu kỳ, một số nguyên 16-bit có dấu theo dõi số lần bộ đếm vị trí đã vượt qua
max/min.Không có đối số, trả về giá trị đếm chu kỳ hiện tại.
Với một đối số
valueduy nhất, đặt bộ đếm chu kỳ thànhvalue(không ảnh hưởng đến bộ đếm vị trí) và trả về giá trị đếm trước đó.
- irq(handler: Callable[[Counter], None] | None = None, trigger: int = 0, hard: bool = False) None¶
Đăng ký một hàm gọi lại được gọi khi một trong các sự kiện QENC được hỗ trợ xảy ra. Bộ xử lý nhận đối tượng
Counterlàm đối số duy nhất; sự kiện cụ thể có thể được xác định bên trong bộ xử lý quairq.flags().triggerlà một bitmask của một hoặc nhiều hằng sốIRQ_*:IRQ_RESET-- chânresetđược kích hoạt.IRQ_INDEX-- một sự chuyển tiếp trên đườngindex.IRQ_MATCH-- bộ đếm vị trí đạt đếnmatch. Match tự động bị vô hiệu hóa sau khi kích hoạt và phải được tái kích hoạt bằng cách cài đặt lại IRQ.IRQ_ROLL_OVER-- bộ đếm vị trí quay từmaxvềmin.IRQ_ROLL_UNDER-- bộ đếm vị trí quay từminvềmax.
hard=Trueđăng ký một bộ xử lý ngắt cứng (độ trễ thấp hơn, nhưng bộ xử lý không được phân bổ bộ nhớ). Mặc định là một hàm gọi lại theo lịch. Truyềnhandler=Noneđể vô hiệu hóa ngắt.
Hằng số¶