新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > msp430單片機(jī)實(shí)現(xiàn)PWM

msp430單片機(jī)實(shí)現(xiàn)PWM

作者: 時(shí)間:2016-11-11 來源:網(wǎng)絡(luò) 收藏
PWM信號(hào)是一種具有固定周期(T)不定占空比(t)的數(shù)字信號(hào),如下圖所示。如果PWM信號(hào)的占空比隨時(shí)間變化,那么通過濾波之后的輸出信號(hào)將是幅度變化的模擬信號(hào)。因此通過控制PWM信號(hào)的占空比,就可以產(chǎn)生不同的模擬信號(hào)。

本文引用地址:http://butianyuan.cn/article/201611/316571.htm

msp430單片機(jī)利用Timer_A或者Timer_B可以很好的實(shí)現(xiàn)產(chǎn)生任意PWM信號(hào)。

Timer_A定時(shí)器的計(jì)數(shù)器工作在增計(jì)數(shù)方式,輸出采用模式7(復(fù)位/置位模式),則可以利用CCR0控制PWM波形的周期,用某個(gè)寄存器CCRx控制占空比。原理圖如下:(注:這幅圖片為網(wǎng)上下載,他用的是Timer_B定時(shí)器,故輸出TBx)

摘錄下面一段:http://www1.ti.com.cn/customer/article/article12161.asp

將Timer_B配置為16-bit、up模式。在這種模式下計(jì)數(shù)器計(jì)數(shù)至CCR0,然后復(fù)位從0開始重新計(jì)數(shù)。給CCR0賦值255也就意味著計(jì)數(shù)器的長度為8bits。CCR1和TB1用于產(chǎn)生正弦波,CCR2和TB2用于產(chǎn)生直流電平。輸出模式都選為模式7,即PWM復(fù)位/置位模式。如圖2所示,在這種模式下,復(fù)位后每一個(gè)定時(shí)器的輸出都為高電平,直到計(jì)數(shù)器達(dá)到各自的CCRx值時(shí)變?yōu)榈碗娖?,?dāng)計(jì)數(shù)器達(dá)到CCR0時(shí)再置位。也就是說CCRx的值決定了各自正脈沖的寬帶。若CCRx的值是變化的,就可以產(chǎn)生可變寬度的脈沖,下文中的正弦波就是用這種辦法產(chǎn)生的;若不變則產(chǎn)生的是固定寬度的脈沖,下文中的直流電平就是這樣產(chǎn)生的。最后SMCLK用作Timer_B的時(shí)鐘源。系統(tǒng)采用32768Hz的鐘表晶振,通過采用內(nèi)部硬件鎖頻環(huán)FLL(frequency-locked-loop),來校準(zhǔn)DCO(DigitalControlOscillator)頻率為系統(tǒng)提供MCLK/SMCLK時(shí)鐘。

示例程序:

#include
void main(void)
{
WDTCTL = WDTPW + WDTHOLD; // Stop WDT
P1DIR |= 0x0C; // P1.2 and P1.3 output
P1SEL |= 0x0C; // P1.2 and P1.3 TA1/2 otions


CCR0 = 512-1; // PWM Period
CCTL1 = OUTMOD_7; // CCR1 reset/set
CCR1 = 384; // CCR1 PWM duty cycle
CCTL2 = OUTMOD_7; // CCR2 reset/set
CCR2 = 128; // CCR2 PWM duty cycle


TACTL = TASSEL_2 + MC_1; // SMCLK, up mode


_BIS_SR(LPM0_bits); // Enter LPM0
}



關(guān)鍵詞: msp430單片機(jī)PW

評(píng)論


技術(shù)專區(qū)

關(guān)閉