我无法让旋转编码器与 AVR 微控制器一起正常工作。编码器是机械ALPS 编码器,我使用的是Atmega168。
澄清
我曾尝试使用外部中断来监听引脚,但似乎太慢了。当引脚 A 变为高电平时,中断程序开始,然后检查引脚 B 是否为高电平。这个想法是,如果在引脚 A 变高的那一刻引脚 B 为高,那么它会逆时针旋转。如果引脚 B 为低电平,则它正在顺时针旋转。但似乎 AVR 需要太长时间来检查引脚 B,所以它总是被读取为高。
我还尝试创建一个程序,它只会阻塞直到 Pin B 或 Pin A 发生变化。但是可能是编码器旋转时噪音太大,因为这也不起作用。我最后一次尝试是有一个计时器,它将最后 8 个值存储在缓冲区中,并检查它是否从低到高。这也不起作用。
我尝试过对编码器进行范围界定,从第一个 Pin 更改到另一个 Pin 更改,它似乎使用了 2 到 4 毫秒。