Upload
valora
View
100
Download
3
Embed Size (px)
DESCRIPTION
4-10 STM Timer/Counter 與比較吻合輸出. HT66F50. STM 內部結構. STM (Standard type TM) 提供 5 種模式. Compare match Timer/Counter PWM Input Capture Single pulse output. STM 模組編號 HT66F50 為 TM2 STM 寬度 16bit TM 輸入腳位 TCK2 TM 輸出腳位 TP2_0, TP2_1 透過特殊功能暫存器 TMnC1 , TMnC2 設定. INCT1 特殊功能暫存器. - PowerPoint PPT Presentation
Citation preview
1
4-10 STM Timer/Counter 與比較吻合輸出
HT66F50
2
STM 內部結構
3
STM (Standard type TM) 提供 5 種模式
• Compare match
• Timer/Counter
• PWM
• Input Capture
• Single pulse output
4
• STM 模組編號 HT66F50 為 TM2
• STM 寬度 16bit
• TM 輸入腳位 TCK2
• TM 輸出腳位 TP2_0, TP2_1
• 透過特殊功能暫存器 TMnC1 , TMnC2 設定
• STM 寬度 16bit , TMnD[15:0]
• 藉由 TnCK[2:0] 選擇七種不同計數時脈• 與 TMnA[15:0] 或 TNRP[7:0] 比較
5
• INCT0 (fig 4-10-3) INT0F INT0E EMI [ 中斷名稱 INT0]
INT1F INT1E EMI [ 中斷名稱 INT1]
CP0F CP0E EMI [ 中斷名稱 Comparator 0]
• INCT1 CP1F CP1E EMI [ 中斷名稱 Comparator 1]
MF0F MF0E EMI [ 中斷名稱 Multi-function 0]
MF1F MF1E EMI [ 中斷名稱 Multi-function 1]
ADF ADE EMI [ 中斷名稱 A/D]
6
• MFIO (fig 4-10-3) T0PF TOPE [ 中斷名稱 TM0P]
T0AF T0AE [ 中斷名稱 TM0A]
T2PF T2PE [ 中斷名稱 TM2P]
T2AF T2AE [ 中斷名稱 TM2A]
7
8
INCT1 特殊功能暫存器ADF MF1F MF0F CP1F ADE MF1F MF0E CP1E
Bit 7 6 5 4 3 2 1 0
MF0E 為致能複功能中斷 enable bits
對應 enable bits : T0PE, T0AE, T2PE, T2AE
與 STM CCRA 比對吻合中斷
9
MFI0 特殊功能暫存器T2AF T2PF T0AF T0PF T2AE T2PE T0AE T0PE
Bit 7 6 5 4 3 2 1 0
10
TM2C0 控制暫存器 ( 表 2-5-18)
n=2 for HT66F50
TnPAU TnCK2 TnCK1 TnCK0 TnON TnRP2 TnRP1 TnRP0 Bit 7 6 5 4 3 2 1 0Bit [7] ; TnPAU = 1, 暫停計數 = 0, 繼續計數Bit [6 5 4] ; TnCK2 TnCK1 TnCK0 = 000 , fINT= fsys/4 =100, fINT= fINT
= 001 , fINT= fsys =101 , 保留 = 010 , fINT= fsys/16 =110 , fINT=TCKn = 011 , fINT= fsys/64 =111 , fINT= TCKn’ Bit [3] ;TnON =1 , 開始計數 =0, 停止計數
11
TM2C0 控制暫存器 TnPAU TnCK2 TnCK1 TnCK0 TnON - - -
Bit 7 6 5 4 3 2 1 0
Bit 2:0 保留 [0 0 0]
12
TM2C1 控制暫存器 TnM1 TnM0 TnIO1 TnIO0 TnOC TnPOL TnDPX TnCCLR
Bit 7 6 5 4 3 2 1 0
Bit [7 6] ; TnM1 TnM0
= 00 , STM 為比對吻合輸出模式 = 01 , STM 為輸入補捉模式 = 10 , STM 為 PWM / single pulse mode = 11 , STM 為計時 / 計數
13
TM2C1 控制暫存器 TnM1 TnM0 TnIO1 TnIO0 TnOC TnPOL TnDPX TnCCLR
Bit 7 6 5 4 3 2 1 0
Bit [5 4] ; TnIO[1:0]: TP2_0, TP2_1 為功能選擇位元
若 STM為比對吻合輸出 T2M[1:0]=00 TP2_0, TP2_1 為輸出 00: 比對吻合時 , 輸出不變 10: 比對吻合時 , 輸出高態 01: 比對吻合時 , 輸出低態 11: 比對吻合時 , 輸出轉態 若 STM為比對輸入補捉 T2M[1:0]=01 TP2_0, TP2_1 為輸入 00: 在 TP2_0, TP2_1輸入為正緣時 , 記錄 TM2D 01: 在 TP2_0, TP2_1輸入為負緣時 , 記錄 TM2D
10: 在 TP2_0, TP2_1輸入為負緣及正緣時 , 記錄 TM2D 11: 停止輸入補捉功能 若 STM為 PWM/Single Pulse Mode, T2M[1:0]=10 00: 強制輸出為非啟動 10: PWM輸出 01: 強制輸出為啟動 11: Single Pulse Mode 若 STM為計時/ 計數 , T2M[1:0]=11 無作用
14
TM2C1 控制暫存器 TnM1 TnM0 TnIO1 TnIO0 TnOC TnPOL TnDPX TnCCLR
Bit 7 6 5 4 3 2 1 0
Bit [3] ; TnOC 輸出準位控制位元 若 STM為比對吻合輸出 TP2M[1:0]=00 1: 首次比對吻合前 , 輸出維持在 1 0:首次比對吻合前 , 輸出維持在 0 若 STM為 PWM/Single Pulse Mode, T2M[1:0]=10 1: 輸出啟動準位為 1 0: 輸出啟動準位為 0
Bit [2] ; TnPOL 輸出極性控制位元 1: 輸出反向 0: 輸出不反向 Bit [0] ; TnCCLR =1, 當比較器 A 比對吻合時清除計數器 =0, 當比較器 p 比對吻合時或計數器溢位清除計數器
15
4-10.ASM (fig 4-10-2)
;PROGRAM : 4-10.ASM ;FUNCTION: GENERATE TONE DO-DO BY TIME INTERRUPT SKILL OF STM#INCLUDE HT66F50.INC#INCLUDE 4-10.INC;===========================================================MY_DATA .SECTION 'DATA' ;==DATA SECTION==DEL1 DB ? ;DELAY LOOP COUNT1DEL2 DB ? ;DELAY LOOP COUNT2DEL3 DB ? ;DELAY LOOP COUNT3COUNT DB ? ;PITCH COUNTSTACK_A DB ? ;STACK BUFFER FOR ACCSTACK_STATUS DB ? ;STACK BUFFER FOR PSW;===========================================================
16
STM is 16 bit timer
MY_CODE .SECTION 'CODE' ;==PROGRAM SECTION==ORG 00H ;HT-66FX0 RESET VECTORJMP INITORG 14H ;HT-66FXX STM INTERRUPT VECTORJMP ISR_STM
INIT: CLR SPK_PORTC ;CONFIG SPK_PORT AS OUTPUT MODESET MF0E ;ENABLE [STM] INTERRUPTSET T2AE ;ENABLE T2CCRA COMPARE INTERRUPTCLR TM2C0 ;fINT=fSYS/4=1MHz
;Bit [6 5 4] ; TnCK2 TnCK1 TnCK0 ;= 000 , fINT= fsys/4
MOV A,11000001B ;STM IS IN THE TIMER/COUNTER MODE, ;Bit[7 6]=11 , STM 為計時 / 計數
MOV TM2C1,A ; Bit[0]=1, 當比較器 A 比對吻合時清除計數器
;AND TP2CNT IS CLEARED BY TP2CCRA ; COMPARE MATCH
CLR T2AF ; 清除 MF0F 與 T2AE 中斷旗標CLR MF0FSET EMI ; 中斷總開關
17
MAIN: MOV A,TAB_PITCHMOV TBLP,A ;INITIAL TABLE POINTERMOV A,15MOV COUNT,A ;SET COUNTER FOR PITCH TABLE
NEXT_PITCH:TABRDL TM2AL ;LOAD PITCH TO TP2CCRA PE-LOAD REGISTERMOV A,TBLHMOV TM2AH,A ;PERLOAD TP2CCRA FOR HIGH 8-BITSET T2ON ;START GTPU COUNTINGMOV A,40 ;DELAY 0.4 SEC FOR EACH TONECALL DELAYCLR T2ON ;STOP STM COUNTINGINC TBLP ;UPDATE TABLE POINTERSDZ COUNT ;WERE ALL PITCH PLAYER?JMP NEXT_PITCH ;NO,NEXT PITCHJMP MAIN ;YES,RESTART
18
;===================================================================; STM INTERRUPT SERVICE ROUTINE;===================================================================ISR_STM:
MOV STACK_A,A ;PUSH AMOV A,STATUSMOV STACK_STATUS,A ;PUSH STATUSCLR T2AFMOV A,00010000BXORM A,SPK_PORT ;CONPLEMENT PC.4MOV A,STACK_STATUSMOV STATUS,A ;POP STATUSMOV A,STACK_A ;POP ARETI
19
;========================================================================================; PROC : DELAY; FUNC : DEALY ABOUT ACC*10mS @fSYS=4MHz; PARA : ACC : DELAY FACTOR; REG : DEL1,DEL2,DEL3;======================================================================================== DELAY PROC
MOV DEL1,A ;SET DEL1 COUNTERDEL_1: MOV A,30
MOV DEL2,A ;SET DEL2 COUNTER DEL_2: MOV A,110
MOV DEL3,A ;SET DEL3 COUNTERDEL_3: SDZ DEL3 ;DEL3 DOWN COUNT
JMP DEL_3 SDZ DEL2 ;DEL2 DOWN COUNTJMP DEL_2 SDZ DEL1 ;DEL1 DOWN COUNTJMP DEL_1RET
DELAY ENDP
20
ORG LASTPAGE ;DEFINE LASTPAGETAB_PITCH: ;PITCH CONSTANT FOR fINT=fSYS/4
DC fSYS/(523*2*4) ;DO TONE TIME COUNSTANTDC fSYS/(587*2*4) ;RE TONE TIME COUNSTANTDC fSYS/(659*2*4) ;MI TONE TIME COUNSTANTDC fSYS/(698*2*4) ;FA TONE TIME COUNSTANTDC fSYS/(785*2*4) ;SO TONE TIME COUNSTANTDC fSYS/(880*2*4) ;LA TONE TIME COUNSTANTDC fSYS/(998*2*4) ;TI TONE TIME COUNSTANTDC fSYS/(523*2*2*4) ;DO. TONE TIME COUNSTANTDC fSYS/(587*2*2*4) ;RE. TONE TIME COUNSTANTDC fSYS/(659*2*2*4) ;ME. TONE TIME COUNSTANTDC fSYS/(698*2*2*4) ;FA. TONE TIME COUNSTANTDC fSYS/(785*2*2*4) ;SO. TONE TIME COUNSTANTDC fSYS/(880*2*2*4) ;LA. TONE TIME COUNSTANTDC fSYS/(998*2*2*4) ;TI. TONE TIME COUNSTANTDC fSYS/(523*2*4*4) ;DO. TONE TIME COUNSTANTEND
21
• 當 CPU 執行 DELAY 副程式時 STM 仍繼續計數
• 待其計數值與 TM2A 暫存器所設定之參數產生比對吻合時 以中斷方式讓 CPU 跳至014h 執行