當(dāng)前位置:首頁(yè) > 單片機(jī) > 單片機(jī)
[導(dǎo)讀] AVR有三個(gè)定時(shí)計(jì)數(shù)器,其中定時(shí)計(jì)數(shù)器0和定時(shí)計(jì)數(shù)器2是8位的,定時(shí)計(jì)數(shù)器1是16位。在學(xué)習(xí)AVR定時(shí)計(jì)數(shù)器時(shí),剛開(kāi)始被一大堆的寄存器搞的有點(diǎn)暈了,后來(lái)認(rèn)真的把Datasheet中的有關(guān)寄存器先看了一遍,再重

 

AVR有三個(gè)定時(shí)計(jì)數(shù)器,其中定時(shí)計(jì)數(shù)器0和定時(shí)計(jì)數(shù)器2是8位的,定時(shí)計(jì)數(shù)器1是16位。

在學(xué)習(xí)AVR定時(shí)計(jì)數(shù)器時(shí),剛開(kāi)始被一大堆的寄存器搞的有點(diǎn)暈了,后來(lái)認(rèn)真的把Datasheet中的有關(guān)寄存器先看了一遍,再重新看定時(shí)計(jì)數(shù)器的內(nèi)容才理清了。這里做個(gè)總結(jié)吧,加深自己的印象。

定時(shí)計(jì)數(shù)器0和定時(shí)計(jì)數(shù)器2基本上是相同的。以定時(shí)計(jì)數(shù)器0來(lái)總結(jié)它的幾種工作模式的不同。

 

普通模式:不做介紹,和51里面是一模一樣的。

 

CTC模式:當(dāng)寄存器TCNT0與OCR0相等時(shí)(即匹配),OC0按照COM0[1:0]的值相應(yīng)的改變(置位,清零或取反)。同時(shí)TCNT0清零,TCNT0從0x00重新開(kāi)始計(jì)數(shù),當(dāng)計(jì)數(shù)結(jié)果和下一個(gè)OCR0寄存器中值相等時(shí)又發(fā)生匹配。發(fā)生匹配時(shí),匹配比較標(biāo)志OCF0置位,即OCF0=1,可申請(qǐng)匹配比較中斷。

 

快速PWM模式:當(dāng)寄存器TCNT0與OCR0匹配相等時(shí),OC0按照COM0[1:0]的值相應(yīng)的置位或清零。與CTC模式不同的是TCNT0不會(huì)清零,而是繼續(xù)計(jì)數(shù),直到計(jì)數(shù)為0XFF,此時(shí)OC0會(huì)發(fā)生清零或置位。同時(shí)TCNT0從0x00重新開(kāi)始計(jì)數(shù),當(dāng)計(jì)數(shù)結(jié)果和下一個(gè)OCR0寄存器中值相等時(shí)又發(fā)生匹配。與CTC模式不同發(fā)生匹配時(shí),OCF0不會(huì)置位。TCNT0計(jì)數(shù)到0XFF時(shí),計(jì)數(shù)溢出標(biāo)志TOV0置位,即TOV0=1,此時(shí)可申請(qǐng)溢出中斷。

 

相位可調(diào)PWM模式:此模式下,定時(shí)計(jì)數(shù)器是雙向計(jì)數(shù)器(可加可減),,從0x00一直加到0xff,在下一個(gè)計(jì)數(shù)脈沖到來(lái)時(shí)從0xff一直減到0x00。當(dāng)COM0[1:0]=2時(shí),在加的過(guò)程中,若發(fā)生匹配,清零OC0;在減的過(guò)程中,若發(fā)生匹配,置位OC0。(當(dāng)COM0[1:0]=3時(shí),和COM0[1:0]=2的情況相反)。與快速PWM模式不同的是,當(dāng)TCNT0計(jì)數(shù)到0xff時(shí)不會(huì)影響到OC0的輸出,而是當(dāng)從0xff減到0x00的過(guò)程中與下一個(gè)OCR0寄存器的值匹配時(shí),OC0發(fā)生改變(加的過(guò)程是清零,那這時(shí)應(yīng)該是置位)。當(dāng)定時(shí)計(jì)數(shù)器計(jì)數(shù)到0x00時(shí),計(jì)數(shù)溢出標(biāo)志TOV0置位,即TOV0=1,此時(shí)可申請(qǐng)溢出中斷。

 

以上幾種工作模式同時(shí)適合定時(shí)計(jì)數(shù)器0,1,2。只是定時(shí)計(jì)數(shù)器1的功能有所增強(qiáng)。下面將會(huì)討論。

 

星期二我看一個(gè)程序時(shí)候,那個(gè)程序是工作在快速PWM模式,選擇計(jì)數(shù)溢出中斷。當(dāng)時(shí)我還想為什么不選擇匹配中斷而要去等到計(jì)數(shù)溢出才中斷豈不是占用時(shí)間了,還去問(wèn)老師了,現(xiàn)在看來(lái)是多么的愚蠢!快速PWM模式根本就沒(méi)有匹配中斷!

 

定時(shí)計(jì)數(shù)器0和2,在CTC模式下,頻率和相位可調(diào)。PWM模式下,頻率不可調(diào)。由頻率計(jì)數(shù)公司就可以看出。不論是CTC還是PWM都可以通過(guò)調(diào)節(jié)OCRn的值去調(diào)節(jié)占空比。(關(guān)于產(chǎn)生PWM波頻率的計(jì)算公式將會(huì)在后文給出的,關(guān)于定時(shí)計(jì)數(shù)器的各種寄存器可自己去查看Datasheet)

 

下面是定時(shí)計(jì)數(shù)器1比0和2的增強(qiáng)功能總結(jié):

1)定時(shí)計(jì)數(shù)器1比0和2有許多增強(qiáng)功能。在PWM模式時(shí),可產(chǎn)生頻率和相位都可調(diào)的PWM波,這時(shí)8位定時(shí)計(jì)時(shí)器0和2所做不到的,因?yàn)槎〞r(shí)計(jì)數(shù)器1具備輸入捕獲功能,即具備輸入捕獲寄存器ICR1,在PWM模式下,ICR1中可存放一個(gè)top值,就是這個(gè)top值可以改變PWM波的頻率。這點(diǎn)可在頻率計(jì)算公司看出。

 

2)定時(shí)計(jì)數(shù)器1有兩個(gè)輸出比較單元和兩個(gè)輸出比較寄存器OCR1A和OCR1B,因此可同時(shí)產(chǎn)生2路頻率相同,占空比不同的PWM波形。占空比的調(diào)整當(dāng)然由OCR1A和OCR1B來(lái)確定。波形在OC1A和OC1B引腳輸出。

 

3)定時(shí)計(jì)數(shù)器1具有輸入捕獲單元。可以精確的記錄外部事件發(fā)生的時(shí)間。捕獲外部事件的信號(hào)由引腳ICP1輸入。當(dāng)輸入捕獲信號(hào)產(chǎn)生,TCNT1中的計(jì)數(shù)值將被寫(xiě)入輸入捕獲寄存器ICR1(ICR1H,ICR1L)中去。輸入捕獲信號(hào)也可由模擬比較器的AC0單元的輸出信號(hào)來(lái)觸發(fā)。關(guān)于觸發(fā)的方式有兩種,當(dāng)定時(shí)計(jì)數(shù)器1的控制寄存器B(即TCCR1B)中的第六位ICESE=0,下降沿觸發(fā);ICESE=1,上升沿觸發(fā)。當(dāng)滿(mǎn)足觸發(fā)條件時(shí),輸入捕獲單元開(kāi)始捕獲該事件的發(fā)生。利用該功能可以來(lái)對(duì)輸入波形頻率的測(cè)量。如果我沒(méi)有記錯(cuò)的話(huà)在51里面定時(shí)計(jì)數(shù)器也有這個(gè)功能的,可以有GATE門(mén)控位的設(shè)置來(lái)達(dá)到這個(gè)目的。51里面,把GATE置位,那么此時(shí)定時(shí)計(jì)數(shù)器的啟動(dòng)由INTX(X=0或1)引腳和TRX(X=0或1)來(lái)決定??上劝裈RX置位,讓定時(shí)計(jì)數(shù)的啟動(dòng)條件還欠缺INTX為高電平(即先讓INTX處于低電平),等待INTX變?yōu)楦唠娖剑敲创藭r(shí)定時(shí)計(jì)數(shù)器啟動(dòng)了,等到INTX變?yōu)榈碗娖綍r(shí)定時(shí)計(jì)數(shù)器又被關(guān)閉了,那么此時(shí)定時(shí)計(jì)數(shù)器計(jì)數(shù)值即為一個(gè)PWM脈寬了。

 

說(shuō)到這里突然想到了在AVR里面,定時(shí)計(jì)數(shù)器都有自己的分頻器,這里也可以先設(shè)置定時(shí)計(jì)數(shù)器的啟動(dòng)條件都滿(mǎn)足,但設(shè)置為無(wú)分頻,此時(shí)相當(dāng)于人沒(méi)有了心臟,定時(shí)計(jì)數(shù)器此時(shí)是不工作的??梢栽谄渌裁礂l件(如一個(gè)外部中斷里面)滿(mǎn)足時(shí),給定時(shí)計(jì)數(shù)器分頻,此時(shí)定時(shí)計(jì)數(shù)器才工作!

 

剛才說(shuō)到中斷,與51不同的是,AVR對(duì)中斷標(biāo)志位清“0”的操作時(shí)向該位寫(xiě)“1”。即AVR清除中斷標(biāo)志位是軟件寫(xiě)“1”。值得提醒的是在設(shè)置中斷寄存器的時(shí)候,最好先清除中斷標(biāo)志位,然后馬上將相應(yīng)的中斷允許控制位值“1”。

 

這里還需要說(shuō)明的是上文提及到的定時(shí)計(jì)數(shù)器波形輸出引腳和輸入捕獲引腳,在使用之前,必須要先設(shè)置好它的方向寄存器是輸出還是輸入。如果是輸入的話(huà)還需要考慮是否需要上拉電阻。

 

說(shuō)了這么多,差點(diǎn)忘記了個(gè)人覺(jué)得比較重要的一點(diǎn)。定時(shí)計(jì)數(shù)器1是16位的,它的每一個(gè)16位的寄存器分別配備了一個(gè)8位的TEMP寄存器,用來(lái)臨時(shí)性的保留寄存器的高8位數(shù)據(jù)。MCU從16位寄存器讀數(shù)據(jù)時(shí)時(shí),低8位被送到MCU的同時(shí),高8位被送到TEMP,當(dāng)MCU讀高8位時(shí)取的是TEMP中的數(shù)據(jù)。從MCU寫(xiě)數(shù)據(jù)16位數(shù)據(jù)寄存器時(shí),高8位寫(xiě)到TEMP,寫(xiě)低8位的時(shí)候,低8位與TEMP中的高8位組成16位數(shù)據(jù)寫(xiě)到16位寄存器中。即讀的時(shí)候是先讀低8位,再讀高8位;寫(xiě)的時(shí)候是先寫(xiě)高8位,再寫(xiě)低8位。

 

最后給出定時(shí)計(jì)數(shù)器常用3種工作模式的設(shè)置方法(以定時(shí)計(jì)數(shù)器1為例):

普通模式:

1,根據(jù)需要設(shè)置時(shí)鐘源,即設(shè)置控制寄存器TCCR1B。

2,根據(jù)定時(shí)時(shí)間和時(shí)鐘源確定定時(shí)器的初值寫(xiě)入到數(shù)據(jù)寄存器TCNT1H和TCNT1B。

3,設(shè)置中斷時(shí)能位。

4,選擇中斷號(hào),編寫(xiě)中斷服務(wù)程序。注意需要在中斷服務(wù)程序中重載初值寫(xiě)入到TCNT1H和TCNT1B(和51一樣的)!

CTC模式:

1,若輸出波形,設(shè)置端口OC1A或OC1B為輸出方式。

2,設(shè)置波形發(fā)生模式,選擇需要的時(shí)鐘源,即TCCR1B。

3,設(shè)置輸出模式,即TCCR1A。

4,根據(jù)需要設(shè)置上限值top(前面提到過(guò)的)寫(xiě)入到輸出比較寄存器OCR1A。

5,根據(jù)公式計(jì)算頻率。

快速PWM模式:

1,若輸出波形,設(shè)置端口OC1A或OC1B為輸出方式。

2,設(shè)置PWM波形模式,選擇需要的時(shí)鐘源,即TCCR1A和TCCR1B。

3,設(shè)置波形的頻率,即OCR1A。

4,設(shè)置波形占空比,即OCCR1B。

6,根據(jù)頻率公式計(jì)算頻率。

 

 

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀(guān)點(diǎn),本站亦不保證或承諾內(nèi)容真實(shí)性等。需要轉(zhuǎn)載請(qǐng)聯(lián)系該專(zhuān)欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請(qǐng)及時(shí)聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車(chē)的華為或?qū)⒋呱龈蟮莫?dú)角獸公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

倫敦2024年8月29日 /美通社/ -- 英國(guó)汽車(chē)技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車(chē)工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車(chē)。 SODA V工具的開(kāi)發(fā)耗時(shí)1.5...

關(guān)鍵字: 汽車(chē) 人工智能 智能驅(qū)動(dòng) BSP

北京2024年8月28日 /美通社/ -- 越來(lái)越多用戶(hù)希望企業(yè)業(yè)務(wù)能7×24不間斷運(yùn)行,同時(shí)企業(yè)卻面臨越來(lái)越多業(yè)務(wù)中斷的風(fēng)險(xiǎn),如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報(bào)道,騰訊和網(wǎng)易近期正在縮減他們對(duì)日本游戲市場(chǎng)的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)開(kāi)幕式在貴陽(yáng)舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國(guó)國(guó)際大數(shù)據(jù)產(chǎn)業(yè)博覽會(huì)上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱(chēng),數(shù)字世界的話(huà)語(yǔ)權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點(diǎn): 有效應(yīng)對(duì)環(huán)境變化,經(jīng)營(yíng)業(yè)績(jī)穩(wěn)中有升 落實(shí)提質(zhì)增效舉措,毛利潤(rùn)率延續(xù)升勢(shì) 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長(zhǎng) 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競(jìng)爭(zhēng)力 堅(jiān)持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競(jìng)爭(zhēng)優(yōu)勢(shì)...

關(guān)鍵字: 通信 BSP 電信運(yùn)營(yíng)商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺(tái)與中國(guó)電影電視技術(shù)學(xué)會(huì)聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會(huì)上宣布正式成立。 活動(dòng)現(xiàn)場(chǎng) NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長(zhǎng)三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會(huì)上,軟通動(dòng)力信息技術(shù)(集團(tuán))股份有限公司(以下簡(jiǎn)稱(chēng)"軟通動(dòng)力")與長(zhǎng)三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉