如何防止Microsoft.SPOT.Hardware.InterruptPort的无效配置?

本文关键字:无效 配置 InterruptPort Hardware 何防止 Microsoft SPOT | 更新日期: 2023-09-27 17:52:16

我正在尝试使用。net微框架的Microsoft.SPOT.Hardware.InterruptPort类。然而,文档让我很困惑:

有可能将InterruptPort对象配置为无效状态。在这种情况下,你的程序可能不会产生异常,直到它实际使用InterruptPort对象。例如,假设您创建了一个InterruptPort对象,其电阻模式设置为Port.ResistorMode.PullUp,中断模式设置为Port.InterruptMode.InterruptEdgeLevelHigh,故障过滤器设置为true。当实例化InterruptPort对象时,此配置不会生成异常。如果你添加了一个中断处理程序,. net微框架会抛出一个异常。

(重点是我自己的)

它没有提到哪些配置会导致这些无效状态,只给我留下了一个不应该做的任意示例。

有我遗漏的文件吗?
有没有什么重要的电子知识我忽略了?
还是MSDN在文档方面毫无用处?

如何防止Microsoft.SPOT.Hardware.InterruptPort的无效配置?

其实我也有同样的遭遇?/类似的问题。Hans是正确的,这取决于硬件——如果你使用的是GHI的FEZ系列设备,那么(我只是在撕裂我的头发几天后才从制造商那里发现)他们不支持级别中断,所以任何配置都使用InterruptMode。InterruptEdgeLevelHigh或InterruptMode。InterruptEdgeLevelLow将在您尝试连接中断处理程序时失败。MSDN上的文档很少,主要是因为微框架是社区贡献的开源。微软应用于。net框架其他版本的相同(商业)质量标准恐怕并不适用。如果您的主板制造商不是GHI,请首先检查他们是否支持电平中断。

我有同样的问题,但我的解决方案是不同的。是的,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);

因此,如果设备连接到中断启用端口,并且您从InterruptPort而不是InputPort创建了输入设备,您应该能够创建中断事件处理程序。

相关文章: