新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > AVR單片機(jī)(學(xué)習(xí)ing)-ATMEGA16的定時(shí)/計(jì)數(shù)器

AVR單片機(jī)(學(xué)習(xí)ing)-ATMEGA16的定時(shí)/計(jì)數(shù)器

作者: 時(shí)間:2016-11-27 來源:網(wǎng)絡(luò) 收藏
2)T/C0計(jì)數(shù)寄存器—TCNT0



通過T/C 寄存器可以直接對(duì)計(jì)數(shù)器的8 位數(shù)據(jù)進(jìn)行讀寫訪問。對(duì)TCNT0 寄存器的寫訪問
將在下一個(gè)時(shí)鐘阻止比較匹配。在計(jì)數(shù)器運(yùn)行的過程中修改TCNT0 的數(shù)值有可能丟失一
次TCNT0 和OCR0 的比較匹配。
3)輸出比較寄存器—OCR0


輸出比較寄存器包含一個(gè)8 位的數(shù)據(jù),不間斷地與計(jì)數(shù)器數(shù)值TCNT0 進(jìn)行比較。匹配事
件可以用來產(chǎn)生輸出比較中斷,或者用來在OC0 引腳上產(chǎn)生波形。
4)中斷屏蔽寄存器—TIMSK


• Bit 1 – OCIE0: T/C0 輸出比較匹配中斷使能
當(dāng)OCIE0 和狀態(tài)寄存器的全局中斷使能位I 都為”1” 時(shí),T/C0 的輸出比較匹配中斷使能。
當(dāng)T/C0 的比較匹配發(fā)生,即TIFR 中的OCF0 置位時(shí),中斷服務(wù)程序得以執(zhí)行。
• Bit 0 – TOIE0: T/C0 溢出中斷使能
當(dāng)TOIE0 和狀態(tài)寄存器的全局中斷使能位I 都為”1” 時(shí),T/C0 的溢出中斷使能。當(dāng)T/C0
發(fā)生溢出,即TIFR 中的TOV0 位置位時(shí),中斷服務(wù)程序得以執(zhí)行。
5)定時(shí)/計(jì)數(shù)器中斷標(biāo)志寄存器—TIFR


• Bit 1 – OCF0: 輸出比較標(biāo)志0
當(dāng)T/C0 與OCR0( 輸出比較寄存器0) 的值匹配時(shí),OCF0 置位。此位在中斷服務(wù)程序里
硬件清零,也可以對(duì)其寫1 來清零。當(dāng)SREG 中的位I、OCIE0(T/C0 比較匹配中斷使能
) 和OCF0 都置位時(shí),中斷服務(wù)程序得到執(zhí)行。
• Bit 0 – TOV0: T/C0 溢出標(biāo)志
當(dāng)T/C0 溢出時(shí), TOV0 置位。執(zhí)行相應(yīng)的中斷服務(wù)程序時(shí)此位硬件清零。此外, TOV0
也可以通過寫1 來清零。當(dāng)SREG 中的位I、TOIE0(T/C0 溢出中斷使能) 和TOV0 都置
位時(shí),中斷服務(wù)程序得到執(zhí)行。在相位修正PWM 模式中,當(dāng)T/C0 在0x00 改變記數(shù)方
向時(shí), TOV0 置位(這里我還真的不會(huì)~~)。
下面的是個(gè)補(bǔ)充:具體我也不知道~因?yàn)槲乙矝]有用過,回頭用了再來更新,哈。


4、16位定時(shí)/計(jì)數(shù)器T/C1
16位的T/C 可以實(shí)現(xiàn)精確的程序定時(shí)( 事件管理)、波形產(chǎn)生和信號(hào)測(cè)量。其主要特點(diǎn)如下
• 真正的16 位設(shè)計(jì)( 即允許16 位的PWM)
• 2 個(gè)獨(dú)立的輸出比較單元
• 雙緩沖的輸出比較寄存器
• 一個(gè)輸入捕捉單元
• 輸入捕捉噪聲抑制器
• 比較匹配發(fā)生時(shí)清除寄存器( 自動(dòng)重載)
• 無干擾脈沖,相位正確的PWM
• 可變的PWM 周期
• 頻率發(fā)生器
• 外部事件計(jì)數(shù)器
• 4 個(gè)獨(dú)立的中斷源(TOV1、 OCF1A、OCF1B 與ICF1)
先看看圖吧:

寄存器:
定時(shí)器/ 計(jì)數(shù)器TCNT1、輸出比較寄存器OCR1A/B 與輸入捕捉寄存器ICR1 均為16 位
寄存器。訪問16 位寄存器必須通過特殊的步驟,詳見P85“ 訪問16 位寄存器” 。T/C 控
制寄存器TCCR1A/B 為8 位寄存器,沒有CPU 訪問的限制。中斷請(qǐng)求( 圖中簡(jiǎn)寫為
Int.Req.) 信號(hào)在中斷標(biāo)志寄存器TIFR1 都有反映。所有中斷都可以由中斷屏蔽寄存器
TIMSK1 單獨(dú)控制。圖中未給出TIFR1 與TIMSK1。
T/C可由內(nèi)部時(shí)鐘通過預(yù)分頻器或通過由T1引腳輸入的外部時(shí)鐘驅(qū)動(dòng)。引發(fā)T/C數(shù)值增加(
或減少) 的時(shí)鐘源及其有效沿由時(shí)鐘選擇邏輯模塊控制。沒有選擇時(shí)鐘源時(shí)T/C 處于停止
狀態(tài)。時(shí)鐘選擇邏輯模塊的輸出稱為clkT1。
雙緩沖輸出比較寄存器OCR1A/B 一直與T/C 的值做比較。波形發(fā)生器用比較結(jié)果產(chǎn)生
PWM或在輸出比較引腳OC1A/B輸出可變頻率的信號(hào)。參見P91 “輸出比較單元” 。比較匹
配結(jié)果還可置位比較匹配標(biāo)志OCF1A/B,用來產(chǎn)生輸出比較中斷請(qǐng)求。
當(dāng)輸入捕捉引腳ICP1 或模擬比較器輸入引腳( 見P189 “ 模擬比較器” ) 有輸入捕捉事件
產(chǎn)生( 邊沿觸發(fā)) 時(shí),當(dāng)時(shí)的T/C 值被傳輸?shù)捷斎氩蹲郊拇嫫鞅4嫫饋?。輸入捕捉單元?br />括一個(gè)數(shù)字濾波單元( 噪聲消除器) 以降低噪聲干擾。
在某些操作模式下, TOP 值或T/C 的最大值可由OCR1A 寄存器、ICR1 寄存器,或一
些固定數(shù)據(jù)來定義。在PWM 模式下用OCR1A 作為TOP 值時(shí), OCR1A 寄存器不能用
作PWM 輸出。但此時(shí)OCR1A 是雙向緩沖的, TOP 值可在運(yùn)行過程中得到改變。當(dāng)需
要一個(gè)固定的TOP 值時(shí)可以使用ICR1 寄存器,從而釋放OCR1A 來用作PWM 的輸出。
不介紹了,太多了,要是想詳細(xì)了解,自己看datasheet吧,要是要的我給你~~)

5、16位定時(shí)/計(jì)數(shù)器1的寄存器
1)T/C1 控制寄存器A - TCCR1A
T/C1控制寄存器A用來設(shè)置通道A和B的輸出模式,以及波形的發(fā)生模式,其定義:


• Bit 7:6 – COM1A1:0: 通道A 的比較輸出模式
• Bit 5:4 – COM1B1:0: 通道B 的比較輸出模式
COM1A1:0與COM1B1:0分別控制OC1A 與OC1B狀態(tài)。如果COM1A1:0(COM1B1:0)的
一位或兩位被寫入"1”,OC1A(OC1B) 輸出功能將取代I/O 端口功能。此時(shí)OC1A(OC1B)
相應(yīng)的輸出引腳數(shù)據(jù)方向控制必須置位以使能輸出驅(qū)動(dòng)器。
OC1A(OC1B) 與物理引腳相連時(shí),COM1x1:0 的功能由WGM13:0 的設(shè)置決定。Table 44
給出當(dāng)WGM13:0 設(shè)置為普通模式與CTC 模式( 非PWM) 時(shí)COM1x1:0 的功能定義。






• Bit 3 – FOC1A: 通道A 強(qiáng)制輸出比較
• Bit 2 – FOC1B: 通道B 強(qiáng)制輸出比較
FOC1A/FOC1B只有當(dāng)WGM13:0指定為非PWM模式時(shí)被激活。為與未來器件兼容,工作
在PWM 模式下對(duì)TCCR1A 寫入時(shí),這兩位必須清零。當(dāng)FOC1A/FOC1B 位置1 ,立即
強(qiáng)制波形產(chǎn)生單元進(jìn)行比較匹配。COM1x1:0 的設(shè)置改變 OC1A/OC1B 的輸出。注意
FOC1A/FOC1B 位作為選通信號(hào)。COM1x1:0 位的值決定強(qiáng)制比較的效果。
在CTC 模式下使用OCR1A 作為TOP 值, FOC1A/FOC1B 選通即不會(huì)產(chǎn)生中斷也不好
清除定時(shí)器。
FOC1A/FOC1B 位總是讀為0。
• Bit 1:0 – WGM11:0: 波形發(fā)生模式
這兩位與位于TCCR1B 寄存器的WGM13:2 相結(jié)合,用于控制計(jì)數(shù)器的計(jì)數(shù)序列——計(jì)
數(shù)器計(jì)數(shù)的上限值和確定波形發(fā)生器的工作模式( 見Table 47)。T/C 支持的工作模式有:


(這些東西還是要理解性的記憶的~~~~
2)T/C1 控制寄存器B - TCCR1B


• Bit 7 – ICNC1: 入捕捉噪聲抑制器
置位ICNC1 將使能輸入捕捉噪聲抑制功能。此時(shí)外部引腳ICP1 的輸入被濾波。其作用
是從ICP1 引腳連續(xù)進(jìn)行4 次采樣。如果4 個(gè)采樣值都相等,那么信號(hào)送入邊沿檢測(cè)器。
因此使能該功能使得輸入捕捉被延遲了4 個(gè)時(shí)鐘周期。
• Bit 6 – ICES1: 輸入捕捉觸發(fā)沿選擇
該位選擇使用ICP1 上的哪個(gè)邊沿觸發(fā)捕獲事件。ICES 為"0” 選擇的是下降沿觸發(fā)輸入
捕捉; ICES1 為"1” 選擇的是邏輯電平的上升沿觸發(fā)輸入捕捉。
按照ICES1 的設(shè)置捕獲到一個(gè)事件后,計(jì)數(shù)器的數(shù)值被復(fù)制到ICR1 寄存器。捕獲事件還
會(huì)置為ICF1。如果此時(shí)中斷使能,輸入捕捉事件即被觸發(fā)。
當(dāng)ICR1 用作TOP 值( 見TCCR1A 與TCCR1B 寄存器中WGM13:0 位的描述) 時(shí),ICP1
與輸入捕捉功能脫開,從而輸入捕捉功能被禁用。
• Bit 5 – 保留位
該位保留。為保證與將來器件的兼容性,寫TCCR1B 時(shí),該位必須寫入"0”。
• Bit 4:3 – WGM13:2: 波形發(fā)生模式
見TCCR1A 寄存器中的描述。
• Bit 2:0 – CS12:0: 時(shí)鐘選擇
這3 位用于選擇T/C 的時(shí)鐘源,見Figure 49 與 Figure 50。


3)T/C1計(jì)數(shù)寄存器 - TCNT1H 與TCNT1L




TCNT1H與TCNT1L組成了T/C1的數(shù)據(jù)寄存器TCNT1。通過它們可以直接對(duì)定時(shí)器/計(jì)數(shù)
器單元的16 位計(jì)數(shù)器進(jìn)行讀寫訪問。為保證CPU 對(duì)高字節(jié)與低字節(jié)的同時(shí)讀寫,必須
使用一個(gè)8 位臨時(shí)高字節(jié)寄存器TEMP。TEMP 是所有的16 位寄存器共用的。
在計(jì)數(shù)器運(yùn)行期間修改TCNT1的內(nèi)容有可能丟失一次TCNT1與OCR1x的比較匹配操作。
寫TCNT1 寄存器將在下一個(gè)定時(shí)器周期阻塞比較匹配。
4)輸出比較寄存器


該寄存器中的16 位數(shù)據(jù)與TCNT1 寄存器中的計(jì)數(shù)值進(jìn)行連續(xù)的比較,一旦數(shù)據(jù)匹配,將
產(chǎn)生一個(gè)輸出比較中斷,或改變OC1x 的輸出邏輯電平。
輸出比較寄存器長(zhǎng)度為16 位。為保證CPU 對(duì)高字節(jié)與低字節(jié)的同時(shí)讀寫,必須使用一
個(gè)8 位臨時(shí)高字節(jié)寄存器TEMP。TEMP 是所有的16 位寄存器共用的,詳見P85 “ 訪問
16 位寄存器” 。
5)輸入捕捉寄存器1 - ICR1H 與ICR1L


當(dāng)外部引腳ICP1(或T/C1的模擬比較器)有輸入捕捉觸發(fā)信號(hào)產(chǎn)生時(shí),計(jì)數(shù)器TCNT1中的
值寫入ICR1 中。ICR1 的設(shè)定值可作為計(jì)數(shù)器的TOP 值。
輸入捕捉寄存器長(zhǎng)度為16 位。為保證CPU 對(duì)高字節(jié)與低字節(jié)的同時(shí)讀寫,必須使用一
個(gè)8 位臨時(shí)高字節(jié)寄存器TEMP。TEMP 是所有的16 位寄存器共用的。在PWM方式下,ICR1的
設(shè)定值將作為計(jì)數(shù)器計(jì)數(shù)上限值。

評(píng)論


技術(shù)專區(qū)

關(guān)閉