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