电竞比分网-中国电竞赛事及体育赛事平台

分享

定時器計數(shù)器基本知識

 ylw527 2010-09-21
 

定時器計數(shù)器

內(nèi)容

    
FAQ-ID = timcou-nnnn
0001:  定時器計數(shù)器基本知識 [通用]
timcou
-0001
定時器計數(shù)器基本知識 [通用]
Q1
微控制器的內(nèi)部定時器計數(shù)器是如何操作的?
A1
下面介紹了定時器計數(shù)器的基本知識。

(1) 引言

近幾年,幾乎所有的微控制器都有定時器計數(shù)器。
有些是具有特殊應用的,如變頻器控制,不過下面描述的是一般類型的定時器計數(shù)器。
"定時器計數(shù)器"這個名字表示了以下兩個功能的結合: 定時器和(事件)計數(shù)器。
定時器和計數(shù)器功能基本上都是使用相同的邏輯實現(xiàn)的,而且這兩個功能都包含輸入的計數(shù)信號。
下面簡單概括了定時器與計數(shù)器的差別。

計數(shù)器: 計數(shù)并指示在任意間隔內(nèi)輸入信號(事件)的個數(shù)。



定時器: 對規(guī)定間隔內(nèi)輸入的信號個數(shù)進行計數(shù),用來指示經(jīng)歷的時間。



換句話說,定時器和計數(shù)器功能在使用對象和輸入的信號方面不相同。
幾乎在所有情況下,可以從內(nèi)部系統(tǒng)時鐘劃分出來的時鐘信號或是外部輸入時鐘信號中選擇輸入的時鐘信號,這些時鐘信號可以用于定時器或計數(shù)器。

(2) 根據(jù)計數(shù)器操作不同進行分類

根據(jù)計數(shù)功能不同,定時器計數(shù)器大致可以分為以下幾類。
- 執(zhí)行簡單計數(shù)操作的自由運行的計數(shù)器
一旦啟動計數(shù)操作,它就一直保持運行。
有時候,不能停止計數(shù)操作。

- 計數(shù)期間可以停止的計數(shù)器,并且可以設置為任意計數(shù)周期
當計數(shù)器達到某個確定值時,可以輸出信號、將計數(shù)值清零,或者停止計數(shù)器操作。
自由運行的計數(shù)器邏輯更簡單,所以有時它們會用在比較便宜的微控制器中。
盡管可以停止鐘表定時器,但在正常操作期間一般不需要停止(因為會產(chǎn)生時序問題),所以大多數(shù)操作都和自由運行的計數(shù)器一樣。
不過,可以為微控制器設計各種方便使用的方法,包括可以在任何時候?qū)Χ〞r器停止操作或清零。

(3)定時器計數(shù)器的附加功能

當定時器計數(shù)器僅用于計數(shù)時,應用有一定局限性。
增強定時器計數(shù)器功能的一種方法是增加一個或兩個寄存器。
一般,添加的寄存器是:

- 比較寄存器
- 捕捉寄存器

有時候,也使用單獨的寄存器,但一般是一個比較寄存器和一個捕捉寄存器交替使用。

比較寄存器用于設置與定時器計數(shù)器的計數(shù)值相比較的值。
當比較寄存器中設置的值與計數(shù)值匹配時,會產(chǎn)生以下操作:

- 發(fā)出中斷
- 修改輸出電平
- 對定時器清零

在使用這類操作時,在任何時間間隔(基于定時器計數(shù)器時鐘的精確度)都可能會產(chǎn)生中斷或者修改信號電平。



從外部輸入源輸入信號時,捕捉寄存器用于捕捉定時器計數(shù)器的計數(shù)值。
該操作由硬件實現(xiàn),因此捕捉的定時器計數(shù)器的值比用軟件讀取的更準確。



(當用軟件執(zhí)行類似操作時,從外部輸入信號時會產(chǎn)生中斷,由中斷服務程序調(diào)用捕捉定時器計數(shù)器值的功能。
通常,在中斷產(chǎn)生后,由于響應中斷,時序會發(fā)生一些變化。
有時候也需要中斷服務程序讀取定時器計數(shù)器的值。
因此,捕捉的值與影響外部輸入信號的實際時序值有所不同。)

(4)定時器計數(shù)器的用途(操作)

(a)定時器計數(shù)器主要用于測量和輸出,包括以下用途(操作)。

[1] 測量功能
- 外部事件計數(shù)器
- 脈沖寬度測量,時間間隔測量

[2] 輸出功能
- 間隔定時器
- 方波輸出
- 脈沖輸出
- PWM輸出
- 單脈沖輸出
- 載波生成


(b)具體功能描述

- 外部事件計數(shù)器
對外部輸入的信號(事件)進行計數(shù)是定時器計數(shù)器最簡單的一種操作。
定時器計數(shù)器可以對已經(jīng)輸入的信號進行計數(shù),并且通過程序可以定期讀取計數(shù)值。
下面圖示的例子是對每10分鐘內(nèi)到達的人數(shù)進行計數(shù)。



另一種用法是將定時器計數(shù)器與比較寄存器結合使用,當外部信號(事件)的個數(shù)達到規(guī)定值(這時會產(chǎn)生中斷)時匯報情況。
例如,當最大容量為24個蘋果的盒子里裝滿24個蘋果時定時器計數(shù)器可以匯報這一情況。
在下面圖示的例子中,設置比較寄存器(數(shù)值為1~24),并當計數(shù)器的值(0~23)達到蘋果個數(shù)時產(chǎn)生中斷。
產(chǎn)生該中斷時,就用一只空盒子替換這只已經(jīng)裝滿的盒子。



- 脈沖寬度測量,時間間隔測量
該功能用于測量外部輸入信號(事件)之間的間隔,這是捕捉寄存器的基本用途。
下面圖示的例子用于檢測電機的rpm(每分鐘轉(zhuǎn)數(shù))。
光遮斷器用于檢測裝在電機轉(zhuǎn)軸上的圓盤中的空槽。
光遮斷器的輸出信號是外部輸入信號(事件),用于捕捉操作的觸發(fā)輸入。
每次輸入觸發(fā)信號時,捕捉計數(shù)值,并裝入捕捉寄存器,然后將計數(shù)器清零。
可以從捕捉寄存器中讀取該值以確定旋轉(zhuǎn)次數(shù),這樣可以計算出rpm。



- 間隔定時器
間隔定時器
該功能在規(guī)定的間隔會產(chǎn)生中斷,是定時器最簡單的一種操作。
該操作使用比較寄存器。
只要定時器計數(shù)器的值與比較寄存器的值匹配就會產(chǎn)生中斷,并對定時器計數(shù)器清零,再次從零開始計數(shù)。
反復執(zhí)行該操作,可以在規(guī)定的時間間隔設置中斷的發(fā)生。



- 方波輸出
方波輸出的基本操作與間隔定時器相同。
唯一的區(qū)別是輸出了方波。
在下面的例子中,每當定時器計數(shù)器的值與比較寄存器設置的值匹配時就產(chǎn)生中斷,在將定時器輸出取反后,重復操作。



- 脈沖輸出
與方波輸出功能不同,脈沖輸出功能不僅可以改變周期還可以修改占空比。
實現(xiàn)該功能要使用兩個比較寄存器: 一個用于指定周期,另一個用于指定占空比。
這兩個比較寄存器的用法不同。
當定時器計數(shù)器的值與設置周期的比較寄存器的值匹配時,可以將該定時器計數(shù)器清零,但當它與設置占空比的比較寄存器的值匹配時,修改輸出但定時器計數(shù)器不清零。
一旦定時器計數(shù)器的值與某個比較寄存器的值匹配,就會發(fā)出中斷請求。
下圖是一個脈沖輸出操作的例子。
可以使用該功能輸出方波,與下面描述的PWM輸出功能相似。
使用脈沖輸出,為了改變占空比而修改比較寄存器的值時,可能會出現(xiàn)時序問題。
時序不正確時,與設置占空比的比較寄存器的兩次匹配(或者根本就不匹配)可能出現(xiàn)在同一個周期內(nèi),從而產(chǎn)生不期望出現(xiàn)的定時器輸出的取反操作。



- PWM輸出
雖然這種操作產(chǎn)生與脈沖輸出操作相同的方波,但它的主要目的是修改占空比。
通常,PWM輸出周期是固定的,由定時器計數(shù)器的位計數(shù)決定周期。
在這種情況下,使用一個比較寄存器來指定占空比。
與脈沖輸出不同,PWM輸出有明確的目的,這樣在修改占空比時對比較寄存器寫入時序沒有約束。
下圖顯示了操作時序。
這里顯示的是初始啟動操作時序。
剛啟動時在第一個周期輸出是不活躍的(圖中的低電平)。
當定時器計數(shù)器溢出時,輸出是活躍的,而當定時器計數(shù)器與比較寄存器匹配時輸出又變?yōu)椴换钴S的。
通過重復該操作輸出PWM信號。



下圖示例說明了為了修改占空比重寫比較寄存器值的情況。
盡管在周期內(nèi)用"n"覆蓋"m",但操作結果并沒有受影響,直到產(chǎn)生下一個溢出。



盡管有些定時器計數(shù)器可以修改周期,但在這種情況中周期結束是指與設置周期的比較寄存器匹配的時候,而不是定時器計數(shù)器溢出的時候。

- 單脈沖輸出
與上面例子中描述的連續(xù)重復的輸出功能相反,該功能僅輸出單脈沖。
該功能使用兩個比較寄存器。
一個用于指定產(chǎn)生觸發(fā)與輸出脈沖之間的時間,另一個用于指定脈沖寬度。
下面的時序圖描述了該操作過程。
當外部輸入觸發(fā)信號時,將定時器計數(shù)器清零,并從零開始重新計數(shù)。
當定時器計數(shù)器的值與指定輸出時序的比較寄存器的值(m)匹配時,通過定時器輸出脈沖。
當定時器計數(shù)器的值與指定脈沖寬度比較寄存器的值(n)匹配時,停止脈沖輸出。



- 載波生成
該功能用于產(chǎn)生紅外遙控操作信號,需要兩個定時器計數(shù)器結合使用。
由于該功能是定時器計數(shù)器的應用而不是定時器計數(shù)器本身的操作,所以它和其它功能有本質(zhì)區(qū)別。
紅外遙控以載波頻率通過發(fā)出ON/OFF序列的紅外線進行操作。
因此,使用一個定時器計數(shù)器來產(chǎn)生與載波頻率匹配的信號(通過脈沖輸出操作)。
另一個定時器計數(shù)器對紅外遙控信號(間隔定時器操作)的長度(時間)進行計數(shù)。
指示已經(jīng)經(jīng)歷了規(guī)定時間的間隔定時器的輸出信號用于采樣遙控輸出信號。
當采樣結果為"1"時輸出載波,為"0"時不輸出。
下面的時序圖描述了該操作過程。
在這個例子中,已經(jīng)由一個定時器計數(shù)器生成了載波信號。
當產(chǎn)生匹配中斷時,用于間隔定時器操作的比較寄存器的值被重寫,而且以k (OFF時間)、m (ON時間)然后n (OFF時間)的順序被設置。
[1]  當k匹配時,采樣輸出數(shù)據(jù)值(1)。
[2]  由定時器輸出啟動載波信號輸出。
[3]  在匹配發(fā)生后產(chǎn)生的中斷服務中將"m" 寫入到比較寄存器,將"0"寫入到輸出數(shù)據(jù)。
[4]  當m匹配時,采樣輸出數(shù)據(jù)值(0)。
[5]  停止載波信號輸出。
[6]  在匹配發(fā)生后產(chǎn)生的中斷服務中更新比較寄存器,并輸出數(shù)據(jù)值。
重復上述操作執(zhí)行該操作。

    本站是提供個人知識管理的網(wǎng)絡存儲空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點。請注意甄別內(nèi)容中的聯(lián)系方式、誘導購買等信息,謹防詐騙。如發(fā)現(xiàn)有害或侵權內(nèi)容,請點擊一鍵舉報。
    轉(zhuǎn)藏 分享 獻花(0

    0條評論

    發(fā)表

    請遵守用戶 評論公約

    類似文章 更多