Holtek HT66Fx0 HT66F40 Timer Module Application Note
Werbung
Werbung
如何使用 HT66F40 CTM PWM 功能
如何使用 HT66F40 CTM PWM 功能
文件編碼:HA0239T
簡介
HT66Fx0 系列 MCU 提供了一個新的功能單元 TM,即 Timer Modules,整合了 Timer 和 PWM
的功能,提供包括普通 Timer 定時、外部計數、可程式 Duty/Period PWM 輸出或單脈衝輸出、
輸入捕捉等豐富的功能。TM 依據功能可分爲簡單型 TM (CTM)、普通型 TM (STM) 和增強
型 TM (ETM)。
本文即以 HT66F40 為母體 , 通過具體範例說明 CTM 中 PWM 功能的使用方法。
工作原理
CTM 的核心是一個向上計數的 10 位元計數器和兩個比較器,具體結構如下圖示:
C C R P
C o m p a r a t o r P M a t c h
3 - b i t C o m p a r a t o r P T n P F I n t e r r u p t
S Y S / 4
S Y S
/ 1 6
/ 6 4
T B C
R e s e r v e d
0 1 1
1 0 0
1 0 1
1 1 0
0 0 0
0 0 1
0 1 0
1 1 1 b 7 ~ b 9
1 0 - b i t C o u n t - u p C o u n t e r
C o u n t e r C l e a r
T n O C
O u t p u t
C o n t r o l
P o l a r i t y
C o n t r o l
T P n P i n
O u t p u t
T P n _ 0
T P n _ 1
T C K n
T n O N
T n P A U b 0 ~ b 9
T n C C L R
T n M 1 , T n M 0
T n I O 1 , T n I O 0
T n P O L
C o m p a r a t o r A M a t c h
1 0 - b i t C o m p a r a t o r A T n A F I n t e r r u p t
T n C K 2 ~ T n C K 0
C C R A
Compact Type TM Block Diagram
注意:本範例中的 n=0。
計數器的時鐘源可以通過設定 T0CK0~T0CK2 選擇為 f
SYS
/4、f
SYS
、f
H
/16、f
H
/64、f
TBC
或者為 TCK0
輸入。兩個內部比較器:CCRP 即 T0RP 和 CCRA 即 TM0A,用於設定比較基準值,CCRP
有 3 位元寬,只對計數器的高 3 位元進行比較,而 CCRA 的位元數和計數器一樣,可以跟
計數器比較所有的位元。當設定好相關的暫存器 CTM 開始運行後計數器向上計數,系統會
將預先寫入 CCRA 的值與計數器中的值進行比較。計數器在計數溢出或者與設定 CCRA 的
值相等時,可以自動清除為零並產生一個中斷信號,同時系統會根據程式設定產生相應的
輸出信號。計數器中 TM0DH/TM0DL 的值無法改變,但是可以讀出,只能通過設定 T0ON
位元由 0→1 才能清除為零計數器。T0POL 可以對 TP0_0 和 TP0_1 輸出邏輯進行控制,當被
設定為 1,可以強制對 TP0_0 和 TP0_1 輸出邏輯翻轉。
1
如何使用 HT66F40 CTM PWM 功能
HT66F40 輸出管腳介紹:
管腳
TP0_0
TP0_1
功能描述
CCRA/CCRP
匹配輸出管腳
CCRA/CCRP
匹配輸出管腳
TMPC0
T0CP0 :
1 : 使能 TP0 功能
0 : I/O 功能或者其他功能
T0CP1 :
1 : 使能 TP0 功能
0 : I/O 功能或者其他功能
PRM2
TP00PS :
0 : 設定 TP0_0 on PA0
1 : 設定 TP0_0 on PC6
TP01PS :
0 : 設定 TP0_1 on PC5
1 : 設定 TP0_1 on PD5
在 PWM 模式中,計數器可通過設定 T0DPX 來選擇 PWM 的 Period 及 PWM 的 Duty 的設定
方式。當 T0DPX 設定為 0 時,CCRP 控制 PWM 的 Period,CCRA 控制 PWM 的 Duty;當 T0DPX
設定為 1 時,CCRA 控制 PWM 的 Period,CCRP 控制 PWM 的 Duty。當設定了 CTM 工作模
式為 PWM 後,將 T0ON 設定 1,計數器開始計數。一旦主計數器與 CCRA 或 CCRP 匹配,
相應的中斷旗標即 T0AF 或 T0PF 將會被設定 1,若堆疊未滿且相應的中斷使能,程式將進
入相應的中斷服務程式。注意,由於 CCRP 和 CCRA 匹配中斷的入口位元址一樣,需要在
進入中斷服務程式後,判斷中斷旗標位元,來區分兩種中斷。T0AF 和 T0PF 不能自動清除
為零,需要在中斷程式中,程式清除為零。否則不能響應下次中斷。
PWM 模式時序圖:
2
如何使用 HT66F40 CTM PWM 功能
注意:本範例中的 n=0。
在 PWM 模式中,T0CCLR 無作用。
在設定 PWM 模式前,可對 PRM2 暫存器設定相應的位元,將 TP0 管腳設定在不同的 I/O 管
腳。再對 TMPC0 暫存器進行設定,選擇 I/O 相應的 TP0 功能使能。
CTM 工作在 PWM 模式其設定步驟如下表:
步驟
1
2
3
4
5
6
7
操作內容
設定時鐘源
PWM 控制
暫存器
TM0C0
設定 CCRA,CCRP 暫存器值
設定 CTM 工作模式
TM0AH/TM0AL
TM0C0
TM0C1
選擇 CTM 的輸出管腳
使能 CTM 的輸出管腳
設定 TP0 輸出的初始準位
TM0C1
PRM2
TMPC0
TM0C1
設定位元
T0CK0~ T0CK2
T0DPX :
1 : CCRA 控制 Period
CCRP 控制 Duty
0 : CCRA 控制 Duty
CCRP 控制 Period
所有的位元
T0RP0 ~ T0RP2
T0M1, T0M0=10
TP01PS :
0:PC5 輸出 TP0_1
1:PD5 輸出 TP0_1
TP00PS :
0:PA0 輸出 TP0_0
1:PC6 輸出 TP0_0
T0CP1, T0CP0=11
T0OC :
0:輸出低準位元
1:輸出高準位元
功能描述
選擇 ETM 的時鐘源
選擇用 CCRA 還是 CCRP 控制 PWM 的
Period 和 Duty
設定比較暫存器
‘10’為 CTM 工作在 PWM 模式
選擇 CTM 的 TP0_0 和 TP0_1
從哪個 I/O 管腳輸出
使能 CTM 的相應管腳功能
設定 PWM 輸出是 Active High 好還是 Active
Low
3
8
9
10
11
12
如何使用 HT66F40 CTM PWM 功能
設定 TP0 的輸出功能
設定 TP0 的輸出極性
設定中斷允許位元
開啟 CTM
CTM 停止功能
TM0C1
TM0C1
INTC1
MFI0
TM0C0
TM0C0
T0IO1/T0IO0 :
00 : TP0 輸出無效準位
01 : TP0 輸出有效準位
10 : TP0 為 PWM 輸出
11 : undefined
T0POL :
1 : 輸出翻轉
0 : 輸出不翻轉
MF0E
T0AE, T0PE
T0ON 0→1
T0PAU 0→1
T0ON 1→0
設定 TP0_0 和 TP0_ 1 是否為 PWM 輸出
TP0 的輸出
翻轉控制
使能 CTM 和多個功能的中斷
重置計數器,並 CTM 開始工作
CTM 暫停工作,計數器值保持不變
CTM 停止工作,計數器內容不變
Application Circuit
説明:
對 CTM 而言在 PWM 模式,可提供兩個 pins (TP0_0/TP0_1) 輸出脈衝。脈衝輸出可選擇從
TP0_0 (pin1 or pin 12) 輸出或從 TP0_1 (pin13)輸出,或者 TP0_0 和 TP0_1 同時輸出。
4
如何使用 HT66F40 CTM PWM 功能
S/W Flowchart (範例 1)
開 始
關閉CP/AD/LCD功能,
將I/O埠作為普通I/O埠
將PC/PA設定為輸出模式
選擇TP0 I/O輸出管腳並
開啟TP0輸出功能
TM工作在PWM模式,
時鐘源為f
SYS
/4
TP0CCRP匹配清除主計時
器PWM的週期為512us
TP0CCRA初值為64,
即PWM的Duty為64us
循環跳轉
註:上面為 T0DPX 為 0 時,即 CCRP 控制 PWM 的 Period,CCRA 控制 PWM 的 Duty 的流程。
程式説明(範例 1)
本範例是使用 CTM 的 PWM 程式,通過 CTM 的 TP0_0 或 TP0_1 觀察 PWM 輸出。
主程式流程介紹:程式首先所使用到的資料儲存器清除為零初始化。對 CP0C,CP1C 賦值
08H,關閉比較器功能。對 ACERL 和 SCOMEN 清除為零,關閉模擬量輸入功能和 LCD 功
能。PC 和 PA 埠設定為輸出模式,且 PA、PC 需設定為低位元,否則 TP0 輸出邏輯相反。
PRM2 [1:0]=00 為 TP0 從 PA0 和 PC5 輸出,TMPC0[1:0]=11 為使能 TP0 的管腳輸出功能,TM0C0
[6:4]=000 為選擇 CTM 的時鐘源為 f
SYS
/4,TM0C1[7:6]=10 為 CTM 工作在 PWM Mode,
T0DPX=0,即 CCRP 控制 PWM 的 Period,Period 為 512us,CCRA 控制 PWM 的 Duty,Duty
為 64us,當主計數器與 CCRP 和 CCRA 匹配時翻轉 TP0,輸出 PWM。
5
如何使用 HT66F40 CTM PWM 功能
程式範例 (範例 1)
範例 1 程式如附件 pwm1.zip 檔案。
注:上面為 T0DPX = 0,即 CCRP 控制 PWM 的 Period,CCRA 控制 PWM Duty 的程式。
實際輸出波形圖及說明。
PWM DUTY
寬度 64us
PWM 周期
512us
注:上圖為 T0DPX =0,即 CCRP 控制 PWM 的 Period,CCRA 控制 PWM Duty 的輸出波形,
其中 PWM 輸出為 Active High。
S/W Flowchart (範例 2)
注:上面為 T0DPX 為 1 時,即 CCRA 控制 PWM 的 Period,CCRP 控制 PWM 的 Duty 的流程。
6
如何使用 HT66F40 CTM PWM 功能
程式説明(範例 2)
本範例是使用 CTM 的 PWM 程式,通過 CTM 的 TP0_0 或 TP0_1 觀察 PWM 輸出。
主程式流程介紹:程式首先所使用到的資料儲存器清除為零初始化。對 CP0C、CP1C 賦值
08H,關閉比較器功能。對 ACERL 和 SCOMEN 清除為零,關閉模擬量輸入功能和 LCD 功
能。PC 和 PA 埠設定為輸出模式,且 PA、PC 需設定為低位元,否則 TP0 輸出邏輯相反。
PRM2 [1:0]=00 為 TP0 從 PA0 和 PC5 輸出,TMPC0[1:0]=11
為使能 TP0 的管腳輸出功能,TM0C0 [6:4]=000 為選擇 CTM 的時鐘源為 f
SYS
/4,TM0C1[7:6]=10
為 CTM 工作在 PWM Mode,T0DPX 為 1 時,即 CCRA 控制 PWM 的 Period,Period 為 896us,
CCRP 控制 PWM 的 Duty,Duty 為 256us,當主計數器與 CCRP 和 CCRA 匹配時翻轉 TP0,
輸出 PWM。
程式範例(範例 2)
範例 2 程式如附件 pwm2.zip 檔案。
注:上面為 T0DPX =1,即 CCRA 控制 PWM 的 Period,TCCRP 控制 PWM Duty 的程式。
實際輸出波形圖及說明。
PWM 的周
期為 896us
PWM 的 Duty
為 256us
註:上圖為 T0DPX 為 1 時,即 CCRA 控制 PWM 的 Period,CCRP 控制 PWM 的 Duty 的輸出
波形。其中 PWM 輸出為 Active Low。
結論
本文通過上面 CTM PWM Mode 的應用實例,對 CTM PWM Mode 的運用進行了闡述,使用
者可根據具體情況來設定所需要的波形。
7
Herunterladen
Werbung