打印

用counter为旋转编码器记数

[复制链接]
2282|5
手机看帖
扫描二维码
随时随地手机跟帖
跳转到指定楼层
楼主
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函数里~
相关链接:https://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
做好了再上来汇报~

使用特权

评论回复
5
ze0075|  楼主 | 2009-7-17 16:31 | 只看该作者

做好了

解决问题,原来老师买的是集电极输出的旋转编码器,自己焊了个电阻转成电压输出就可以正常读脉冲了...

使用特权

评论回复
6
ze0075|  楼主 | 2009-7-22 09:53 | 只看该作者

补充下

ClockSync 还是得选Unsynchronized,不然没反应~

使用特权

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

本版积分规则

2

主题

15

帖子

0

粉丝