用counter为旋转编码器记数

[复制链接]
 楼主| ze0075 发表于 2009-7-14 16:55 | 显示全部楼层 |阅读模式
计数器我这么写是400个脉冲后产生中断吧?
  Counter16_1_EnableInt();
  Counter16_1_WritePeriod(400);
  Counter16_1_WriteCompareValue(1);
  Counter16_1_Start();
我用的外接的旋转编码器,200p每转,结果刚一动就中断了,不知道是不是设置得不对~
  ClockSync选的Unsynchronized
还有Row_1_Input上选了Async

 楼主| ze0075 发表于 2009-7-14 16:59 | 显示全部楼层

把项目传上来了

这是项目文件~比较乱。在point函数里~
相关链接:http://bbs.21ic.com/upfiles/img/20097/2009714165512106.rar
ni_labview 发表于 2009-7-15 12:16 | 显示全部楼层

代码没什么问题,像时钟设置问题

首先确认输入信号没有毛刺的情况下,用个开关代替输入脉冲先测试单个脉冲计数准确性。
之后可以尝试一下看结果如何:
1.ClockSync选的Use SysClk Direct.
2.Row_1_Input上选了SysClk_Sync. 
这个模块一般不出问题
 楼主| ze0075 发表于 2009-7-16 21:49 | 显示全部楼层

谢谢ni_labview

这两天在调整个系统,明天再抽空了结它。
datasheet上对Unsynchronized的说明是“当选定48 MHz (SysClk*2)输入时使用。在需要未同步输入时使用。一般来说,只有在中断生成是计数器的唯一应用时才推荐使用此选项。”
所以毫不犹豫的选了Unsynchronized
做好了再上来汇报~
 楼主| ze0075 发表于 2009-7-17 16:31 | 显示全部楼层

做好了

解决问题,原来老师买的是集电极输出的旋转编码器,自己焊了个电阻转成电压输出就可以正常读脉冲了...
 楼主| ze0075 发表于 2009-7-22 09:53 | 显示全部楼层

补充下

ClockSync 还是得选Unsynchronized,不然没反应~
您需要登录后才可以回帖 登录 | 注册

本版积分规则

2

主题

15

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部

2

主题

15

帖子

0

粉丝
快速回复 在线客服 返回列表 返回顶部