STM32、外部中断、旋转编码器

2019-07-21 01:35发布

现在小弟需要用STM32的外部中断处理旋转编码器返回来的信号,判断方向并进行计数。由于经常不能复位(Ac=0,Bc=0),所以加了Tim进行复位操作。
现在还是出现快速转动时会出现于往预期的反方向计数。
查了好久了。
麻烦各位帮忙看看问题出在哪,或者是有什么更好的处理方法(PS:只能使用外部中断)










友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
该问题目前已经被作者或者管理员关闭, 无法添加新回复
21条回答
ndthome
1楼-- · 2019-07-22 07:08
kaixi 发表于 2018-12-26 19:46
如果使用定时器的编码器模式的话,怎么实现0到N的调档(顺时加到N,再顺时就一直保持在N,逆时减到0,再逆 ...

这是软件的思路了,先能保证判断顺转还是逆转
if(顺)

    if(count < N)
   {
      count = count + 1;
   }

else
{
   if(count > 0)
   {
      count = count - 1;
   }
}
brucewoo
2楼-- · 2019-07-22 09:20
kaixi 发表于 2018-12-25 12:28
有呀,我用的是外部中断,你是用什么处理的

就是使用了一个定时器的编码器模式,把编码器的输出引脚接到通道1和通道2,然后轮询定时器的CNT值,没有使用中断。
a3748622
3楼-- · 2019-07-22 11:54
 精彩回答 2  元偷偷看……
kaixi
4楼-- · 2019-07-22 16:15
 精彩回答 2  元偷偷看……
kaixi
5楼-- · 2019-07-22 18:34
ndthome 发表于 2018-12-26 21:51
这是软件的思路了,先能保证判断顺转还是逆转
if(顺)

嗯嗯,采用外部中断时是用这个思路加减的,现在用定时器了,用了别的方法,思路差不多,谢谢
kaixi
6楼-- · 2019-07-22 23:49
a3748622 发表于 2018-12-27 09:45
你需要转很快?
我只用了一个外部中断处理,识别左右,转动没啥问题。
快转1秒3次以上不行,不过对于我产 ...

哈哈哈,以防回很快的情况出现,我用外部中中断时在里面延时了,觉得还是不稳妥,就改用回定时器了,配置就能用

一周热门 更多>