MSP430 定時器輸出PWM波形

2021-07-15 07:54:01 字數 3068 閱讀 1830

硬體介紹:

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)

switch(div) //選擇分頻係數

switch(mode1) //設定pwm通道1的輸出模式。

switch(mode2) //設定pwm通道1的輸出模式。

return(1);

}

主要是設定tactl暫存器,讓ta工作於增模式,設定時鐘源和分頻;cctlx設定對應的輸出模式;並且開啟相應埠的第二功能。

設定週期函式:設定pwm波形的週期,單位是多少個taclk週期。

void tapwmsetperiod(unsigned int period)

工作於增模式時,ta計數到taccr0,設ccr0就完成了週期的設定。

設定占空比:設定ta的pwm輸出的有效電平的時間。

void tapwmsetduty(char channel,unsigned int duty)

}

根據引數分別設定每一路的引數。

設定占空比,用千分比設定:

* 入口引數:channel: 當前設定的通道號  1/2

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)

這個函式用千分比來設定pwm輸出的有效時間。方便程式的使用。

有關定時器,ti提供的大量的例程,這些歷程都很簡潔、清晰。需要其他功能可以自己根據例程編寫對應的程式。程式實現就這麼多了,下面說下本程式的使用方法。

使用示例:

使用方式:依然是在工程中加入c檔案;檔案包含h標頭檔案;然後就可以正常使用本函式了。詳細參考示例工程和main.c。

main主要程式如下:

#include 

"msp430x16x.h"

//430暫存器標頭檔案

#include

"tapwm.h"

//ta pwm輸出程式庫標頭檔案

void main()

本程式呼叫程式庫,產生兩路pwm波形。

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,...