msp430單片機實現(xiàn)PWM
本文引用地址:http://m.butianyuan.cn/article/201611/316571.htm
msp430單片機利用Timer_A或者Timer_B可以很好的實現(xiàn)產(chǎn)生任意PWM信號。
Timer_A定時器的計數(shù)器工作在增計數(shù)方式,輸出采用模式7(復位/置位模式),則可以利用CCR0控制PWM波形的周期,用某個寄存器CCRx控制占空比。原理圖如下:(注:這幅圖片為網(wǎng)上下載,他用的是Timer_B定時器,故輸出TBx)
摘錄下面一段:http://www1.ti.com.cn/customer/article/article12161.asp
將Timer_B配置為16-bit、up模式。在這種模式下計數(shù)器計數(shù)至CCR0,然后復位從0開始重新計數(shù)。給CCR0賦值255也就意味著計數(shù)器的長度為8bits。CCR1和TB1用于產(chǎn)生正弦波,CCR2和TB2用于產(chǎn)生直流電平。輸出模式都選為模式7,即PWM復位/置位模式。如圖2所示,在這種模式下,復位后每一個定時器的輸出都為高電平,直到計數(shù)器達到各自的CCRx值時變?yōu)榈碗娖剑斢嫈?shù)器達到CCR0時再置位。也就是說CCRx的值決定了各自正脈沖的寬帶。若CCRx的值是變化的,就可以產(chǎn)生可變寬度的脈沖,下文中的正弦波就是用這種辦法產(chǎn)生的;若不變則產(chǎn)生的是固定寬度的脈沖,下文中的直流電平就是這樣產(chǎn)生的。最后SMCLK用作Timer_B的時鐘源。系統(tǒng)采用32768Hz的鐘表晶振,通過采用內(nèi)部硬件鎖頻環(huán)FLL(frequency-locked-loop),來校準DCO(DigitalControlOscillator)頻率為系統(tǒng)提供MCLK/SMCLK時鐘。
示例程序:
#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
}
評論