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可能是一个闪烁的错误按钮?

netduino 2上的按钮事件

欢迎来到嵌入式和电子的欢乐!

你所经历的是所谓的接触反弹:http://www.elexp.com/t_bounc.htm

它在按钮的所有用途中都是典型的,并且是由按钮的机电特性引起的。

有两种方法可以解决这个问题。要么添加去抖动电路,要么在软件中添加。通常,软件的方法是忽略第一次中断后几毫秒内发生的所有中断。这里有一篇关于退出策略的非常好的论文:http://cseweb.ucsd.edu/classes/sp09/cse140L/slides/debouncing.pdf