找答案的高端用户(找答案钻石及双钻级别的用户)将尽可能从此问题下的所有回
答中,为您推荐最佳答案。届时您可以根据推荐数采纳答案。
如果自提问时间起7天内您仍无法选出最佳答案,您可以选择“无满意答案”关闭此问题。
{{itemCategory}}
手机扫码追踪该问题,
觉得实用,立即去分享!
点击复制链接
用与最大值比较取相等的状态不可靠。由于扫描周期的原因,可能使数据采样错过计数值等于最大值的一刻。
可采取对当前扫描周期的当前值和上一周期的当前值进行比较。当两个值的差值的绝对值大于一个接近最大值的数时,认为编码器转过一圈。这样还可以判断编码器的旋转方向。如差值为负(由最大值跳转到0),则编码器正转;如差值为正(由0跳转到最大值),则编码器反转。
L 3.400000e+002
L #ANGLE_STEP_CONT_DUAL //当前编码器值(已经换算成2进)
<R
= #MORE_340 //value > 340,当前扫描的结果
L 1.700000e+002
<R
= #LESS_170 //value < 170,当前扫描的结果
ON #LESS_170 //value < 170
ON #MORE_340_STORED //上一次扫描的结果暂存
JC B003
L #TURN_COUNTER1
L 1.000000e+000
+R //increment turning counter
T #TURN_COUNTER1
B003: ON #MORE_340 //value > 340
ON #LESS_170_STORED //上一次扫描的结果暂存
JC A003
L #TURN_COUNTER1
L 1.000000e+000
-R //decrement turning counter
T #TURN_COUNTER1
A003: A #MORE_340 //make impuls
= #MORE_340_STORED
A #LESS_170
= #LESS_170_STORED
C003: NOP 0
首次回答问题,获得
双倍西币积分!
立即成为技术知识分享的一员!
欢迎您访问支持中心!
丰富的视频,全方位的文档,大量的网友交流精华……
为了更好的完善这些内容,我们诚邀您在浏览结束后,花20秒左右的时间,完成一个用户在线调查!
感谢您的支持!