netduino 2上的按钮事件
本文关键字:按钮 事件 netduino | 更新日期: 2023-09-27 18:28:01
我已经开始在netduino 2上开发爱好。我正在为车载按钮上的中断而挣扎。我的问题是,每次按下按钮都会调用多次中断。
public static void Main()
{
dac = new Dac();
InterruptPort button = new InterruptPort(Pins.ONBOARD_SW1, true, Port.ResistorMode.Disabled, Port.InterruptMode.InterruptEdgeHigh);
button.OnInterrupt += new NativeEventHandler(button_OnInterrupt);
Thread.Sleep(Timeout.Infinite);
}
static void button_OnInterrupt(uint data1, uint data2, DateTime time)
{
if(data2 == 1)
{
dac.nextDACState();
}
}
*Dac是一个自定义的数模转换器。这里没什么特别的。
这是一个实现错误吗,og可能是一个闪烁的错误按钮?
欢迎来到嵌入式和电子的欢乐!
你所经历的是所谓的接触反弹:http://www.elexp.com/t_bounc.htm
它在按钮的所有用途中都是典型的,并且是由按钮的机电特性引起的。
有两种方法可以解决这个问题。要么添加去抖动电路,要么在软件中添加。通常,软件的方法是忽略第一次中断后几毫秒内发生的所有中断。这里有一篇关于退出策略的非常好的论文:http://cseweb.ucsd.edu/classes/sp09/cse140L/slides/debouncing.pdf