T/C0相關
1.TCCR0——T/C0控制寄存器
FOC0 WGM00 COM01 COM00 WGM01 CS02 CS01 CS00
位7——FOC0:強制輸出比較位。
FOC0僅在WGM[01:00]設置為非PWM模式時才有效。為了保證與未來器件的兼容性,在使用PWM時,寫TCCR0要對其清零。對其寫1后,將立即進行比較操作。比較匹配輸出引腳OC0將按照COM[01:00]的設置輸出相應的電平。要注意FOC0類似一個鎖存信號,真正對強制輸出比較起作用的是COM[01:00]的設置。FOC0不會引發任何中斷,也不會在利用OCR0作為TOP的CTC模式下對進行清零的操作。讀FOC0的返回值永遠為0。
位6,位3——WGM[01:00]:波形產生模式
這兩位控制的計數序列、計數器的最大值及產生的波形。T/C0支持的模式有:普通模式,比較匹配發生時清除計數器模式(CTC),以及兩種PWM模式,詳見下表:
模式 WGM01 WGM00 T/C的 TOP OCR0的 TOV0的
(CTC0) (PWM0) 工作模式 更新時間 置位時刻
0 0 0 普通 0xFF 立即更新 0xFF
1 0 1 修正PWM 0xFF 0xFF 0x00
2 1 0 CTC OCR0 立即更新 0xFF
3 1 1 快速PWM 0xFF 0xFF 0xFF
位5,位4——COM[01:00]:比較匹配輸出模式
這些位決定了比較匹配發生時輸出引腳OC0的電平。如果COM[01:00]中的一位或全部都
置位,OC0以比較匹配輸出的方式進行工作。同時其方向控制位要設置為1以使能輸出驅動器。
當OC0連接到物理引腳上時,COM[01:00]的功能依賴于WGM[01:00]的設置。
比較輸出模式,非PWM模式
COM01 COM00 說明
0 0 正常的端口操作,不與OC0引腳物理連接
0 1 比較匹配發生時OC0取反
1 0 比較匹配發生時OC0清零
1 1 比較匹配發生時OC0置位
比較輸出模式,快速PWM模式
COM01 COM00 說明
0 0 正常的端口操作,不與OC0引腳物理連接
0 1 保留
1 0 比較匹配發生時將清零OC0,計數到0XFF時OC0置位
1 0 比較匹配發生時將置位OC0,計數到0XFF時OC0清零
比較輸出模式,相位修正PWM模式
COM01 COM00 說明
0 0 正常的端口操作,不與OC0引腳物理連接
0 1 保留
1 0 在向上計數發生比較匹配時將清零OC0,在向下計數發生比匹配OC0置位
1 0 在向上計數發生比較匹配時將置位OC0,在向下計數發生比匹配OC0清零
位[2:0]——CS[02:00]:時鐘選擇
用于選擇T/C0的時鐘源。
CS02 CS01 CS00 說明
0 0 0 無時鐘,T/C不工作
0 0 1 clk/1(沒有預分頻)
0 1 0 clk/8(來自預)
0 1 1 clk/64(來自預分頻器)
1 0 0 clk/256(來自預分頻器)
1 0 1 clk/1024(來自預分頻器)
1 1 0 時鐘由T0引腳輸入,下降沿觸發
1 1 1 時鐘由T0引腳輸入,上升沿觸發
2.TCNT0——T/C0計數寄存器
3.OCR0——輸出比較寄存器
OCIE2 TOIE2 TICE1 OCIE1A OCIE1B TOIE1 OCIE0 TOIE0
位1——OCIE0:T/C0輸出比較匹配中斷使能位。當OCIE0和狀態寄存器的全局中斷使能位I都為”1“時,T/C0的輸出比較匹配中斷使能。當T/C0的比較匹配發生,即TIFR中的OCF0置位時,產生輸出比較匹配中斷。
位0——TOIE0:T/C0溢出中斷使能。當TOIE0和狀態寄存器的全局中斷使能位I都為”1”時,T/C0的溢出中斷使能。當T/C0發生計數溢出,即TIFR中的TOV0位置位時,產生溢出中斷。
5.TIFR——T/C中斷標志寄存器
OCF2 TOV2 ICF1 OCF1A OCF1B TOV1 OCF0 TOV0
位1——OCF0:T/C0輸出比較標志位0。當T/C0與OCR0(輸出比較寄存器0)的值匹配時,OCF0置位。此位在中斷服務程序里硬件清零,也可以對其寫1來清零。當SREG中的位I、OCIE0(T/C0比較匹配中斷使能)和OCF0都置位時,中斷服務程序得到執行。
位0——TOV0:T/C0溢出標志。當T/C0溢出時,TOV0置位。執行相應的中斷服務程序時此位硬件清零。此外,TOV0也可以通過寫1來清零。當SREG中的位I、TOIE0(T/C0溢出中斷使能)和TOV0都置位時,中斷服務程序得到執行。注意:在相位修正PWM模式中,當T/C0在0x00改變記數方向時,TOV0置位。
6.SFIOR——特殊功能寄存器
ADTS2 ADTS1 ADTS0 —— ACME PUD PSR2 PSR10
位0——PSR0:T/C1與T/C0的預分頻器復位。PSR10置位時T/C1與T/C0的預分頻器復位,操作完成后這一位由硬件清零。寫入世時不會引起任何操作。T/C1與T/C0共用這一預分頻器,且預分頻器復位對兩個定時器都有影響。讀該位總是返回0。
T/C1相關寄存器
1.TCCR1A——T/C1控制寄存器
COM1A1 COM1A0 COM1B1 COM1B0 FOC1A FOC1B WGM11 WGM10
位 7:6–COM1A[1:0]:通道A的比較輸出模式
位 5:4–COM1B[1:0]:通道B的比較輸出模式
比較輸出模式,非PWM模式
COM1A1 COM1A0 說明
COM1B1 COM1B0
0 0 正常的端口操作,不與OC1A/OC1B引腳物理連接
0 1 比較匹配發生時OC0取反
1 0 比較匹配發生時OC0清零
1 1 比較匹配發生時OC0置位
比較輸出模式,快速PWM模式
COM1A1 COM1A0 說明
COM1B1 COM1B0
0 0 正常的端口操作,不與OC1A/OC1B引腳物理連接
0 1 WGM[3:0]=15:比較匹配時OC1A取反,OC1B不占用物理引腳。
WGM[3:0]為其它值時為普通端口操作,非OC1A/OC1B功能
1 0 比較匹配發生時將清零OC1A/OC1B,計數到0XFF時OC1A/OC1B置位
1 1 比較匹配發生時將置位OC1A/OC1B,計數到0XFF時OC1A/OC1B清零
比較輸出模式,相位修正PWM模式及相頻修正PWM模式
COM01 COM00 說明
0 0 正常的端口操作,不與OC1A/OC1B引腳物理連接
0 1 WGM13:0=9或14:比較匹配時OC1A取反,OC1B不占用物理引腳。
WGM13:0為其它值時為普通端口操作,非OC1A/OC1B功能
1 0 升序記數時比較匹配將清零OC1A/OC1B,
降序記數時比較匹配將置位OC1A/OC1B
1 1 升序記數時比較匹配將置位OC1A/OC1B,
降序記數時比較匹配將清零OC1A/OC1B
位3–FOC1A:通道A強制輸出比較
位2–FOC1B:通道B強制輸出比較
FOC1A/FOC1B只有當WGM[13:10]指定為非PWM模式時被激活。為與未來器件兼容,工作在PWM模式下對TCCR1A寫入時,這兩位必須清零。當FOC1A/FOC1B位置1,立即強制波形產生單元進行比較匹配。COM1X[1:0]的設置改變OC1A/OC1B的輸出。注意FOC1A/FOC1B位作為選通信號。COM1x1:0位的值決定強制比較的效果。
在CTC模式下使用OCR1A作為TOP值,FOC1A/FOC1B選通即不會產生中斷也不會清除定時器。
FOC1A/FOC1B位總是讀為0。
位1:0–WGM1[1:0]:波形發生模式
這兩位與位于TCCR1B寄存器的WGM[13:12]相結合,用于控制計數器的計數序列—計數器計數的上限值和確定波形發生器的工作模式。T/C支持的工作模式有:普通模式(計數器),比較匹配時清零定時器(CTC)模式,及三種脈寬調制(PWM)模式。
模式 WGM13 WGM12 WGM11 WGM10 定時器/計數器 上限值 OCR1x更 OV1置位
(CTC1) (PWM11) (PWM10) 工作模式限值 TOP 新時刻T 時刻
0 0 0 0 0 普通模式 0xFFFF 立即更新 0xFFFF
1 0 0 0 1 8位相位修正PWM 0x00FF TOP 0x0000
2 0 0 1 0 9位相位修正PWM 0x01FF TOP 0x0000
3 0 0 1 1 10位相位修正PWM 0x03FF TOP 0x0000
4 0 1 0 0 CTC OCR1A 立即更新 0xFFFF
5 0 1 0 1 8位快速PWM 0x00FF TOP TOP
6 0 1 1 0 9位快速PWM 0x01FF TOP TOP
7 0 1 1 1 10位快速PWM 0x03FF TOP TOP
8 1 0 0 0 相頻修正PWM ICR1 0 0X0000
9 1 0 0 1 相頻修正PWM OCR1A 0 0X0000
10 1 0 1 0 相位修正PWM ICR1 TOP 0X0000
11 1 0 1 1 相位修正PWM OCR1A TOP 0X0000
12 1 1 0 0 CTC ICR1 立即更新 0XFFFF
13 1 1 0 1 保留 – – –
14 1 1 1 0 快速PWM ICR1 TOP TOP
15 1 1 1 1 快速PWM OCR1A TOP TOP
2.TCCR1B——T/C1控制寄存器
ICNC1 ICES1 —— WGM13 WGM12 CS11 CS10
位7——ICNC1:輸入捕捉噪聲抑制使能位。
置位ICNC1將使能輸入捕捉噪聲抑制功能。此時外部引腳ICP1的輸入被濾波。其作用是從ICP1引腳連續進行4次采樣。如果4個采樣值都相等,那么信號送入邊沿檢測器。因此使能該功能使得輸入捕捉被延遲了4個時鐘周期。
位6——ICES1:輸入捕捉觸發沿選擇
該位選擇使用ICP1上的哪個邊沿觸發捕獲事件。ICES為“0”選擇的是下降沿觸發輸入捕捉;ICES1為”1”選擇的是邏輯電平的上升沿觸發輸入捕捉。按照ICES1的設置捕獲到一個事件后,計數器的數值被復制到ICR1寄存器。捕獲事件還會置為ICF1。如果此時中斷使能,輸入捕捉事件即被觸發。當ICR1用作TOP值(見TCCR1A與TCCR1B寄存器中WGM[13:10]位的描述)時,ICP1與輸入捕捉功能脫開,從而輸入捕捉功能被禁用。
位5——保留位
該位保留。為保證與將來器件的兼容性,寫TCCR1B時,該位必須寫入“0”。
位4:3——WGM1[3:2]:波形發生模式
位2:0——CS1[2:0]:時鐘選擇
用于選擇T/C1的時鐘源。
CS12 CS11 CS10 說明
0 0 0 無時鐘,T/C1不工作
0 0 1 clk/1(沒有預分頻)
0 1 0 clk/8(來自預分頻器)
0 1 1 clk/64(來自預分頻器)
1 0 0 clk/256(來自預分頻器)
1 0 1 clk/1024(來自預分頻器)
1 1 0 時鐘由T1引腳輸入,下降沿觸發
1 1 1 時鐘由T1引腳輸入,上升沿觸發
3.TCNT1——T/C1計數寄存器
4.OCR1A、OCR1B——T/C1輸出比較寄存器
5.ICR1——T/C1輸入捕獲寄存器
6.TIMSK——T/C中斷屏蔽寄存器
OCIE2 TOIE2 TICE1 OCIE1A OCIE1B TOIE1 OCIE0 TOIE0
位 5——TICIE1:T/C1輸入捕捉中斷使能。
當該位被設為”1”,且狀態寄存器中的I位被設為“1”時,T/C1的輸入捕捉中斷使能。一旦TIFR的ICF1置位,CPU即開始執行T/C1輸入捕捉中斷服務程序。
位4——OCIE1A:輸出比較A匹配中斷使能
當該位被設為”1”,且狀態寄存器中的I位被設為“1”時,T/C1的輸出比較A匹配中斷使能。一旦TIFR上的OCF1A置位,CPU即開始執行T/C1輸出比較A匹配中斷服務程序。
位3——OCIE1B:T/C1輸出比較B匹配中斷使能。
當該位被設為”1”,且狀態寄存器中的I位被設為“1”時,使能T/C1的輸出比較B匹配中斷使能。一旦TIFR上的OCF1B置位,CPU即開始執行T/C1輸出比較B匹配中斷服務程序。
位 2——TOIE1:T/C1溢出中斷使能
當該位被設為”1”,且狀態寄存器中的I位被設為”1”時,T/C1的溢出中斷使能。一旦TIFR上的TOV1置位,CPU即開始執行T/C1溢出中斷服務程序。
7.TIFR——T/C中斷標志寄存器
OCF2 TOV2 ICF1 OCF1A OCF1B TOV1 OCF0 TOV0
位 5——ICF1:T/C1輸入捕捉標志位
外部引腳ICP1出現捕捉事件時ICF1置位。此外,當ICR1作為計數器的TOP值時,一旦計數器值達到TOP,ICF1也置位。執行輸入捕捉中斷服務程序時ICF1自動清零。也可以對其寫入邏輯“1”來清除該標志位。
位 4——OCF1A:T/C1輸出比較A匹配標志位
當TCNT1與OCR1A匹配成功時,該位被設為”1”。強制輸出比較(FOC1A)不會置位OCF1A。執行強制輸出比較匹配A中斷服務程序時OCF1A自動清零。也可以對其寫入邏輯“1”來清除該標志位。
位3——OCF1B:T/C1輸出比較B匹配標志位
當TCNT1與OCR1B匹配成功時,該位被設為”1”。強制輸出比較(FOC1B)不會置位OCF1B。執行強制輸出比較匹配B中斷服務程序時OCF1B自動清零。也可以對其寫入邏輯“1”來清除該標志位。
位2——TOV1:T/C1溢出標志
該位的設置與T/C1的工作方式有關。工作于普通模式和CTC模式時,T/C1溢出時TOV1置位。
T/C2相關寄存器
1.TCCR2——T/C2控制寄存器
FOC2 WGM20 COM21 COM20 WGM21 CS22 CS21 CS20
位7——FOC2:強制輸出比較
FOC2僅在WGM2[1:0]指明非PWM模式時才有效。但是,為了保證與未來器件的兼容性,使用PWM時,寫TCCR2要對其清零。寫1后,波形發生器將立即進行比較操作。比較匹配輸出引腳OC2將按照COM2[1:0]的設置輸出相應的電平。要注意FOC2類似一個鎖存信號,真正對強制輸出比較起作用的是COM2[1:0]的設置。FOC2不會引發任何中斷,也不會在使用OCR2作為TOP的CTC模式下對定時器進行清零。讀FOC2的返回值永遠為0。
位6,位3——WGM2[1:0]:波形產生模式
這2位控制計數器的計數序列,計數器最大值TOP的來源,以及產生何種波形。T/C支持的模式有:普通模式,比較匹配發生時清除計數器模式(CTC),以及兩種PWM模式。
模式 WGM21 WGM20 T/C的 TOP OCR2的 TOV2的
(CTC2) (PWM2) 工作模式 更新時間 置位時刻
0 0 0 普通 0xFF 立即更新 0xFF
1 0 1 相位修正PWM 0xFF 0xFF 0x00
2 1 0 CTC OCR2 立即更新 0xFF
3 1 1 快速PWM 0xFF 0xFF 0xFF
位5:4——COM2[1:0]:比較匹配輸出模式
這些位決定了比較匹配發生時輸出引腳OC0的電平。如果COM2[1:0]中的一位或全部都置位,OC0以比較匹配輸出的方式進行工作。同時其方向控制位要設置為1以使能輸出驅動。當OC2連接到物理引腳上時,COM2[1:0]的功能依賴于WGM2[1:0]的設置。
比較輸出模式,非PWM模式
COM21 COM20 說明
0 0 正常的端口操作,不與OC2引腳物理連接
0 1 比較匹配發生時OC2取反
1 0 比較匹配發生時OC2清零
1 1 比較匹配發生時OC2置位
比較輸出模式,快速PWM模式
COM21 COM20 說明
0 0 正常的端口操作,不與OC2引腳物理連接
0 1 保留
1 0 比較匹配發生時將清零OC2,計數到0XFF時OC2置位
1 0 比較匹配發生時將置位OC2,計數到0XFF時OC2清零
比較輸出模式,相位修正PWM模式
COM21 COM20 說明
0 0 正常的端口操作,不與OC2引腳物理連接
0 1 保留
1 0 在向上計數發生比較匹配時將清零OC2,在向下計數發生比匹配OC2置位
1 0 在向上計數發生比較匹配時將置位OC2,在向下計數發生比匹配OC2清零
位[2:0]——CS[02:00]:時鐘選擇
用于選擇T/C0的時鐘源。
CS22 CS21 CS20 說明
0 0 0 無時鐘,T/C2不工作
0 0 1 clk/1(沒有預分頻)
0 1 0 clk/8(來自預分頻器)
0 1 1 clk/32(來自預分頻器)
1 0 0 clk/64(來自預分頻器)
1 0 1 clk/128(來自預分頻器)
1 1 0 clk/256(來自預分頻器)
1 1 1 clk/1024(來自預分頻器)
2.TCNT2——T/C2計數寄存器
3.OCR2——輸出比較寄存器
4.TIMSK——T/C中斷屏蔽寄存器
OCIE2 TOIE2 TICE1 OCIE1A OCIE1B TOIE1 OCIE0 TOIE0
位7——OCIE2:T/C2輸出比較匹配中斷使能位。當OCIE2和狀態寄存器的全局中斷使能位I都為”1“時,T/C2的輸出比較匹配中斷使能。當T/C2的比較匹配發生,即TIFR中的OCF2置位時,產生輸出比較匹配中斷。
位6——TOIE2:T/C2溢出中斷使能。當TOIE0和狀態寄存器的全局中斷使能位I都為”1”時,T/C2的溢出中斷使能。當T/C2發生計數溢出,即TIFR中的TOV2位置位時,產生溢出中斷。
5.TIFR——T/C中斷標志寄存器
OCF2 TOV2 ICF1 OCF1A OCF1B TOV1 OCF0 TOV0
位7——OCF2:T/C2輸出比較標志位。當T/C2與OCR2(輸出比較寄存器)的值匹配時,OCF2置位。此位在中斷服務程序里硬件清零,也可以對其寫1來清零。當SREG中的位I、OCIE2(T/C2比較匹配中斷使能)和OCF2都置位時,中斷服務程序得到執行。
位6——TOV2:T/C2溢出標志。當T/C2溢出時,TOV2置位。執行相應的中斷服務程序時此位硬件清零。此外,TOV2也可以通過寫1來清零。當SREG中的位I、TOIE2(T/C2溢出中斷使能)和TOV2都置位時,中斷服務程序得到執行。注意:在相位修正PWM模式中,當T/C2在0x00改變記數方向時,TOV2置位。
6.SFIOR——特殊功能寄存器
ADTS2 ADTS1 ADTS0 —— ACME PUD PSR2 PSR10
位1——PSR2:T/C2的預分頻器復位。PSR2置位時T/C2的預分頻器復位,操作完成后這一位由硬件清零,寫入時不會引起任何操作。讀該位總是返回0。
7.ASSR——異步狀態寄存器
—— —— —— —— AS2 TCN2UB OCR2UB TCR2UB
位3——AS2:異步T/C2
AS2為”0”時T/C2由I/O時鐘clk驅動;AS2為“1”時T/C2由連接到TOSC1引腳的驅動。改變AS2有可能破壞TCNT2、OCR2與TCCR2的內容。
位2——TCN2UB:T/C2更新中
T/C2工作于異步模式時,寫TCNT2將引起TCN2UB置位。當TCNT2從暫存寄存器更新完畢后TCN2UB由硬件清零。TCN2UB為0表明TCNT2可以寫入新值了。
位1——OCR2UB:輸出比較寄存器2更新中
T/C2工作于異步模式時,寫OCR2將引起OCR2UB置位。當OCR2從暫存寄存器更新完畢后OCR2UB由硬件清零。OCR2UB為0表明OCR2可以寫入新值了。
位 0——TCR2UB:T/C2控制寄存器更新中
T/C2工作于異步模式時,寫TCCR2將引起TCR2UB置位。當TCCR2從暫存寄存器更新完畢后TCR2UB由硬件清零。TCR2UB為0表明TCCR2可以寫入新值了。如果在更新忙標志置位的時候寫上述任何一個寄存器都將引起數據的破壞,并引發不必要的中斷。讀取TCNT2、OCR2和TCCR2的機制是不同的。讀取TCNT2得到的是實際的值,而
OCR2和TCCR2則是從暫存寄存器中讀取的。
評論
查看更多