Presentation is loading. Please wait.

Presentation is loading. Please wait.

4-9 CTM Timer/Counter Moded 控制實驗

Similar presentations


Presentation on theme: "4-9 CTM Timer/Counter Moded 控制實驗"— Presentation transcript:

1 4-9 CTM Timer/Counter Moded 控制實驗
HT66F70A

2 TM 計時模組 三大類 CTM精簡型 / STM 標準型 / ETM 增強型 五個功能 計時器/計數器 輸入補捉 比對吻合輸出 單脈衝輸出
PWM

3 CTM是所有家族成員具備的計時模組,具備三種操作模式仍可以應付一般需求。
三種操作模式為: 1.比較吻合輸出 2.計時/計數 3.脈波調變輸出模式 同時可搭配一支外部輸入腳位,以及一、兩支的輸出腳位進行運作。

4 CTM 內部結構

5 CTM 內部結構 (fig 2-5-3) 10位元上數計數器TMnD 兩個內部暫存器TMnA(10bit) TnRP (3bit)
TMnC0、TMnC1 特殊功暫存器 兩個內部暫存器CCRP(3bit)與CCRA(10bit)所組成。 由TnCK[2:0]位元的設定控制選擇七種不同的時脈信號作為10-BIT上數計數器計數時脈源 操作模式 輸出特性

6 當啟動計數時(設定TnON=「1」),上數計數器會先清除為零,接著根據所選擇的時脈開始往上遞增。
計數過程中,比較器A與P會將其數值分別與 TMnA(3bit)、TnRP(10bit)的設定值進行比較,不同的工作模式在比對吻合時會產生不同的動作。 HT66F70A有兩組CTM計時模-TM0、TM3。

7

8 CTM 輸出入腳位 TH66F70A 計時模組: TM0, TM3 TM輸入腳位: TCK0, TCK3 TM輸出腳位: TP0,TP0B

9 TMnC0 控制暫存器(表2-5-7) Bit [7] : TnPAU TMn計時/計數暫停控制位元
TnPAU TnCK2 TnCK1 TnCK0 TnON TnRP2 TnRP1 TnRP0 Bit Bit [7] : TnPAU TMn計時/計數暫停控制位元 = 1 :暫停計數 = 0 :繼續計數(當此位元為0時,TMnD由原暫停時的數值繼續往上數) Bit [6 5 4] : TnCK[2:0] TMn計數時脈選擇位元 = 000 : fINT = fsys/ = 100 : fINT = fINT = 001 : fINT = fsys = 101 : 保留 = 010 : fINT = fsys/ = 110 : fINT = TCK時脈正緣 = 011 : fINT = fsys/ = 111 : fINT = TCK時脈負緣 Bit [3] : TnON TMn計時/計數控制位元 = 1 : 開始計數(當此位元為1時,TMnD先歸零後再開始往上計數) = 0 : 停止計數

10 TMnC0 控制暫存器 TnPAU TnCK2 TnCK1 TnCK0 TnON TnRP2 TnRP1 TnRP0
Bit Bit [2 1 0] : TnRP[2:0] : CCRP三位元暫存器 = 000 : 週期 = 1024x fINT = 100 : 週期 = 512x fINT-1 = 001 : 週期 = 128x fINT = 101 : 週期 = 640x fINT-1 = 010 : 週期 = 256x fINT = 110 : 週期 = 768x fINT-1 = 011 : 週期 = 384x fINT = 111 : 週期 = 896x fINT-1

11 TMnC1 控制暫存器(表2-5-8) Bit [7 6] : TnM[1:0] 模式控制位元
TnM1 TnM0 TnIO1 TnIO0 TnOC TnPOL TnDPX TnCCLR Bit Bit [7 6] : TnM[1:0] 模式控制位元 = 00 : 比對吻合輸出模式 = 01 : 未定義 = 10 : PWM = 11 : 計時/計數

12 TMnC1 控制暫存器 操作於 compare match, 比對吻合輸出模式時 TnM[1:0]=00)
TnM1 TnM0 TnIO1 TnIO0 TnOC TnPOL TnDPX TnCCLR Bit Bit [5 4] : TnIO [ 1 : 0 ] Tpn_0、Tpn_1 輸出功能 操作於 compare match, 比對吻合輸出模式時 TnM[1:0]=00) = 00 : 當比對吻合 輸出不變 = 10 : 當比對吻合 輸出 1 = 01 : 當比對吻合 輸出 0 = 11 : 當比對吻合 輸出 轉態 操作於 「PWM」 模式時 (TnM[1:0]=10) 00 : 強制為非啟動, 01強制為啟動, 10 PWM輸出, 11未定義 操作於 Timer/Counter 模式時 TnM[1:0]=11, 無作用)

13 TMnC1 控制暫存器 Bit [3] : TnOC Tpn、TpnB (輸出控制位元)
TnM1 TnM0 TnIO1 TnIO0 TnOC TnPOL TnDPX TnCCLR Bit Bit [3] : TnOC Tpn、TpnB (輸出控制位元) 操作於比對吻合輸出模式(compare match output)模式時(TnM[1:0]=00) = 1 : 在首次比對吻前 輸出維持1 = 0 : 在首次比對吻前 輸出維持0 操作於「PWM」模式時 (TnM[1:0]=10) = 1 : 啟動準位1 = 0 : 啟動準位0 Bit [2] : TnPOL Tpn、TpnB(輸出極性控制位元) = 1 : 反向後再輸出 = 0 : 直接輸出

14 TMnC1 控制暫存器 Bit [1] : TnDPX PWM模式之Duty與period切換控制位元
TnM1 TnM0 TnIO1 TnIO0 TnOC TnPOL TnDPX TnCCLR Bit Bit [1] : TnDPX PWM模式之Duty與period切換控制位元 = 1 : TnRP控制Duty,TMnA控制Period = 0 : TnRP控制Period,TMnA控制Duty Bit [0] : TnCCLR TMn清除控制位元(TMn counter Clear Control Bit) = 1 : 當比較器A比對吻合時即清除計數器 = 0 : 當比較器P比對吻合或計數器溢位(若TnRP=0)時清除計數器

15 計數時脈源由系統本身TnCK[2:0] 稱為Timer
計數時脈源由外部輸入TnCK[2:0] 稱為Counter 啟動TMnD 計數 (1) 若TnCCLR=1, 當TMnD=TMnA, CTM 會設定TNAF=1, 並將TMnD歸零後繼續計數 (2) 若TnCCLR=0, 當TMnD=TMnA, CTM 會設定TNAF=1,並繼續計數,當TMnD[9:7]計數值與TnPF=1,將TMnD歸零後繼續計數

16 MFIO暫存器 NAME BIT 7 6 5 4 3 2 1 MFIO T2AF T2PF TnAF TnPF T2AE T2PE T0AE
MFIO T2AF T2PF TnAF TnPF T2AE T2PE T0AE T0PE

17 4-9.CTM Timer/Counter Moded控制實驗
#include <HT66F70A.h> #define SEG_Port _pc #define SEG_PortC _pcc typedef unsigned char u8; typedef unsigned short u16; const u8 SEG_TAB[] = //七段顯示器顯示碼(共陰) { 0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x67 }; void PAUSE(void); //函式原型宣告

18 主程式 void main() { u8 i; _wdtc=0b10101111; //關閉看門狗計時器
SEG_PortC=0x00; //規劃SEG_Port為輸出模式 _tm0c0=0b ; //T0CK[2:0]=010,fINT=fH=fSYS(8MHz)/16 _tm0c1=0b ; //TM0為Counter/Timer模式,TMA吻合清除 _tm0al=1000%256; _tm0ah=1000/256; //TM0A=1000,1000/fINT=2mS while(1) { for(i=0;i<10;i++) { SEG_Port=SEG_TAB[i]; //查表並顯示於七段 PAUSE(); //延遲1秒 }

19 副程式 void PAUSE(void) { u16 i; _t0on=1; //啟動TM0計數
for(i=0;i<500;i++) //500*2mS=1 Sec { while(!_t0af); //等待T0AF=1 _t0af=0; //清除T0AF } _t0on=0; //停止TM0計數


Download ppt "4-9 CTM Timer/Counter Moded 控制實驗"

Similar presentations


Ads by Google