專注電子技術(shù)學(xué)習(xí)與研究
當(dāng)前位置:單片機(jī)教程網(wǎng) >> MCU設(shè)計(jì)實(shí)例 >> 瀏覽文章

單片機(jī)avr 定時(shí)器/計(jì)數(shù)器(一)

作者:海盜工作室   來源:本站原創(chuàng)   點(diǎn)擊數(shù):  更新時(shí)間:2014年04月28日   【字體:
單片機(jī)的定時(shí)器/計(jì)數(shù)器實(shí)質(zhì) 就是一個(gè)加1計(jì)數(shù)器,通過軟件對(duì)其控制寄存器的操作,來實(shí)現(xiàn)定時(shí),計(jì)數(shù)功能及轉(zhuǎn)換。 當(dāng)定時(shí)器/計(jì)數(shù)器為定時(shí)工作方式時(shí),計(jì)數(shù)器的加1信號(hào)由振蕩器的分頻信號(hào)產(chǎn)生,即每過一個(gè)機(jī)器周期,計(jì)數(shù)器加1,直至計(jì)滿溢出為止。 當(dāng)定時(shí)器/計(jì)數(shù)器為計(jì)數(shù)工作方式時(shí),通過引腳T0和T1對(duì)外部信號(hào)計(jì)數(shù),當(dāng)電平變化時(shí),計(jì)數(shù)器加1.定時(shí)器/計(jì)數(shù)器使用靈活,用途廣泛,如延時(shí),物理信號(hào)的測(cè)量,信號(hào)的周期,頻率,脈寬測(cè)量,產(chǎn)生定時(shí)脈沖信號(hào),捕捉輸入,還可以實(shí)現(xiàn)PWM輸出,用于D/A ,電動(dòng)機(jī)的無極調(diào)速等。

       ATmega16 三個(gè)定時(shí)器/計(jì)數(shù)器T/C0,T/C1,T/C2,其中T/C0,T/C2為8位定時(shí)器/計(jì)數(shù)器,T/C1是16位定時(shí)器/計(jì)數(shù)器。

    定時(shí)器/計(jì)數(shù)器相關(guān)寄存器:TIMSK:定時(shí)計(jì)數(shù)中斷屏蔽寄存器,TIFR:定時(shí)計(jì)數(shù)器中斷標(biāo)志寄存器,ASSR:異步狀態(tài)寄存器,

                                               SFIOR:特殊功能寄存器   

    T/C0相關(guān)寄存器 :TCCR0 :控制寄存器,TCNT0:計(jì)數(shù)寄存器,OCR0:輸出比較寄存器

    T/C1相關(guān)寄存器: TCCR1A,TCCR1B:控制寄存器,TCNT1(TCNT1H,TCNT1L)計(jì)數(shù)寄存器,OCR1A,OCR1B:輸出比較寄存器,

                                ICR1:輸入捕捉寄存器

    T/C2相關(guān)寄存器:TCCR2:控制寄存器 , TCNT2:計(jì)數(shù)寄存器,OCR2:輸出比較寄存器,  

 

 

 


 

  溢出中斷:以定時(shí)器/計(jì)數(shù)器T/C0為例,T/C0為8位定時(shí)器,計(jì)數(shù)范圍為十六進(jìn)制0x00-0xFF,對(duì)應(yīng)的十進(jìn)制為0-255,由0開始計(jì)數(shù),

                   當(dāng)計(jì)數(shù)值超過255時(shí) 就產(chǎn)生一個(gè)中斷,中斷標(biāo)準(zhǔn)寄存器TIFR的TOV0(T/C0的溢出標(biāo)準(zhǔn)位)置1。

比較中斷:當(dāng)T/C0的計(jì)數(shù)寄存器TCNT0的數(shù)值,和預(yù)置的OCR0的數(shù)值一致時(shí),將產(chǎn)生一個(gè)比較中斷,中斷標(biāo)志寄存器TIFR的

                   OCF0(T/C0的比較中斷標(biāo)志位)置1。

T/C0溢出中斷使能過程:

           1、中斷總使能: SREG=0x80;

           2、T/C0的溢出中斷使能:將中斷使能寄存器的T/C0溢出中斷使能位TOIE0置1,c語言: TIMSK|=0x01;當(dāng)產(chǎn)生溢出中斷時(shí),硬件自動(dòng)將中斷標(biāo)志寄存器TIFR的TOVO(T/C0溢出中斷標(biāo)志)位置1,用于軟件查詢判斷,執(zhí)行完中斷處理程序后,由硬件自動(dòng)清0。

 

 


普通模式:  普通模式(WGM01:0 = 0) 為最簡(jiǎn)單的工作模式。在此模式下計(jì)數(shù)器不停地累加。計(jì)到8 比特的最大值后(TOP = 0xFF),

                     由于數(shù)值溢出,計(jì)數(shù)器簡(jiǎn)單地返回到最小值0x00 重新開始
CTC(比較匹配時(shí)清0定時(shí)器):在CTC 模式(WGM01:0 = 2) 下OCR0 寄存器用于調(diào)節(jié)計(jì)數(shù)器的分辨率。當(dāng)計(jì)數(shù)器的數(shù)值TCNT0等于

                     OCR0時(shí)計(jì)數(shù)器清零。OCR0定義了計(jì)數(shù)器的TOP值,亦即計(jì)數(shù)器的分辨率。
快速PWM :快速PWM 模式(WGM01:0 = 3) 可用來產(chǎn)生高頻的PWM 波形?焖貾WM 模式與其他PWM模式的不同之處是其單斜坡

                     工作方式。計(jì)數(shù)器從BOTTOM計(jì)到MAX,然后立即回到BOTTOM重新開始

相位修正PWM :相位修正PWM 模式(WGM01:0 = 1) 為用戶提供了一個(gè)獲得高精度相位修正PWM 波形的方法。此模式基于雙斜坡

                      操作。計(jì)時(shí)器重復(fù)地從BOTTOM 計(jì)到MAX,然后又從MAX倒退回到BOTTOM。

 

 


定時(shí)器/計(jì)數(shù)器的工作必須指定時(shí)鐘源,無時(shí)鐘源定時(shí)器不能工作。時(shí)鐘源有內(nèi)部時(shí)鐘源和外部時(shí)鐘源,由CS02,CS01,CS00位選擇。

外部時(shí)鐘源由T0引腳輸入。

 

 


OC0為T/C0的輸出引腳,即設(shè)置當(dāng)TNCT0和OCR0數(shù)值相等時(shí),外部輸出引腳OC0上的電平變化。

TCNT0-計(jì)數(shù)寄存器:通過它 寄存器可以直接對(duì)計(jì)數(shù)器的8 位數(shù)據(jù)進(jìn)行讀寫訪問。
OCR0-輸出比較寄存器  : 包含一個(gè)8 位的數(shù)據(jù),不間斷地與計(jì)數(shù)器數(shù)值TCNT0 進(jìn)行比較。匹配事件可以用來產(chǎn)生輸出比較中斷,

                                       或者用來在OC0 引腳上產(chǎn)生波形。

T/C1 真正的16位定時(shí)器/計(jì)數(shù)器,能夠輸出16位的PWM,有兩個(gè)獨(dú)立的輸出比較單元。具有輸入捕捉功能。

捕捉輸入:用于精確捕捉一個(gè)外部事件的發(fā)生,記錄事件發(fā)生的時(shí)間印記,如:精確測(cè)量脈沖寬度。

 

 


FOC1A/FOC1B只有當(dāng)WGM13:0指定為非PWM模式時(shí)被激,對(duì)其寫1后,波形發(fā)生器將立即進(jìn)行比較操作。

ICES1:該位選擇使用ICP1 上的哪個(gè)邊沿觸發(fā)捕獲事件。ICES 為"0” 選擇的是下降沿觸發(fā)輸入捕捉; ICES1 為"1” 選擇的是邏輯電平的

           上升沿觸發(fā)輸入捕捉。

 

 

 

 

 

 


輸出比較寄存器1A :16位,由OCR1AH,OCR1AL組成

輸出比較寄存器1B:16位,由OCR1BH,OCR1BL組成

          該寄存器中的16 位數(shù)據(jù)與TCNT1 寄存器中的計(jì)數(shù)值進(jìn)行連續(xù)的比較,一旦數(shù)據(jù)匹配,將
產(chǎn)生一個(gè)輸出比較中斷,或改變OC1x 的輸出邏輯電平。
輸入捕捉寄存器:16位,由ICR1H,ICR1L組成,當(dāng)外部引腳ICP1(或T/C1的模擬比較器)有輸入捕捉觸發(fā)信號(hào)產(chǎn)生時(shí),計(jì)數(shù)器TCNT1中

                             的值寫入ICR1 中。ICR1 的設(shè)定值可作為計(jì)數(shù)器的TOP 值。

關(guān)閉窗口

相關(guān)文章