我正在尝试使用Arduino中断,但它经常失败。 Arduino似乎被封锁了。我怀疑来自中断器的弹性信号是导致问题的原因。
要清楚:我想知道在中断中使用去抖电容是否是使用中断的传统方法。
感谢您的帮助。
答案 0 :(得分:1)
解决此问题的一种有用方法是首先验证反弹确实是问题所在。您可以通过提供无反弹信号作为测试来实现。 Arduino本身可以通过digitalWrite将其提供给输出引脚,您可以将其连接到中断引脚,代替您在那里的任何开关等。然后,您可以通过软件切换digitalWrite引脚(比如Serial上的命令)。
如果没有问题,那么你的中断引脚开关确实很有弹性。根据系统的性质,可以尝试一些不同的东西。一个简单的方法是从一个接触的开关改为一个断开的开关,因为断裂通常较少或没有反弹。例如,如果您的触点闭合时有一个将+5连接到中断引脚的开关,请更改它,以便在引脚上使用上拉(Arduino周到提供内置选项)并让您的开关通常接地;当它打开时,引脚会被拉高。
另一种方法(除电容器外)是通过软件进行的,其中ISR不会对前一个中断的X毫秒内的其他中断做出响应。一种方法是让ISR使用millis()读取中断的时间,并将其与保持前一时间的变量进行比较,如果过早则不执行任何操作。
祝你好运