21
1 4-10 STM Timer/Counter 與 與與與與與與 HT66F50

4-10 STM Timer/Counter 與比較吻合輸出

  • 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

Page 1: 4-10 STM Timer/Counter  與比較吻合輸出

1

4-10 STM Timer/Counter 與比較吻合輸出

HT66F50

Page 2: 4-10 STM Timer/Counter  與比較吻合輸出

2

STM 內部結構

Page 3: 4-10 STM Timer/Counter  與比較吻合輸出

3

STM (Standard type TM) 提供 5 種模式

• Compare match

• Timer/Counter

• PWM

• Input Capture

• Single pulse output

Page 4: 4-10 STM Timer/Counter  與比較吻合輸出

4

• STM 模組編號 HT66F50 為 TM2

• STM 寬度 16bit

• TM 輸入腳位 TCK2

• TM 輸出腳位 TP2_0, TP2_1

• 透過特殊功能暫存器 TMnC1 , TMnC2 設定

Page 5: 4-10 STM Timer/Counter  與比較吻合輸出

• STM 寬度 16bit , TMnD[15:0]

• 藉由 TnCK[2:0] 選擇七種不同計數時脈• 與 TMnA[15:0] 或 TNRP[7:0] 比較

5

Page 6: 4-10 STM Timer/Counter  與比較吻合輸出

• 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

Page 7: 4-10 STM Timer/Counter  與比較吻合輸出

• MFIO (fig 4-10-3) T0PF TOPE [ 中斷名稱 TM0P]

T0AF T0AE [ 中斷名稱 TM0A]

T2PF T2PE [ 中斷名稱 TM2P]

T2AF T2AE [ 中斷名稱 TM2A]

7

Page 8: 4-10 STM Timer/Counter  與比較吻合輸出

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 比對吻合中斷

Page 9: 4-10 STM Timer/Counter  與比較吻合輸出

9

MFI0 特殊功能暫存器T2AF T2PF T0AF T0PF T2AE T2PE T0AE T0PE

Bit 7 6 5 4 3 2 1 0

Page 10: 4-10 STM Timer/Counter  與比較吻合輸出

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, 停止計數

Page 11: 4-10 STM Timer/Counter  與比較吻合輸出

11

TM2C0 控制暫存器 TnPAU TnCK2 TnCK1 TnCK0 TnON - - -

Bit 7 6 5 4 3 2 1 0

Bit 2:0 保留 [0 0 0]

Page 12: 4-10 STM Timer/Counter  與比較吻合輸出

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 為計時 / 計數

Page 13: 4-10 STM Timer/Counter  與比較吻合輸出

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 無作用

Page 14: 4-10 STM Timer/Counter  與比較吻合輸出

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 比對吻合時或計數器溢位清除計數器

Page 15: 4-10 STM Timer/Counter  與比較吻合輸出

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;===========================================================

Page 16: 4-10 STM Timer/Counter  與比較吻合輸出

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 ; 中斷總開關

Page 17: 4-10 STM Timer/Counter  與比較吻合輸出

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

Page 18: 4-10 STM Timer/Counter  與比較吻合輸出

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

Page 19: 4-10 STM Timer/Counter  與比較吻合輸出

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

Page 20: 4-10 STM Timer/Counter  與比較吻合輸出

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

Page 21: 4-10 STM Timer/Counter  與比較吻合輸出

21

• 當 CPU 執行 DELAY 副程式時 STM 仍繼續計數

• 待其計數值與 TM2A 暫存器所設定之參數產生比對吻合時 以中斷方式讓 CPU 跳至014h 執行