我最近需要用430进行光电码盘的测速(码盘连在电机上)
但是430连到码盘上时感觉总会有漏上升沿的问题
比如我本来测速得到450ms转一圈,有大概一半的数据是1100ms(大概2.5倍),而另一半就是450ms
这是测得的数据,其中x轴代表测的次数,y轴代表旋转一圈所需要的毫秒数,可以看到大部分数据在450或1110附近
我是根据两次上升沿之间的时间来确定转速的
电机匀速转动时,示波器看到码盘输出的波形没有问题,周期为11ms,其中高电平2ms
这是我的捕获模式初始化代码
void TimerB0_init()
{
#ifdef PhotoelectricEncoder_Used_
TB0CCTL0 |= CCIE; //TB0CCR0 允许中断
#endif
TB0CCR0 = 4000-1; //设置延时时间(4MHz/4000=1KHz)
TB0CTL |= TBSSEL_2; //SMCLK
TB0CTL |= MC_1;
}
P4DIR &= ~(BIT1+ BIT2);
P4SEL |= BIT1+ BIT2;
TB0CCTL1 = CM_1+CCIS_0+CAP+SCS; // CCR1 capture mode P4.1
TB0CCTL2 = CM_1+CCIS_0+CAP+SCS; // CCR1 capture mode P4.2
TB0CCTL1 |= CCIE;
TB0CCTL2 |= CCIE;
请问这可能是出了什么问题?
