脉冲编码开关 单片机采样问题

[复制链接]
4056|6
 楼主| OverLook 发表于 2010-12-16 10:36 | 显示全部楼层 |阅读模式




void encoder(void) interrupt 0 {   //外部中断0
      if (INT1){
           led ++;
      }
      else{
           led --;
       }
}


两脉冲管脚接俩单片机外中断;

用笔记本usb供电调试时,单片机计数正常; 当改用开关电源供电时,计数不正常;

怀疑是单片机纹波问题, 手头临时没有示波器,没法检测;

高手帮忙分析一下 ,还有其他原因不?

另外,有更好的程序滤波方法把这问题解决更好, 请赐教。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
月下狂想曲 发表于 2010-12-16 11:52 | 显示全部楼层
本帖最后由 月下狂想曲 于 2010-12-16 11:54 编辑

Bpin 下降沿触发
void encoder(void) interrupt 0
{
      if (!Bpin)
         {
           if (!Apin)
               {
                 Led --;
               }
           if (Apin)
               {
                 Led ++;
               }

      }
      else
          {
           if (!Apin)
               {
                 Led --;
               }
           else
               {
                 Led ++;
               }

       }
}
Jack602 发表于 2010-12-16 12:01 | 显示全部楼层
我也发过一个关于旋转编码器的帖子..已经解决..lz可以搜搜看哦..另外,我做的不是用外部中断..做起来回有误判或精度不高,建议还是用定时器扫描把 。。效果不错..还有既然换个电源就不行,那肯定不是单片机原因
coody 发表于 2010-12-16 12:10 | 显示全部楼层
这种机械触点的编码开关,有抖动的,用外中断不好处理,我都是查询检测一个脚的边沿,再看另一个脚的电瓶判断方向
 楼主| OverLook 发表于 2010-12-16 13:25 | 显示全部楼层
Bpin 下降沿触发
void encoder(void) interrupt 0
{
      if (!Bpin)
         {
           if (!Apin)
               {
                 Led --;
               }
           if (Apin)
               {
   ...
月下狂想曲 发表于 2010-12-16 11:52


Bpin  下降沿中断了,再判断 Bpin   高低 是何原因?
 楼主| OverLook 发表于 2010-12-16 14:26 | 显示全部楼层
搜了搜坛子里 关于这个问题的讨论很多嘛。

我估计是我的电源有问题。

回去换个线性电源试试去。
 楼主| OverLook 发表于 2010-12-16 14:27 | 显示全部楼层
谢谢各位帮助, 结贴。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

个人签名:青岛电子电气同僚群6770360

0

主题

440

帖子

1

粉丝
快速回复 在线客服 返回列表 返回顶部