có 2 cách:
Cách 1: encoder có độ phân giải thấp: 1 vòng có m xung
Đếm thời gian 1 xung:
- Khởi đông 1 timer chu kì là Ts, cứ vô ngắt timer tăng biến đếm lên 1 đơn vị
- Vô ngắt ngoài thì cập nhật thời gian 1 lần vô ngắt ngoài tức là thời gian 1/m của 1 vòng là Ts* dem + T0R(thanh ghi đếm của timer) => thời gian 1 chu kì là m * (Ts* dem + T0R)
Cách 2: encoder có độ phân giải cao ( n xung) hoặc động cơ quay nhanh
- Đếm số xung trong 1 khoảng thời gian:
+Vô ngắt ngoài tăng biến đếm lên 1
+ Vô ngắt timer( chu kì Ts) thì cập nhật giá trị trong biến đếm giả sử k xung
k xung -> Ts
n xung -> Ts * n / k
có chu kì thì bạn có thể tính vận tốc dễ dàng.