中断不稳定,怎么办
大家好,请教一下为什么我按一次按键,就产生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:40 编辑
检测有效的一次红外后,置一个标志,然后到主程序中去延时,延时结束后,才可以接受中断的数据。这样可以实现的。
按键需要上下拉电阻哦 感谢楼上的回答,但是要怎么拉啊,我的目的是按一次按键产生因此中断就加一,那么我的程序要怎么改啊 但是我用红外线感受一次,也会产生2次中断 如果你中断信号是低电平,那你就应该在这个IO口接一个,10K~20K的上拉电阻到VCC 我用的是下降沿触发,那为什么我用那个红外线感受器的信号当触发信号,也会发生一次触发2次或更多次中断的现象 加了上拉电阻也不行啊
1.确定中断是上升沿中断,下降沿中断还是上升下降沿都中断;
2.确定硬件有消除抖动?
3.软件是否有做消抖。 可以接个开关,先试试。我也遇到过。。。。 zwllive 发表于 2014-5-3 11:30
我用的是下降沿触发,那为什么我用那个红外线感受器的信号当触发信号,也会发生一次触发2次或更多次中断的 ...
那是因为红外有时候触发了2次,你可以处理一下,接受到有效的一次红外信号后,delay一下,连续的第二次忽略掉,应该就可以了。
页:
[1]
2