6181|9

86

帖子

0

TA的资源

一粒金砂(中级)

楼主
 

关于IO中断去抖问题~ [复制链接]

小弟最近在玩msp430f149开发板,我用它搭了一个红外检测电路(买的现成的模块),检测液体滴定的速度~~~


之前看过郭天祥的视频,了解按键去抖可以使用延时函数,我测试了下,这里使用延时函数的效果不是很好

请问大神:我想实时检测IO口中断,使用的是上升沿中断,当红外检测电路检测到液体,会产生一个高电平。

如果不想在中断服务函数中使用延时函数,还有什么其它去抖的好办法吗(针对msp430单片机)?恳请赐教!!!

如下是我使用延时的中断服务程序


#pragma vector=PORT1_VECTOR

__interrupt void Port_1(void)

{

        

        P1IFG &= ~BIT0;  

        counter_val++;  

        Delay_us(1000);

}




最新回复

珍爱技术,远离郭天祥!郭天祥只是一个略懂技术的商人而已,看过他的东西,害人不浅。 没有太明白你的应用,感觉像是检测类似输液的时候药液的下滴速度吧?这样的应用就跟自行车码表类似了,你检测的应该是一串脉冲,模块里面已经做好去抖了,而且由于下滴速度未知,你延时时间长了有可能漏掉了有用的脉冲。一般类似的应用中抖动还是比较小的,虽然不能排除,这个时候用一个施密特门电路进行去抖就可以了,因为很多单片机的外部中断功能都是施密特输入的,所以就不用单独的去外部加东西了。 我做按键检测的时候都是在定时器中读取和判断去抖的。如果在去抖时间内电平翻转了就不认为是有效输入了,因为按键一般都比较慢,没有用中断  详情 回复 发表于 2015-5-24 09:00
 
点赞 关注

回复
举报

2002

帖子

24

TA的资源

五彩晶圆(高级)

沙发
 
1、中断函数里面延时很不好。
2、你既然买的模块检测液滴,那你还加什么去抖啊,要去也是模块去
3、如果单单考虑做去抖,中断+计数器来判别,通过电平翻转的时间来判断是抖动或正常按键
 
 

回复

1149

帖子

3

TA的资源

五彩晶圆(初级)

板凳
 
1. 中断里面查询;
2. 状态机;
 
个人签名construction complete!
 
 

回复

86

帖子

0

TA的资源

一粒金砂(中级)

4
 
大神:能说的具体一点吗?最好附带几句重点的程序,感谢了~~~
 
 
 

回复

81

帖子

0

TA的资源

一粒金砂(中级)

5
 
中断函数里不要有太多功能函数,用变量引出,重新编写具体功能函数。加延时去抖动。
 
 
 

回复

1193

帖子

0

TA的资源

纯净的硅(高级)

6
 
简单,继续使用延时去抖,但是不是这么处理。

  1. #pragma vector=PORT1_VECTOR
  2. __interrupt void Port_1(void)
  3. {
  4.     P1IFG &= ~BIT0;  
  5.     if(delay_counter_val==0)
  6.     {
  7.        counter_val++;  
  8.        delay_counter_val=1000;
  9.     }
  10. }

  11. 定时器中断()//s设定1μs的中断
  12. {
  13. if(delay_counter_val)delay_counter_val--;
  14. }

复制代码

同样是延时去抖,但是可以不在中断里延时,而是在定时器里延时。
 
 
 

回复

1976

帖子

1

TA的资源

五彩晶圆(初级)

7
 
如果是使用中断进行判断则只能在中断程序里进行消抖操作,要不可在中断中置一个标志位,然后在主程序的大循环里使用case语句进行类延时判断,有点像多次采样来决定是否事件发生了的样子,希望能对楼主有帮助
 
 
 

回复

3238

帖子

5

TA的资源

五彩晶圆(中级)

8
 
建议在中断之外调用读红外函数时延时吧,你可以用定时器时间间隔延时
 
个人签名淘宝:https://viiot.taobao.com/Q群243090717
多年专业物联网行业经验,个人承接各类物联网外包项目
 
 

回复

3404

帖子

6

TA的资源

裸片初长成(初级)

9
 
珍爱技术,远离郭天祥!郭天祥只是一个略懂技术的商人而已,看过他的东西,害人不浅。
没有太明白你的应用,感觉像是检测类似输液的时候药液的下滴速度吧?这样的应用就跟自行车码表类似了,你检测的应该是一串脉冲,模块里面已经做好去抖了,而且由于下滴速度未知,你延时时间长了有可能漏掉了有用的脉冲。一般类似的应用中抖动还是比较小的,虽然不能排除,这个时候用一个施密特门电路进行去抖就可以了,因为很多单片机的外部中断功能都是施密特输入的,所以就不用单独的去外部加东西了。
我做按键检测的时候都是在定时器中读取和判断去抖的。如果在去抖时间内电平翻转了就不认为是有效输入了,因为按键一般都比较慢,没有用中断
 
 
 

回复

86

帖子

0

TA的资源

一粒金砂(中级)

10
 
感谢大神指教~~~
 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/9 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表