CHA CHB STATE
--------------------------------------
1 0 1
-------------------------------------
1 1 2
--------------------------------------
0 1 3
-------------------------------------
0 0 4
您的意思:初始状态有可能是1也有可能是2,或者3,4?
意思只要是1->2->3->4->1这种循环方式,就是正转,反之就是反转?
根据当前的A和B之间的电平去判断当前的STATE是表中1、2、3、4的哪个位置。
然后通过出现的状态顺序来判断是正还是反?
2.另外有没有1、3、2、4这种组合呢?这种怎么用程序去过滤掉?还是程序里面必须按这种1->2->3->4->1和4->3->2->1->4这2个状态更新才是可以的,其他的方式不无法进去到处理函数中? 本帖最后由 zlf1208 于 2023-10-26 12:20 编辑
medety 发表于 2023-10-26 11:43
CHA CHB STATE
--------------------------------------
1 0 ...
第一个问题:
1. 初始状态有可能是1也有可能是2,或者3,4? 是的
2. 只要是1->2->3->4->1这种循环方式,就是正转,反之就是反转? 是的
3. 根据当前的A和B之间的电平去判断当前的STATE是表中1、2、3、4的哪个位置。 以上一次的AB值为依据(这就是为什么将上一次AB值作为switch变量的原因),通过状态转换表确定旋转方向(每一个case只需判断上下二个相邻的状态即可)
第二个问题
不应该有这样的状态,如果有,一定是出错了或者受干扰了,这时候计数会出差错,程序不会死机。所以要注意AB信号的滤波。 zlf1208 发表于 2023-10-26 11:52
第一个问题:
1. 初始状态有可能是1也有可能是2,或者3,4? 是的
2. 只要是1->2->3->4->1这种循环方 ...
我现在明白了,如何判断,但是个人感觉这个计数有何用?
为什么要计数?
计数是判断旋转了多少?
我的意思,知道目前是正转还是反转就好了。 medety 发表于 2023-10-26 13:52
我现在明白了,如何判断,但是个人感觉这个计数有何用?
为什么要计数?
计数是判断旋转了多少?
要不要计数是看你的需要的,不是必须的。 用外中断是最可靠,最简单的。
建议分析下这几个个链接:
http://www.51hei.com/bbs/dpj-221719-1.html
https://bbs.21ic.com/icview-3325360-5-1.html
前面的讨论都没有考虑消抖、丢步等问题。 datouyuan 发表于 2023-10-27 08:27
用外中断是最可靠,最简单的。
建议分析下这几个个链接:
http://www.51hei.com/bbs/dpj-221719-1.html
怎么样子 才是考虑到了消斗,丢步?
页:
1
[2]