【发布时间】:2025-07-31 13:55:01
【问题描述】:
我无法让旋转编码器与 AVR 微控制器一起正常工作。编码器是机械的ALPS encoder,我用的是Atmega168。
澄清
我曾尝试使用外部中断来监听引脚,但似乎太慢了。当引脚 A 变为高电平时,中断程序开始,然后检查引脚 B 是否为高电平。这个想法是,如果在引脚 A 变高的那一刻引脚 B 为高,那么它会逆时针旋转。如果引脚 B 为低电平,则它正在顺时针旋转。但似乎 AVR 需要太长时间来检查 Pin B,所以它总是被读取为高。
我还尝试创建一个程序,该程序仅在 Pin B 或 Pin A 更改之前阻塞。但是可能是编码器旋转时噪音太大,因为这也不起作用。我最后一次尝试是有一个计时器,它将最后 8 个值存储在缓冲区中,并检查它是否从低到高。这也不起作用。
我尝试过确定编码器的范围,从第一个 Pin 更改到另一个 Pin 更改,它似乎使用了 2 到 4 毫秒。
【问题讨论】:
标签: microcontroller avr encoder atmega