我正在用KF8A100FNG进行开发,其中使用P0.4的CPP3捕捉输入信号功能对PWM输入进行采样。当输入PWM Freq=200Hz,dutycycle=99.9%时,获得的duty cycle及period计数如下图所示:
可以看出第一个上升沿没有响应到,而是到下一个上升沿才响应,这样得到的DC=50%,使得电机工作。
如果可以正确响应,得到0%的DC,电机是不应该工作的。
从debug的结果看,是不是因为时间过短(5us),没有及时响应到边沿导致?
中断响应时间有具体限值吗?我在Datasheet里没有找到相关参数。
CCP3的捕捉中断函数我是按照Chipon的Demo程序写的,我贴在下面了。
void Capture_Isr(void)
{
CCP3IF =0;
if(P04)//刚捕捉到的是上升沿
{
TPeriod_cnt =CCP3H<<8;
TPeriod_cnt +=CCP3L; //得到周期
//T3清零
T3ON =0;
T3H =0;
T3L =0;
T3ON =1;
//更新配置,开始捕捉下降沿
CCP3IE=0;
CCP3CTL =0x04;//捕捉下降沿
CCP3IF =0;
CCP3IE =1;
Flag =1;
}
else//刚捕捉到的是下降沿
{
TDuty_cnt =CCP3H<<8;
TDuty_cnt +=CCP3L; //得到占空比
CCP3IE=0;
CCP3CTL =0x05;//捕捉上升沿
CCP3IF =0;
CCP3IE =1;
}
T3OverflowTime = 0;
}
|