关于IO中断去抖问题~

2019-03-24 10:11发布

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


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

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

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

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


#pragma vector=PORT1_VECTOR

__interrupt void Port_1(void)

{

        

        P1IFG &= ~BIT0;  

        counter_val++;  

        Delay_us(1000);

}




此帖出自小平头技术问答
友情提示: 此问题已得到解决,问题已经关闭,关闭后问题禁止继续编辑,回答。
9条回答
qiushenghua
2019-03-25 08:14
简单,继续使用延时去抖,但是不是这么处理。

  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. }

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

一周热门 更多>

相关问题

    相关文章