Transcript TimerA 計時器
[1031] Lecture 5
TimerA
認識Timer A模組
熟悉Timer A的計數模式
認識Timer A的中斷向量
TimerA
Timer A 模組
TimerA 指的是MSP430的一種計時/數
器型態
MSP430F5438 具有兩個TimerA 模組
TA0、TA1
每個TimerA 配置有一個16-bit TimerA
register, TAxR
TimerA
Timer A 模組
除了TAR,還配備有3~5組的16-bit
Capture/Compare Register (CCRx)
MSP430F5438中,TA0配有5組CC
Register,TA1則配有3組。
CCRx提供的Capture功能可用作外部
信號的計數器或是頻率測量
TimerA
Timer A 模組
CCRx提供的Compare 功能則提供特
定時間間隔的事件觸發或是輸出特定
頻率的脈波訊號。
TimerA 的TAxR 和CCRx都具備中斷
功能
TimerA 可以選擇TACLK、SMCLK、
ACLK和INCLK作為時脈來源,並透
過預除器做1/2, 1/4 , 1/8 的除頻。
TimerA
TimerA 的主要控制暫存器
TAxCTL
TAxCCTLn
TAxIV
TAxR
TA0CCR0~TA0CCR4
TA1CCR0~TA0CCR2
TimerA
TimerA 的主要暫存器
TAxCTL
TimerA
TASSEL, Timer A Source Select
BIT9~BIT8,選擇時脈來源。
00b = TAxCLK
01b = ACLK
10b = SMCLK
11b = INCLK
TimerA
ID
BIT7~6,選擇預除器的倍率。
00b = 1
01b = 1/2
10b = 1/4
11b = 1/8
TimerA
MC
BIT5~4,選擇計數器的模式。
00b = STOP
01b = Up mode
10b = Continuous
11b = Up/Down mode
TimerA
Other
TACLR: 設值為1時,清除TAxR內的
值
TAIE: 設值為1時,啟用TAxR的中斷
TAIFG: TAxR的中斷旗標
TimerA
TimerA 的主要暫存器
TAxCCTLn
TimerA
作為計時器使用時會用到:
CCIE: BIT4, CCR Interrupt Enable
設值為1時,啟動TAxCCRn的中斷回
應
CCIFG: BIT0, TAxCCRn的中斷旗標
TimerA
TimerA 的主要暫存器
TAxIV
其值紀錄觸發TimerA中斷的來源
TAxCCR1 : 0x0002
TAxCCR2 : 0x0004
TAxCCR3 : 0x0006
TAxCCR4 : 0x0008
TAR
: 0x000E
TimerA
TimerA 計數模式
UP Mode
須設定TAxCCR0
TAxR的值往上數,當達到TAxCCR0
時,升起CCR0 IFG,TAxR的值歸零,
TAIFG 升起,然後重複。
TimerA
TimerA 計數模式
UP Mode
TimerA
TimerA 計數模式
Continuous Mode
TAxR的值往上數,直到0xFFFF後溢
為歸零,再繼續上數,當達到
TAxCCR0時,不會直接歸零。
TimerA
TimerA 計數模式
Continuous Mode
TimerA
TimerA 計數模式
Up/Down Mode
須設定TAxCCR0的值
TAxR的值往上數,直到TAxCCR0的
值後,再往下數到0x0000,再接著繼
續上數,接著重複。
TimerA
TimerA 計數模式
Up/Down Mode
TimerA
TimerA 中斷向量
一個TAx 的中斷來源有
TAIFG以及CCRx IFG
當中分為兩個中斷向量,一個是由
TAxCCR0 獨佔一個中斷向量
TIMER0_A0_VECTOR
TAIFG、和其餘的TAxCCRn則分享一
個中斷向量
TIMER0_A1_VECTOR
TimerA
TimerA 中斷向量
在共享的TIMER0_A1_VECTOR中,
便要由TAxIV來判斷中斷的來源
在中斷優先權上,
TIMER0_A0_VECTOR 大於
TIMER0_A1_VECTOR
TimerA
TimerA 中斷向量
以Continuous Mode為例
Timer A
MSP430F5438 中斷裝置
Timer A
範例1
利用最基本的配置,觀察TimerA 的動作
範例程式下載↓
http://ares.ee.nchu.edu.tw/Course.files/microlab102/exam
ple/lab5-1.c
Timer A
範例1
選擇ACLK = 32768Hz 作為時脈來源
選擇Up Mode,配置TA0CCR0為65535
配置TA0R = 32767
啟用TAIE中斷,切換D1的狀態,週期為2秒
Timer A
範例2
利用Continuous Mode配置兩個不同週期的動
作
範例程式下載↓
http://ares.ee.nchu.edu.tw/Course.files/microlab102/exam
ple/lab5-2.c
Timer A
範例2
選擇ACLK = 32768Hz 作為時脈來源
選擇Continuous Mode,配置TA0CCR0為
32767
啟用TAIE中斷與CCR0中斷,TAIE切換D1的
狀態,週期為4秒;CCR0切換D2的狀態,週
期為2秒。
Timer A
範例3
利用時脈與模式的選擇,再加上預除器,產
生一個週期為8秒的動作
範例程式下載↓
http://ares.ee.nchu.edu.tw/Course.files/microlab102/exam
ple/lab5-3.c
Timer A
範例3
選擇ACLK = 32768Hz 作為時脈來源
選擇Up Mode,ID_1,配置TA0CCR0為
65535,
啟用CCR0中斷,切換D1的狀態,週期為8秒;
Timer A
練習1
以Continuous Mode,產生TAIFG、CCR0、
CCR1的中斷,分別控制D1、D2和D3。
週期分別為:D1 4秒(2秒進中斷)
D2 2秒(1秒進中斷)
D3 1秒(0.5秒進中斷)
Timer A
練習2
利用模式與時脈控制,產生一個10秒和32秒
的中斷。
[1031] Lecture 5
完成後,找到專案裡面的source file,以附
檔形式寄到 [email protected],並在
主旨中註明姓名、系級與學號,
source檔名稱請利於辨識。
EX:
主旨:
微處理機實習 LAB3 胡國治 電機碩二 7101064123