Có sự đánh đổi giữa độ phân giải và tần số có thể đạt được. Bạn đề cập đến Timer 2, nhưng trên Atmega328P Timer 2 là bộ hẹn giờ 8 bit, do đó bạn sẽ không thể đặt CTC thành 1024.
Giả sử chúng ta đang nói về bộ định thời 16 bit, như Timer 1 trên Atmega328P. Với bộ đếm gộp trước là một, bạn có thể đặt thời gian (giả sử đồng hồ 16 MHz) từ 1 đến 65536 "tích tắc", tức là 62,5 ns lên đến 4096 trận.
Đây sẽ là phép đo chính xác nhất bởi vì bạn đang sử dụng một đồng hồ (bộ xử lý) trên mỗi đồng hồ bấm giờ (bộ đếm trước của một).
Tuy nhiên, nếu bạn có kế hoạch thời gian hơn 4.096 ms thì bạn cần phải nâng cấp bộ đếm gộp. Bộ đếm trước tiếp theo trên Timer 1 là 8, vì vậy bây giờ bạn có thể tính thời gian trong khoảng thời gian gấp 8 lần (32768 Sự thay đổi) tuy nhiên độ chính xác (độ chính xác) của bạn hiện đã giảm đi 8 lần. Độ chi tiết của bộ định thời đã tăng từ 62,5 ns đến 62,5 * 8 ns, tức là 500 ns.
Nếu bạn cần thời gian dài hơn 32,768 ms thì bộ đếm trước phải lớn hơn một lần nữa, lần tiếp theo là 64. Vì vậy, bây giờ bạn có thể có thời gian lên tới 262144, nhưng với độ chi tiết là 62,5 * 64, là 4000 ns (4 điều ).
Đề nghị của tôi sẽ là sử dụng bộ đếm gộp thấp nhất mà bạn có thể, nhưng vẫn có được khoảng thời gian bạn muốn. Vì vậy, rõ ràng bạn không thể sử dụng một bộ đếm gộp từ một đến 10 ms.
Tôi có một cuộc thảo luận về bộ tính giờ trên http://www.gammon.com.au/timers .
Trên trang đó là một biểu đồ giúp trực quan hóa các hiệu ứng của các bộ đếm trước khác nhau:
Phần trên cùng (đếm một) có hiệu quả cung cấp cho bạn độ chi tiết của từng bộ đếm gộp. Ví dụ, một bộ đếm gộp 256 có độ chi tiết là 16.000 ns (16 12s). Một số tần số nhất định (lũy thừa 2) sẽ tự cho vay kết hợp (ví dụ: bộ đếm trước 1 với số lượng 256 hoặc bộ đếm trước 256 với số lượng 1).
Tuy nhiên, đối với các tần số không có thuộc tính đó, bộ đếm gộp nhỏ hơn sẽ (nếu có thể được sử dụng) sẽ cho độ chi tiết mịn hơn.