TimerA 計時器(2)PWM
Download
Report
Transcript TimerA 計時器(2)PWM
[1114] Lecture 6
TimerA 的輸出單元
認識PWM 訊號
熟悉TIMER A的輸出模式
能夠搭配TIMER A的計數模式,
輸出特定的PWM 訊號
Review
Timer A0 模組
Timer A0模組提供 五組CCR 模組,
提供比較、抓取、和輸出的功能
Timer A模組共有三種計數模式,分
別為Up Mode、Continuous Mode 和
Up/Down 模式
Up Mode 和Up/Down Mode 皆以
TA0CCR0的值為上限,需先設定。
Review
Timer A 模組
使用Timer A需要設定
TA0CTL 暫存器,以及有使用到的
TA0CCTLx 暫存器
TIMER A 模組內含的計數暫存器有:
TA0R
TA0CCR0~TA0CCR4.
PWM
PWM 訊號
是一種方波訊號
廣泛得被應用於各種裝置
PWM 訊號有兩種參數:
一個是PWM的頻率,一個是PWM的
Duty cycle。
TimerA
TimerA 的輸出單元
以TA0為例,TA0的每一個CCRx模組
都可以提供一個輸出,為TA0.x。
由電路圖可以找到每個CCRx模組的
輸出腳位
TimerA
使用TimerA 的輸出模組
TAxCTL 設定
TimerA
使用TimerA的輸出單元
設定TAxCCTLn ,以TA0CCR1輸出
為例,則設定TA0CCTL1。
TimerA
TIMER A的輸出模式:
Mode 0: OUT
根據TA0CCTL1.2 (OUT bit) 輸出準位,
準位會隨著OUT bit的值隨時改變。
Mode 1: Set
在SET 模式中,起始值為LOW,第
一次EQU1出現後設值為HIGH,並且
不再改變直到Timer 被重置。
EQU1 意謂 TA0R EQUALs to
TA0CCR1.
TimerA
TIMER A的輸出模式:
Mode 2 : Toggle/RESET
在TOGGLE/RESET模式中,輸出準
位會在TA0R數到EQU1時toggle,並
且在TA0R數到EQU0時重置為LOW。
Mode 3: Set/Reset
在此模式中,輸出準位會在EQU1時
設定為HIGH,在EQU0時設定為
LOW。
TimerA
TIMER A的輸出模式:
Mode 4 : Toggle
在此模式中,輸出準位會在EQU1時
Toggle。特色為PWM週期為Timer周
期的兩倍(Up/Down Counting 除外)。
Mode 5: Reset
輸出準位在EQU1時設為LOW,直到
被設定為其他的OUTPUTMODE並佈
署到輸出。
TimerA
TIMER A的輸出模式:
Mode 6 : Toggle/Set
輸出準位在EQU1時切換狀態,並且
在EQU0時設定為1。
Mode 7: Reset/Set
輸出準位在EQU1時設為LOW,
EQU0時設定為1。
TimerA
TimerA0各計數模式下的輸出行為:
UP Mode,上數到TA0CCR0的值,計
數週期是𝑇𝐴0𝐶𝐶𝑅0 𝐶𝐿𝐾 秒
Continuous Mode,上數到FFFFx,計
數週期為𝐹𝐹𝐹𝐹𝑥 𝐶𝐿𝐾
Up/Down Mode,上數到TA0CCR0,
再下數到0,計數週期為 2𝑇𝐴0𝐶𝐶𝑅0 𝐶𝐿𝐾 。
TimerA
TimerA
Up Mode中的計數模式
Mode2:
f = 𝐶𝐿𝐾 𝑇𝐴0𝐶𝐶𝑅0 ,
duty cycle = 1 − 𝑇𝐴0𝐶𝐶𝑅1
𝑇𝐴0𝐶𝐶𝑅0
Mode3:
f = 𝐶𝐿𝐾 𝑇𝐴0𝐶𝐶𝑅0 ,
duty cycle = 1 − 𝑇𝐴0𝐶𝐶𝑅1
𝑇𝐴0𝐶𝐶𝑅0
TimerA
Up Mode中的計數模式
Mode4:
f = 𝐶𝐿𝐾 2𝑇𝐴0𝐶𝐶𝑅0 ,
duty cycle = 50%
Mode6:
f = 𝐶𝐿𝐾 𝑇𝐴0𝐶𝐶𝑅0 ,
duty cycle = 𝑇𝐴0𝐶𝐶𝑅1
Mode7:
f = 𝐶𝐿𝐾 𝑇𝐴0𝐶𝐶𝑅0 ,
duty cycle = 𝑇𝐴0𝐶𝐶𝑅1
𝑇𝐴0𝐶𝐶𝑅0
𝑇𝐴0𝐶𝐶𝑅0
TimerA
TimerA
Continuous中的計數模式
Mode2:
f = 𝐶𝐿𝐾 𝐹𝐹𝐹𝐹𝑥 ,
duty cycle = 𝑇𝐴0𝐶𝐶𝑅0−𝑇𝐴0𝐶𝐶𝑅1
𝐹𝐹𝐹𝐹𝑥
Mode3:
f = 𝐶𝐿𝐾 𝐹𝐹𝐹𝐹𝑥 ,
duty cycle = 𝑇𝐴0𝐶𝐶𝑅0−𝑇𝐴0𝐶𝐶𝑅1
𝐹𝐹𝐹𝐹𝑥
TimerA
Continuous中的計數模式
Mode4:
1 𝐶𝐿𝐾
f=
,
𝐹𝐹𝐹𝐹𝑥
2
duty cycle = 50%
Mode6:
f = 𝐶𝐿𝐾 𝐹𝐹𝐹𝐹𝑥 ,
duty cycle = 1 −
𝑇𝐴0𝐶𝐶𝑅0−𝑇𝐴0𝐶𝐶𝑅1
𝐹𝐹𝐹𝐹𝑥
TimerA
Continuous中的計數模式
Mode7:
f = 𝐶𝐿𝐾 𝐹𝐹𝐹𝐹𝑥 ,
duty cycle = 1 −
𝑇𝐴0𝐶𝐶𝑅0−𝑇𝐴0𝐶𝐶𝑅1
𝐹𝐹𝐹𝐹𝑥
TimerA
TimerA
Up/Down Mode中的計數模式
Mode2:
1 𝐶𝐿𝐾
f=
,
𝑇𝐴0𝐶𝐶𝑅0
2
duty cycle = 𝑇𝐴0𝐶𝐶𝑅1
Mode3:
1 𝐶𝐿𝐾
f=
𝑇𝐴0𝐶𝐶𝑅0
,
𝑇𝐴0𝐶𝐶𝑅0
2
1
duty cycle = + 𝑇𝐴0𝐶𝐶𝑅1 2𝑇𝐴0𝐶𝐶𝑅0
2
TimerA
Up/Down中的計數模式
Mode4:
1 𝐶𝐿𝐾
f=
,
𝑇𝐴0𝐶𝐶𝑅0
2
duty cycle = 1 − 𝑇𝐴0𝐶𝐶𝑅1
Mode6:
1 𝐶𝐿𝐾
f=
,
𝑇𝐴0𝐶𝐶𝑅0
2
duty cycle = 1 − 𝑇𝐴0𝐶𝐶𝑅1
𝑇𝐴0𝐶𝐶𝑅0
𝑇𝐴0𝐶𝐶𝑅0
TimerA
Up/Down中的計數模式
Mode7:
1 𝐶𝐿𝐾
f=
,
𝑇𝐴0𝐶𝐶𝑅0
2
1
duty cycle = − 𝑇𝐴0𝐶𝐶𝑅1 2𝑇𝐴0𝐶𝐶𝑅0
2
TimerA
實作步驟: 以TA0.1輸出
WDTCTL 設定
TA0CTL 設定時脈與計數模式
設值TA0CCR0
TA0CCTL1設定輸出模式
設值TA0CCR1
TimerA
實作步驟: 以TA0.1輸出
查詢輸出腳位
以P1DIR 打開 對應腳位輸出
以P1SEL 選擇腳位功能
P1SEL.x = 0: P1.x
P1SEL.x = 1: Other function.
TimerA
實作範例
範例6
Up Mode 計數模式
Mode6 toggle/Set
20Hz; 40% duty cycle
TA0.1輸出
TimerA
練習1:
以TA0.1輸出一個20Hz,Duty cycle為
50%的PWM 訊號,計數模式選用Up
mode。
TimerA
練習2:
以TA0.1輸出,計數模式不拘,以按
鍵中斷控制PWM的Duty cycle約為
20%, 40%, 60%, 80%.
[1114] Lecture 6
完成後,找到專案裡面的source file,以附
檔形式寄到 [email protected],並在
主旨中註明姓名、系級與學號,
source檔名稱請利於辨識。
EX:
主旨:
微處理機實習 LAB3 胡國治 電機碩二 7101064123