320 likes | 496 Vues
[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 模組
E N D
[1031]Lecture 5 • TimerA • 認識Timer A模組 • 熟悉TimerA的計數模式 • 認識Timer A的中斷向量
TimerA • Timer A 模組 • TimerA指的是MSP430的一種計時/數器型態 • MSP430F5438 具有兩個TimerA模組TA0、TA1 • 每個TimerA配置有一個16-bit TimerA register, TAxR
TimerA • Timer A 模組 • 除了TAR,還配備有3~5組的16-bitCapture/Compare Register(CCRx) • MSP430F5438中,TA0配有5組CCRegister,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~TA0CCR4TA1CCR0~TA0CCR2
TimerA • TimerA的主要暫存器 • TAxCTL
TimerA • TASSEL, Timer A Source Select • BIT9~BIT8,選擇時脈來源。 • 00b=TAxCLK01b=ACLK10b = SMCLK11b =INCLK
TimerA • ID • BIT7~6,選擇預除器的倍率。 • 00b=101b=1/210b = 1/411b =1/8
TimerA • MC • BIT5~4,選擇計數器的模式。 • 00b=STOP01b=Upmode 10b = Continuous11b =Up/Down mode
TimerA • Other • TACLR: 設值為1時,清除TAxR內的值 • TAIE:設值為1時,啟用TAxR的中斷 • TAIFG:TAxR的中斷旗標
TimerA • TimerA的主要暫存器 • TAxCCTLn
TimerA • 作為計時器使用時會用到: • CCIE:BIT4, CCRInterrupt Enable設值為1時,啟動TAxCCRn的中斷回應 • CCIFG:BIT0, TAxCCRn的中斷旗標
TimerA • TimerA的主要暫存器 • TAxIV其值紀錄觸發TimerA中斷的來源 • TAxCCR1 : 0x0002 • TAxCCR2 : 0x0004 • TAxCCR3 : 0x0006 • TAxCCR4 : 0x0008 • TAR : 0x000E
TimerA • TimerA計數模式 • UPMode • 須設定TAxCCR0 • TAxR的值往上數,當達到TAxCCR0時,升起CCR0 IFG,TAxR的值歸零,TAIFG 升起,然後重複。
TimerA • TimerA計數模式 • UPMode
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為例
TimerA • MSP430F5438 中斷裝置
Timer A • 範例1 • 利用最基本的配置,觀察TimerA的動作 • 範例程式下載↓http://ares.ee.nchu.edu.tw/Course.files/microlab102/example/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/example/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/example/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。 • 週期分別為:D14秒(2秒進中斷)D2 2秒(1秒進中斷)D3 1秒(0.5秒進中斷)
Timer A • 練習2 • 利用模式與時脈控制,產生一個10秒和32秒的中斷。
[1031]Lecture 5 • 完成後,找到專案裡面的source file,以附檔形式寄到 kchu@ares.ee.nchu.edu.tw,並在主旨中註明姓名、系級與學號,source檔名稱請利於辨識。EX: • 主旨: 微處理機實習 LAB3 胡國治 電機碩二 7101064123