新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > AVR單片機(學習ing)-ATMEGA16的定時/計數器

        AVR單片機(學習ing)-ATMEGA16的定時/計數器

        作者: 時間:2016-11-27 來源:網絡 收藏
        2)T/C0計數寄存器—TCNT0



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


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


        • Bit 1 – OCIE0: T/C0 輸出比較匹配中斷使能
        當OCIE0 和狀態寄存器的全局中斷使能位I 都為”1” 時,T/C0 的輸出比較匹配中斷使能。
        當T/C0 的比較匹配發生,即TIFR 中的OCF0 置位時,中斷服務程序得以執行。
        • Bit 0 – TOIE0: T/C0 溢出中斷使能
        當TOIE0 和狀態寄存器的全局中斷使能位I 都為”1” 時,T/C0 的溢出中斷使能。當T/C0
        發生溢出,即TIFR 中的TOV0 位置位時,中斷服務程序得以執行。
        5)定時/計數器中斷標志寄存器—TIFR


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


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

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

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


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






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


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


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


        3)T/C1計數寄存器 - TCNT1H 與TCNT1L




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


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


        當外部引腳ICP1(或T/C1的模擬比較器)有輸入捕捉觸發信號產生時,計數器TCNT1中的
        值寫入ICR1 中。ICR1 的設定值可作為計數器的TOP 值。
        輸入捕捉寄存器長度為16 位。為保證CPU 對高字節與低字節的同時讀寫,必須使用一
        個8 位臨時高字節寄存器TEMP。TEMP 是所有的16 位寄存器共用的。在PWM方式下,ICR1的
        設定值將作為計數器計數上限值。

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 奇台县| 海林市| 南城县| 财经| 区。| 北流市| 庆安县| 鄄城县| 金川县| 道孚县| 东乌| 油尖旺区| 商河县| 雷州市| 张家界市| 左贡县| 祁阳县| 陆川县| 余江县| 舒兰市| 翁牛特旗| 乌什县| 兴仁县| 常德市| 仪征市| 隆林| 新密市| 曲松县| 肇源县| 日喀则市| 通河县| 五华县| 朝阳区| 阳新县| 天柱县| 昌江| 湘西| 常州市| 盖州市| 池州市| 图们市|