中断不稳定,怎么办-Arduino中文社区 - Powered by Discuz! Archiver

zwllive 发表于 2014-5-2 22:14

中断不稳定,怎么办

大家好,请教一下为什么我按一次按键,就产生2次外部中断,程序如下:
int q;

void setup()
{    pinMode(2,INPUT);

attachInterrupt(0, blink, FALLING );
   
   Serial.begin(9600);
}

void loop()
{   
digitalWrite(2,HIGH);
}
void blink()
{   
delay(10);
if(digitalRead(2)==LOW)
{
   q++;
   Serial.println(q);
}
}

huangyunfa 发表于 2019-6-10 11:32

本帖最后由 huangyunfa 于 2019-6-10 11:40 编辑

检测有效的一次红外后,置一个标志,然后到主程序中去延时,延时结束后,才可以接受中断的数据。这样可以实现的。

ElecSpark 发表于 2014-5-2 22:24

按键需要上下拉电阻哦

zwllive 发表于 2014-5-2 22:56

感谢楼上的回答,但是要怎么拉啊,我的目的是按一次按键产生因此中断就加一,那么我的程序要怎么改啊

zwllive 发表于 2014-5-2 22:58

但是我用红外线感受一次,也会产生2次中断

电子火花 发表于 2014-5-3 01:39

如果你中断信号是低电平,那你就应该在这个IO口接一个,10K~20K的上拉电阻到VCC

zwllive 发表于 2014-5-3 11:30

我用的是下降沿触发,那为什么我用那个红外线感受器的信号当触发信号,也会发生一次触发2次或更多次中断的现象

zwllive 发表于 2014-5-3 11:34

加了上拉电阻也不行啊

jiamingz 发表于 2014-5-5 13:30

1.确定中断是上升沿中断,下降沿中断还是上升下降沿都中断;
2.确定硬件有消除抖动?
3.软件是否有做消抖。

huangyunfa 发表于 2019-6-10 10:25

可以接个开关,先试试。我也遇到过。。。。

huangyunfa 发表于 2019-6-10 11:00

zwllive 发表于 2014-5-3 11:30
我用的是下降沿触发,那为什么我用那个红外线感受器的信号当触发信号,也会发生一次触发2次或更多次中断的 ...

那是因为红外有时候触发了2次,你可以处理一下,接受到有效的一次红外信号后,delay一下,连续的第二次忽略掉,应该就可以了。
页: [1] 2
查看完整版本: 中断不稳定,怎么办