Timer/Counter là các module độc lập với CPU. Chức năng chính của các bộ
Timer/Counter, như tên gọi của chúng, là định thì (tạo ra một khoảng thời gian, đếm thời gian…) và đếm sự kiện. Trên các chip AVR, các bộ Timer/Counter còn có thêm chức năng tạo ra các xung điều rộng PWM (Pulse Width Modulation), ở một số dòng AVR, một số Timer/Counter còn được dùng như các bộ canh chỉnh thời gian
(calibration) trong các ứng dụng thời gian thực. Các bộ Timer/Counter được chia theo
độ rộng thanh ghi chứa giá trịđịnh thời hay giá trịđếm của chúng, cụ thể trên chip Atmega8 có 2 bộ Timer 8 bit (Timer/Counter0 và Timer/Counter2) và 1 bộ 16 bit (Timer/Counter1). Chếđộ hoạt động và phương pháp điều khiển của từng
Timer/Counter0: là một bộđịnh thời, đếm đơn giản với 8 bit. Gọi là đơn giản vì bộ này chỉ có 1 chếđộ hoạt động (mode) so với 5 chế độ của bộ Timer/Counter1. Chế độ hoat động của Timer/Counter0 thực chất có thể coi như 2 chế độ nhỏ (và cũng là 2 chức năng cơ bản) đó là tạo ra một khoảng thời gian và đếm sự kiện. Chú ý là trên các chip AVR dòng mega sau này như Atmega16,32,64…chức năng của Timer/Counter0
được nâng lên như các bộ Timer/Counter1…
Timer/Counter1: là bộđịnh thời, đếm đa năng 16 bit. Bộ Timer/Counter này có 5 chếđộ hoạt động chính. Ngoài các chức năng thông thường, Timer/Counter1 còn được dùng để tạo ra xung điều rộng PWM dùng cho các mục đích điều khiển. Có thể tạo 2 tín hiệu PWM độc lập trên các chân OC1A (chân 15) và OC1B (chân 16) bằng Timer/Counter1. Các bộ Timer/Counter kiểu này được tích hợp thêm khá nhiều trong các chip AVR sau này, ví dụ Atmega128 có 2 bộ, Atmega2561 có 4 bộ…
Timer/Counter2: tuy là một module 8 bit như Timer/Counter0 nhưng
Timer/Counter2 có đến 4 chếđộ hoạt động như Timer/Counter1, ngoài ra nó nó còn
được sử dụng như một module canh chỉnh thời gian cho các ứng dụng thời gian thực (chếđộ asynchronous).
Trong phạm vi bài 4 này, tôi chủ yếu hướng dẫn cách sử dụng 4 chế độ hoạt động của các Timer/Counter. Chếđộ asynchronous của Timer/Counter2 sẽ được bỏ qua vì có thể chếđộ này không được sử dụng phổ biến.
Trước khi khảo sát hoạt động của các Timer/Counter, chúng ta thống nhất cách gọi tắt tên gọi của các Timer/Counter là T/C, ví dụ T/C0 để chỉ Timer/Counter0…