使用中断时,我们是否总是需要使用去抖电容?

问题描述 投票:-3回答:1

我正在尝试使用Arduino中断,但它经常失败。 Arduino似乎被封锁了。我怀疑来自中断器的弹性信号是导致问题的原因。

需要明确的是:我想知道在中断中使用去抖电容是否是使用中断的传统方法。

谢谢您帮忙。

arduino electronics
1个回答
1
投票

解决此问题的一种有用方法是首先验证反弹确实是问题。您可以通过提供无反弹信号作为测试来实现。 Arduino本身可以通过digitalWrite将其提供给输出引脚,您可以将其连接到中断引脚,代替您所在的任何开关等。然后,您可以通过软件切换digitalWrite引脚(比如Serial上的命令)。

如果这没有问题,那么也许你的中断引脚开关确实是有弹性的。根据系统的性质,可以尝试一些不同的东西。一个简单的方法是从一个接触的开关改为一个断开的开关,因为断裂通常较少或没有反弹。例如,如果您的触点闭合时有一个将+5连接到中断引脚的开关,请更改它,以便在引脚上使用上拉(Arduino周到提供内置选项)并让您的开关通常接地;当它打开时,引脚将被拉高。

另一种方法(除了电容器)是通过软件,你的ISR不会在前一个X毫秒内响应额外的中断。一种方法是让ISR使用millis()读取中断的时间,并将其与保持前一时间的变量进行比较,如果过早则不执行任何操作。

最好的祝福

© www.soinside.com 2019 - 2024. All rights reserved.