我已经在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是一种自定义的数字到模拟转换器。这里没什么花哨的。
这是一个实现错误,可能是一个错误的按钮,闪烁?
发布于 2013-08-19 16:28:30
欢迎来到joy的嵌入式和电子!
你正在经历的是所谓的接触反弹:bounc.htm
它在所有按钮的使用中都是典型的,是由按钮的机电特性引起的。
处理这个问题的方法有两种。要么增加一个脱节电路,要么在软件中添加。通常,软件的方式是忽略所有发生在第一次中断几毫秒内的中断。这里有一篇很好的关于脱钩策略的论文:http://cseweb.ucsd.edu/classes/sp09/cse140L/slides/debouncing.pdf
https://stackoverflow.com/questions/18301259
复制相似问题