MSP430G2412通过设置P1SEL1和P2SEL2 ,使P1.2,P1.4输出两路相位相反的PWM波,驱动MOS全桥电路,工作时没有问题,但是在停止PWM输出时,两路最后输出是一个高电平,一个低电平,这样MOS电路就电流非常大,简易烧坏。要两路同时是高电平或者同时是低电平,MOS电路才能正常。我想把p1.2,p1.4改为普通的I/O,设置输出,都失败。还是哪里的设置错了,有没有大侠指教一下。
Ling Zhu2:
jian chen9
MSP430G2412通过设置P1SEL1和P2SEL2 ,使P1.2,P1.4输出两路相位相反的PWM波,驱动MOS全桥电路,工作时没有问题,但是在停止PWM输出时,两路最后输出是一个高电平,一个低电平,这样MOS电路就电流非常大,简易烧坏。要两路同时是高电平或者同时是低电平,MOS电路才能正常。我想把p1.2,p1.4改为普通的I/O,设置输出,都失败。还是哪里的设置错了,有没有大侠指教一下。
user3899012:
回复 Ling Zhu2:
怎样设置,能不能给个例子。
灰小子:
回复 user3899012:
你设置的pwm占空比是多少?减小占空比,就会出现两个io同时出现高电平或者低电平,应该就满足要求了
user3899012:
回复 灰小子:
50%的占空比,而且占空比是可调的。
Triton Zhang:
回复 Ling Zhu2:
用带死区的PWM解决不了这个问题,也不是这样用的。建议在控制结束后关闭IO口的PWM功能。用IO输出控制IO口电平。如不能实现,贴代码上来看。
user3899012:
回复 Triton Zhang:
void PwmStart(void){ TACTL = TASSEL_2 + MC_1; // ACLK, contmode, interrupt enabled // CCTL0 = OUTMOD_4; // CCR0 toggle, interrupt enabled CCTL2 = OUTMOD_3; // CCR1 toggle, interrupt enabled CCTL1 = OUTMOD_6; CCR0 = ccr0[0]; CCR2 = ccr0[1]; CCR1 = ccr0[1];}void PwmStop(void){ TACTL &= ~(TAIE+MC0); P1SEL &= ~(PWM1_BIT+PWM2_BIT); P1SEL2 &= ~(PWM1_BIT+PWM2_BIT); P1DIR |= PWM1_BIT+PWM2_BIT; SetPwm1_Low(); SetPwm2_Low();}
这样还是不行的,不知道为什么这样。
TI中文支持网



