打印
[技术问题解答]

关于脉冲累加器的问题

[复制链接]
1063|1
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
夶人物|  楼主 | 2016-1-5 18:52 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
我用的芯片是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口。



相关帖子

沙发
夶人物|  楼主 | 2016-1-5 19:56 | 只看该作者
我知道什么原因了!
第13行应该是
ECT_TCTL4_EDG0x=2;  //设置脉冲累加器B的计数触发沿为下降沿

这样就可以了

使用特权

评论回复
发新帖 我要提问
您需要登录后才可以回帖 登录 | 注册

本版积分规则

3

主题

11

帖子

0

粉丝