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

PWM

如上图.请教Susan,看有没有办法。解决?

1)p2.5长时间低电平,突然收到上升沿中断在激活到PWM输出,延迟比较久,对比后面第1次6ms多,后面的1.8-1.9ms

2)p2.5高电平占空比不能调的非常大,如果超过90%之后,可能导致上升沿中断不触发了?导致pwm输出功能失效。

3)p2.5高电平占空比,会影响中断启动延迟,如1)。调小占空比,会导致PWM输出延迟变长。

Susan Yang:

andy 说:p2.5长时间低电平

请问您P2.5处的触发以及中断服务程序是怎样的?若是可以的话,请给一下代码,谢谢

,

andy:

问题其实可以收敛到,只是IO中断响应延迟的问题。

简单实验如下:P2.5变化中断,同步改变P3.0状态。第一次触发响应延迟6ms,后续快速周期性触发1.8ms左右

#include <msp430.h>void Cpu_int(void)
{if (CALBC1_1MHZ==0xFF){while(1);}DCOCTL = 0;BCSCTL1 = CALBC1_1MHZ;DCOCTL = CALDCO_1MHZ;
}void main(void){WDTCTL = WDTPW + WDTHOLD; // Stop WDTCpu_int();//P2.5 上升沿输入中断设置P2DIR|=BIT5;P2REN&=~BIT5;P2IES&=~BIT5;P2OUT&=~BIT5;P2IFG&=~BIT5;P2DIR&=~BIT5;P2IE|=BIT5;//p3.0 trigger outP3DIR |= BIT0;//P3REN|=BIT0;_EINT();__low_power_mode_1();
}//mcu-triggerin
#pragma vector=PORT2_VECTOR__interrupt void Port_2(void)
{P2IFG&=~(BIT5 | BIT4);if(P2IN&BIT5) //p2.5: mcu-triggerIn{P3OUT|=BIT0;P2IES|=BIT5;}else{P3OUT&=~BIT0;P2IES&=~BIT5;}}

,

andy:

补充实验,不用中断方式,而是在main方法,死循环只处理这一个任务,也一样延迟1.4-5.4ms。说明外部电平变化刷新寄存器状态,延迟比较厉害了。

while(1){if(P2IN&BIT5) //p2.5: mcu-triggerIn{P3OUT|=BIT0;}else{P3OUT&=~BIT0;}}

,

Susan Yang:

andy 说:说明外部电平变化刷新寄存器状态,延迟比较厉害了。

我使用其他开发板测试了一下

目前在断点处 clock 复位为0,下一次进入断点的话,需要7个时钟周期

,

andy:

7个周期是可以理解的,(按1M的主频,延迟7us左右),我不是怀疑这段代码之间有1.4ms-6ms的延迟。而是觉得外部电平的变化,mcu更改P2IN寄存器之间存在延迟。

,

andy:

又或者是POUT输出后到外部电平变化之间存在延迟。因为我是在外部用逻辑分析仪抓输入输出的逻辑信号。来测量的。

,

Susan Yang:

您的顾虑是有可能的,但是理论上是不会这么大的延迟。我之后需要测试确认后给您回复

,

andy:

多谢了。

补充一下:应该不用怀疑逻辑分析仪的问题,430收到信号1后,同步抓取的POUT输出的信号2,信号2同步传给了板子上TI另外的芯片,到这个芯片内部反应再输出信号3之间的延迟是比较精确的(这个芯片设定171us输出,实际测量也是171us多点,反应时间可以认为是ns级别的)。

,

Susan Yang:

若是可以的话,请您私信一下您的工程,我来测试一下。我目前不能复现您的现象

赞(0)
未经允许不得转载:TI中文支持网 » PWM
分享到: 更多 (0)