我用的芯片是MC9S12XEP100,现在遇到点问题,用两路脉冲累加器PACA和PACB对两个编码器进行脉冲计数,但是现在只有脉冲累加器A有数值,而脉冲累加器B没有数,所以想请教一下大家是哪里出了问题。下面是脉冲累加器的初始化函数,大家帮忙看看!
/*初始化脉冲累加器*/
void Init_PulseAccumulator(void){
ECT_PACTL_PAMOD=0; //选择计数模式(脉冲累加器A)
ECT_PACTL_PEDGE=0; //下降沿计数 (脉冲累加器A)
ECT_PACTL_CLK=0; //选择定时器计数器时钟(脉冲累加器A),门控时间计数模式有效
ECT_PACTL_PAOVI=0; //屏蔽溢出中断 (脉冲累加器A)
ECT_PACTL_PAI=0; //屏蔽输入中断 (脉冲累加器A)
ECT_PACTL_PAEN=1; //使能脉冲累加器A
ECT_ICSYS_BUFEN=1; //使能脉冲累加器保持寄存器,
ECT_ICSYS_LATQ=1; //并选择锁存模式,即MCCNT减到0或者向其写0后,脉冲累加器的值被锁存到相应的保持寄存器中
ECT_DLYCT=0x00; //不使用延时计数寄存器
ECT_PBCTL_PBOVI=0; //屏蔽PB溢出中断
TIM_TCTL4_EDG0x=2; //设置脉冲累加器B的计数触发沿为下降沿
ECT_PBCTL_PBEN=1; //使能脉冲累加器B(脉冲累加器B只有计数模式,所以不用选择)
}
然后就是在中断程序中读取计数值(定时进入中断):
pulsecountA = ECT_PA32H;
pulsecountB = ECT_PA10H;
请问这样有问题么?为什么只有脉冲累加器A有数,脉冲累加器B没有数值?
关于硬件的连接,我是A编码器连PT7口,B编码器连PT0口。
|