2011-04-23 32 views
1

我正在尝试使用.NET Micro Framework的Microsoft.SPOT.Hardware.InterruptPort类。然而,文档困扰我:如何防止Microsoft.SPOT.Hardware.InterruptPort的无效配置?

它可以配置InterruptPort对象处于无效状态。在这种情况下,您的程序在实际使用InterruptPort对象之前可能不会生成异常。 例如,假设您创建了一个InterruptPort对象,其电阻器模式设置为Port.ResistorMode.PullUp,中断模式设置为Port.InterruptMode.InterruptEdgeLevelHigh,并且毛刺滤波器设置为true。当您实例化一个InterruptPort对象时,此配置不会生成异常。如果您添加了中断处理程序,则.NET Micro Framework将引发异常。

(重点是我自己)

它没有提到在配置导致这些无效的状态,留给我的什么不该做只是一个任意的例子。

有没有我失踪的任何文件?
有没有我忽略的电子知识的一个重要部分?
或者MSDN在文档中只是没用?

+0

是的,如果你期望它是一个教程,MSDN是没用的。这是一个参考,你必须理解硬件才能使中断正常工作。只有一种方法可以做到这一点,许多方法做错了。它不是任意的,它必须匹配硬件。 – 2011-04-23 19:06:41

回答

1

其实我也遭受过类似的问题。汉斯是正确的,它是硬件 - 如果你正在使用GHI的FEZ范围的设备,那么(我只是从制造商发现后撕掉我的头发几天),他们不支持电平中断,因此使用InterruptMode的任何配置。 InterruptEdgeLevelHigh或InterruptMode.InterruptEdgeLevelLow将在您尝试连接中断处理程序后立即失败。 MSDN上的文档非常少,主要是因为MicroFramework是社区贡献的开源软件。适用于Microsoft其他版本的.NET框架的相同(商业)质量标准不适用。如果您的主板制造商不是GHI,请首先检查它们是否支持电平中断。

0

我有同样的问题,但我的解决方案是不同的。是的,InterruptEdgeLevelHigh和Low都是无效选项。但是,我发现问题在于设备未连接到中断连接。即使它的代码稍有不同。

典型的你可以连接一个这样的按钮。

InputPort yourButton = new InputPort((Cpu.Pin)FEZ_Pin.Digital.LDR, false, 
Port.ResistorMode.PullUp); 

要使用中断端口,代码如下所示。

InterruptPort yourButton = 
new InterruptPort((Cpu.Pin)FEZ_Pin.Interrupt.LDR, true, 
Port.ResistorMode.PullUp, 
Port.InterruptMode.InterruptEdgeBoth); 

因此,所提供的设备被连接到一个中断启用的端口,你从中断端口创建了您的输入设备,而不是一个InputPort你应该能够创建中断事件处理程序。

相关问题