TI中文支持网
TI专业的中文技术问题搜集分享网站

如何用一个定时器TA产生两路频率相同,占空比可调,具有一定相位差的PWM信号?

想问一下,如何用一个定时器产生两路PWM信号,最主要的要求是两路信号要有一定的相位差,比如相位差45°,频率相同,占空比可调这个都比较容易,但是相位差这个不知道该怎么弄?

灰小子:

选择合适的PWM输出引脚,比如第1路PWM想用TA0控制,第2路PWM用TA1控制

查器件手册:

TA0支持的引脚有P1.1、P1.2、P1.5、P1.6、P2.6(P2.6一般不用,因为要接晶振哦)

TA1支持的引脚有P2.0 –> P2.5。
选择方便的,假设我选择了P1.6(TA0.1)和P2.2(TA1.1),且第1路由ACLK驱动输出4KHz方波,第2路也有ACLK驱动但是输出2KHz占空比25%的方波。
 
从网上找了两段程序,你参考下把:

P1DIR |= BIT6; // 选择P1.6的第二功能,即TA0.1
P1SEL |= BIT6;
CCR0 = 7; // PWM 周期  = ACLK@32768/4KHz-1 = 8.192-1 = 7
CCTL1 = OUTMOD_6; // CCR1 reset/set
CCR1 = 3; // CCR1 PWM 占空比50% = 8.192*50% – 1 = 3

TACTL = TASSEL_1 + MC_1; // ACLK, up mode

 
 
P2DIR |= BIT2; // 选择P2.2的第二功能,即TA1.1
P2SEL |= BIT2;
TA1CCR0 = 15; // PWM 周期= ACLK@32768/2KHz-1 = 16-1 = 15
TA1CCTL1 = OUTMOD_6; // CCR1 reset/set
TA1CCR1 = 3; // CCR1 PWM 占空比25% = 16*25% – 1 = 3

TA1CTL = TASSEL_1 + MC_1; // ACLK, up mode

灰小子:

回复 灰小子:

TA可以输出完整的2路PWM波形;TB可以输出6路完整的PWM波形。

具体情况还要看你使用的单片机型号。

Heng Zhao:

回复 灰小子:

我想知道的是怎样用一个定时器产生两路具有一定相位差的PWM波。

Viki Shi:

回复 Heng Zhao:

可参考这个: http://wenku.baidu.com/view/803f1c1033687e21af45a9cd.html?re=view

Heng Zhao:

回复 Viki Shi:

你这个是用IO口模拟的,如果PWM频率高的话,系统中断太频繁,资源占用严重,我想用定时器自带的PWM模块实现,有没有什么办法?

Heng Zhao:

回复 kqian0327:

谢谢。

Diandian Zhao1:

回复 灰小子:

您好,看到您的回复说可以用TA产生两位方波,我是用的是MSP430F149,也想用它产生两路40KHz方波,看到您上面的程序,我把频率占空比都改了,但是用示波器显示器产生的都不是40K,而且频率不同,不知道为什么?

赞(0)
未经允许不得转载:TI中文支持网 » 如何用一个定时器TA产生两路频率相同,占空比可调,具有一定相位差的PWM信号?
分享到: 更多 (0)