ATmega16 三個定時器/計數器T/C0,T/C1,T/C2,其中T/C0,T/C2為8位定時器/計數器,T/C1是16位定時器/計數器。
定時器/計數器相關寄存器:TIMSK:定時計數中斷屏蔽寄存器,TIFR:定時計數器中斷標志寄存器,ASSR:異步狀態寄存器,
SFIOR:特殊功能寄存器
T/C0相關寄存器 :TCCR0 :控制寄存器,TCNT0:計數寄存器,OCR0:輸出比較寄存器
T/C1相關寄存器: TCCR1A,TCCR1B:控制寄存器,TCNT1(TCNT1H,TCNT1L)計數寄存器,OCR1A,OCR1B:輸出比較寄存器,
ICR1:輸入捕捉寄存器
T/C2相關寄存器:TCCR2:控制寄存器 , TCNT2:計數寄存器,OCR2:輸出比較寄存器,
溢出中斷:以定時器/計數器T/C0為例,T/C0為8位定時器,計數范圍為十六進制0x00-0xFF,對應的十進制為0-255,由0開始計數,
當計數值超過255時 就產生一個中斷,中斷標準寄存器TIFR的TOV0(T/C0的溢出標準位)置1。
比較中斷:當T/C0的計數寄存器TCNT0的數值,和預置的OCR0的數值一致時,將產生一個比較中斷,中斷標志寄存器TIFR的
OCF0(T/C0的比較中斷標志位)置1。
T/C0溢出中斷使能過程:
1、中斷總使能: SREG=0x80;
2、T/C0的溢出中斷使能:將中斷使能寄存器的T/C0溢出中斷使能位TOIE0置1,c語言: TIMSK|=0x01;當產生溢出中斷時,硬件自動將中斷標志寄存器TIFR的TOVO(T/C0溢出中斷標志)位置1,用于軟件查詢判斷,執行完中斷處理程序后,由硬件自動清0。
普通模式: 普通模式(WGM01:0 = 0) 為最簡單的工作模式。在此模式下計數器不停地累加。計到8 比特的最大值后(TOP = 0xFF),
由于數值溢出,計數器簡單地返回到最小值0x00 重新開始
CTC(比較匹配時清0定時器):在CTC 模式(WGM01:0 = 2) 下OCR0 寄存器用于調節計數器的分辨率。當計數器的數值TCNT0等于
OCR0時計數器清零。OCR0定義了計數器的TOP值,亦即計數器的分辨率。
快速PWM :快速PWM 模式(WGM01:0 = 3) 可用來產生高頻的PWM 波形。快速PWM 模式與其他PWM模式的不同之處是其單斜坡
工作方式。計數器從BOTTOM計到MAX,然后立即回到BOTTOM重新開始
相位修正PWM :相位修正PWM 模式(WGM01:0 = 1) 為用戶提供了一個獲得高精度相位修正PWM 波形的方法。此模式基于雙斜坡
操作。計時器重復地從BOTTOM 計到MAX,然后又從MAX倒退回到BOTTOM。
定時器/計數器的工作必須指定時鐘源,無時鐘源定時器不能工作。時鐘源有內部時鐘源和外部時鐘源,由CS02,CS01,CS00位選擇。
外部時鐘源由T0引腳輸入。
OC0為T/C0的輸出引腳,即設置當TNCT0和OCR0數值相等時,外部輸出引腳OC0上的電平變化。
TCNT0-計數寄存器:通過它 寄存器可以直接對計數器的8 位數據進行讀寫訪問。
OCR0-輸出比較寄存器 : 包含一個8 位的數據,不間斷地與計數器數值TCNT0 進行比較。匹配事件可以用來產生輸出比較中斷,
或者用來在OC0 引腳上產生波形。
T/C1 真正的16位定時器/計數器,能夠輸出16位的PWM,有兩個獨立的輸出比較單元。具有輸入捕捉功能。
捕捉輸入:用于精確捕捉一個外部事件的發生,記錄事件發生的時間印記,如:精確測量脈沖寬度。
FOC1A/FOC1B只有當WGM13:0指定為非PWM模式時被激,對其寫1后,波形發生器將立即進行比較操作。
ICES1:該位選擇使用ICP1 上的哪個邊沿觸發捕獲事件。ICES 為"0” 選擇的是下降沿觸發輸入捕捉; ICES1 為"1” 選擇的是邏輯電平的
上升沿觸發輸入捕捉。
輸出比較寄存器1A :16位,由OCR1AH,OCR1AL組成
輸出比較寄存器1B:16位,由OCR1BH,OCR1BL組成
該寄存器中的16 位數據與TCNT1 寄存器中的計數值進行連續的比較,一旦數據匹配,將
產生一個輸出比較中斷,或改變OC1x 的輸出邏輯電平。
輸入捕捉寄存器:16位,由ICR1H,ICR1L組成,當外部引腳ICP1(或T/C1的模擬比較器)有輸入捕捉觸發信號產生時,計數器TCNT1中
的值寫入ICR1 中。ICR1 的設定值可作為計數器的TOP 值。