OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 4506|回复: 2

四路电机测速求助

[复制链接]

9

主题

55

帖子

0

精华

初级会员

Rank: 2

积分
115
金钱
115
注册时间
2015-9-27
在线时间
23 小时
发表于 2015-11-9 14:06:16 | 显示全部楼层 |阅读模式
5金钱
如题,用了四个霍尔传感器,通过一个四输入与门连接到了单片机的中断P32,同时四个霍尔传感器又连接了P0-P11四个IO,当霍尔传感器检测到强磁体,触发中断,在中断里判断是哪一路电机,对应的计数变量的值加一,中断是下降沿触发,但是现在用手转到一个轮子,当检测到强磁体后,计数的变量加2到加4不等,就是不加1.求大神指导,或者有其他的方案教教我。中断初始化和中断函数如下
void SysInit(void)
{
    EA = 1;
    IT0 = 1;
    EX0 = 1;
}
void Exter0(void) interrupt 0
{
    switch (P1 & 0x0f)

    {
        case 0x00 : a++;
                         b++;
                         c++;
                         d++;
                         break;
          case 0x01 : a++;
                         b++;
                         c++;
                         break;
          case 0x02 : a++;
                         b++;
                         d++;
                         break;
          case 0x03 : a++;
                         b++;
                         break;
          case 0x04 : a++;
                         c++;
                         d++;
                         break;
          case 0x05 : a++;
                         c++;
                         break;
          case 0x06 : a++;
                         d++;
                         break;
          case 0x07 : a++;
                         break;
          case 0x08 : b++;
                         c++;
                         d++;
                          break;
          case 0x09 : b++;
                         c++;
                         break;
             case 0x0a : b++;
                         d++;
                         break;
          case 0x0b : b++;
                         break;
          case 0x0c : c++;
                         d++;
                         break;
          case 0x0d : c++;
                         break;
          case 0x0e : d++;
                         break;
            default   : break;
          
    }
}
我从百度上搜到下降沿触发的中断,在中断函数运行的过程中,如果中断引脚再次置0,本次中断结束后又会进入一次中断,这样霍尔传感器的输出波形的毛刺可能会导致重复中断,因此我曾试过在中断函数最后加了一句 IE0 = 0; 但是。。。。。。还是一样没有解决

生死看淡,低头猛干
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165353
金钱
165353
注册时间
2010-12-1
在线时间
2108 小时
发表于 2015-11-9 22:45:12 | 显示全部楼层
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复

使用道具 举报

13

主题

611

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1929
金钱
1929
注册时间
2014-10-6
在线时间
625 小时
发表于 2015-11-11 09:46:04 | 显示全部楼层
你的中断函数没有处理好造成这个现象的,你“四个霍尔传感器又连接了P0-P11四个IO”,是那四个?switch (P1 & 0x0f)你判断这个又怎么和四个传感器对应上?
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2024-11-27 04:50

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

快速回复 返回顶部 返回列表