硬體介紹:
msp430系列微控制器的timera結構複雜,功能強大,適合應用於工業控制,如數位化電機控制,電表和手持式儀表的理想配置。它給開發人員提供了較多靈活的選擇餘地。當pwm 不需要修改占空比和時間時,timera 能自動輸出pwm,而不需利用中斷維持pwm輸出。
msp430f16x和msp430f14x微控制器內部均含有兩個定時器,ta和tb;ta有三個模組,ccr0-ccr2;tb含有ccr0-ccr67個模組;其中ccr0模組不能完整的輸出pwm波形(只有三種輸出模式可用);ta可以輸出完整的2路pwm波形;tb可以輸出6路完整的pwm波形。
定時器的pwm輸出有有8種模式:
輸出模式0 輸出模式:輸出訊號outx由每個捕獲/比較模組的控制暫存器cctlx中的outx位定義,並在寫入該暫存器後立即更新。最終位outx直通。
輸出模式1 置位模式:輸出訊號在tar等於ccrx時置位,並保持置位到定時器復位或選擇另一種輸出模式為止。
輸出模式2 pwm翻轉/復位模式:輸出在tar的值等於ccrx時翻轉,當tar的值等於ccr0時復位。
輸出模式3 pwm置位/復位模式:輸出在tar的值等於ccrx時置位,當tar的值等於ccr0時復位。
輸出模式4 翻轉模式:輸出電平在tar的值等於ccrx時翻轉,輸出週期是定時器週期的2倍。
輸出模式5復位模式:輸出在tar的值等於ccrx時復位,並保持低電平直到選擇另一種輸出模式。
輸出模式6pwm翻轉/置位模式:輸出電平在tar的值等於ccrx時翻轉,當tar值等於ccr0時置位。
輸出模式7pwm復位/置位模式:輸出電平在tar的值等於ccrx時復位,當tar的值等於ccr0時置位。
下圖是增計數模式下的輸出波形(本程式使用的是增模式3和7):
計數模式:
增計數模式
捕獲/比較暫存器ccr0用作timer_a增計數模式的週期暫存器,因為ccr0為16位暫存器,所以該模式適用於定時週期小於65 536的連續計數情況。計數器tar可以增計數到ccr0的值,當計數值與ccr0的值相等(或定時器值大於ccr0的值)時,定時器復位並從0開始重新計數。
連續計數模式
在需要65 536個時鐘週期的定時應用場合常用連續計數模式。定時器從當前值計數到0ffffh後,又從0開始重新計數
增/減計數模式
需要對稱波形的情況經常可以使用增/減計數模式,該模式下,定時器先增計數到ccr0的值,然後反向減計數到0。計數週期仍由ccr0定義,它是ccr0計數器數值的2倍。
ta定時器有比較、捕獲兩種工作方式;比較可以產生pwm波形等,捕獲可以精確的測量時間;這裡用的是比較輸出。
硬體介紹就這麼多了,其他的可以參考msp430x1xx_family_users_guide(使用者指南)。
程式實現:
本程式是直接從msp430f42x移植的,只改動了埠就能正常使用了。由此,430的模組在不同的系列中是通用的,有關暫存器是一樣的;只是也許外部埠不太一樣。
char tapwminit(char clk,char div,char mode1,char mode2)主要是設定tactl暫存器,讓ta工作於增模式,設定時鐘源和分頻;cctlx設定對應的輸出模式;並且開啟相應埠的第二功能。switch(div) //選擇分頻係數
switch(mode1) //設定pwm通道1的輸出模式。
switch(mode2) //設定pwm通道1的輸出模式。
return(1);
}
設定週期函式:設定pwm波形的週期,單位是多少個taclk週期。
void tapwmsetperiod(unsigned int period)工作於增模式時,ta計數到taccr0,設ccr0就完成了週期的設定。
設定占空比:設定ta的pwm輸出的有效電平的時間。
void tapwmsetduty(char channel,unsigned int duty)根據引數分別設定每一路的引數。}
設定占空比,用千分比設定:
* 入口引數:channel: 當前設定的通道號 1/2這個函式用千分比來設定pwm輸出的有效時間。方便程式的使用。percent: pwm有效時間的千分比 (0~1000)
* 出口引數:無
* 說 明: 1000=100.0% 500=50.0% ,依次類推
* 範 例: tapwmsetpermill(1,300)設定pwm通道1方波的占空比為30.0%
tapwmsetpermill(2,825)設定pwm通道2方波的占空比為82.5%
*/void tapwmsetpermill(char channel,unsigned int percent)
有關定時器,ti提供的大量的例程,這些歷程都很簡潔、清晰。需要其他功能可以自己根據例程編寫對應的程式。程式實現就這麼多了,下面說下本程式的使用方法。
使用示例:
使用方式:依然是在工程中加入c檔案;檔案包含h標頭檔案;然後就可以正常使用本函式了。詳細參考示例工程和main.c。
main主要程式如下:
#include本程式呼叫程式庫,產生兩路pwm波形。"msp430x16x.h"
//430暫存器標頭檔案
#include
"tapwm.h"
//ta pwm輸出程式庫標頭檔案
void main()
msp430學習筆記之定時器A
1 定時器a 圖 1 定時器 a 2 定時器a 的四種計數模式 1.停止模式。2.增計數模式。產生兩個中斷標誌 當計數到跟taccr0 一樣的時候,就返回 0,重新計數。當計數到 taccr0 的同時產生乙個中斷標誌 ccifg 而當計數器溢位返回零的同時又同時產生乙個中斷標誌 taifg 如圖 圖...
msp430微控制器應用之定時器 PWM 比較器
1。定時器使用查詢和中斷兩種方式。大多數邏輯晶元輸出0的能力大於輸出1的能力。1 查詢方式 tmsel決定看門狗的工作模式,置一,看門狗工作在定時模式。ssel選擇看門狗定時器的時鐘源。ssel置一。is0is1決定了看門狗定時器的輸出頻率。注意 使用查詢方式時候要清除中斷標誌 main while...
MSP430第十七章 定時器A
timer a是乙個16位的計時器 計數器,最多有7個捕獲 比較暫存器。timer a可以支援多個捕獲 比較 pwm輸出和間隔計時。timer a還具有廣泛的中斷能力,中斷可以從每個捕獲 比較暫存器溢位中產生。timer a功能包括 2.1 16位計時器計數器 16位計時器 計數器暫存器,taxr,...