楼主的仪器的确有些高大上 ![]() |
楼主的硬件和软件都不对![]()
|
不知道你那是什么 EC11是这样的: 使用定时器,1mS或者500uS判断一下A和B的状态 只要判断哪个先出现低电平而已 如果是静止状态电平不固定,那就判断哪个先出现电平变化 步数不同,方法也不同 |
在中断中用while()是什么神仙写法? 中断是用来处理突发/快速的信号 所以中断中的代码越简单越好 而消抖电路也好像有点问题 不转时电容充满当开路 SW_A点为5V 转动时SW_A点接地,瞬间0V 电容对地放电 再转多少少 SW_A点接不接地,电容开始充电当短路 于是SW_A点被两个10k电阻分压得2.5V产生第一次上升沿 电容慢慢充满,电流减少,SW_A点电压慢慢上升 型成第二次上升沿 参考一下别人的消抖电路吧 ![]() ![]() 另外如果转动速度不快 可以不用中断 详情请参考我的贴子:一定位一脉冲的EC11旋转编码器最简洁的单片机驱动代码 |