Về nguyên tắc, cách làm của bạn là ổn. Nếu bạn dùng hàm set_timer0(0) khi phát hiện xung thứ nhất, số đếm của timer0 sẽ được đặt là 0, và timer sẽ tiếp tục chạy nếu nó được kích hoạt (enabled). Ở xung thứ hai, bạn dùng hàm get_timer0() để lấy số đếm thì có thể đo được khoảng thời gian giữa hai xung.
Tuy nhiên, bạn cần chú ý là tồn tại thời gian trễ giữa thời điểm xuất hiện xung thứ nhất và tác động xóa số đếm của timer0 bằng lệnh set_timer0(0), cũng như giữa thời điểm xuất hiện xung thứ hai và lệnh get_timer0(). Nếu bạn cần độ chính xác cỡ 1 us, bạn cần phải xem xét kỹ lưỡng những yếu tố này, tốt nhất là dùng thực nghiệm để xác định độ lệch nếu có.
Có vẻ như bạn đã từng hỏi vấn đề này trên diễn đàn cách đây một dạo?
Thân,
|