如果在主循环里判断次数和方向 除非你用一个片子专门去扫编码器 否则 主循环时间不一定 有可能错过 所以中断是相对最可靠的 但中断里不适于做防抖 即便是计时器防抖或者变量累加防抖 都有可能在第二个脉冲过来的时候冲突 如果处理冲突 又可能造成中断内程序太多 那么理想的状态就是中断中得到的是确定脉冲 所以我认为编码器的消抖用硬件消抖 单片机中断计数 可以在中断函数里用两个标记分别对比以确定方向
硬件消抖实际上也有点缺点 要么容错低 要么体积大 要么成本高 硬件消抖简单的就是用个0.1uf电容 这方法是假定抖动会在十几毫秒内 随使用编码器那东西会越来越接触不良 到后期误判很多 另一种是用门电路做消抖 我没试过 但至少布线上要多一大坨东西 还有就是专门的消抖片子 有专门干这个的芯片 但那东西好贵啊 感觉很不值得
至于最终怎么弄 我认为主要是看速率 就是编码器拧多快 如果1s拧一下 那无所谓什么方法了 最便宜最简单的都不是问题 如果特别快 或者脉冲特别多的编码器 讲真 我觉得只能用专门的芯片 好象叫什么增量触发之类的 专用芯片 也特别贵 当时就是看见价格直接就忽略了 |