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