中断与轮询设备

时间:2012-06-07 10:18:45

标签: c windows-7 embedded

在我的申请中没有。设备(相机,A / D,D / A等)正在与服务器通信。我有两种方法可以节省设备的功耗,因为并非所有设备都必须始终工作:

1-进行极化,即每个设备定期继续查看文件内容,以获取唤醒或睡眠的值。如果它发现了唤醒,那么它就会醒来并完成它的工作。

在这种情况下,实际上设备将处于休眠状态,但驱动程序将处于活动状态并进行极化。

2-使用中断,我可以在需要时唤醒设备。

我无法决定走哪条路以及原因。有人可以在这方面赐教我吗?

平台:Windows 7,32位,在Intel Core2Duo上运行

3 个答案:

答案 0 :(得分:6)

投票本质上是不精确的。目标精度越高,轮询就越浪费。理想情况下,只有在无法执行中断操作时才应考虑轮询;否则,应优先使用中断。

此规则的一个例外是,如果您想故意“限制”某些内容,例如,当您每秒钟可能获得多个事件时,但您希望每分钟只响应一个事件。在这种情况下,您经常使用轮询和中断的组合,其中中断设置标志,轮询执行实际作业,但仅在设置标志时。

答案 1 :(得分:2)

如果要定期唤醒你的设备,我会以适当的频率进行轮询(这总是更容易设置,因为它只是看了一下)。如果唤醒事件是异步的,我宁愿选择中断驱动的架构,尽管有代码和电子开销。

答案 2 :(得分:0)

这取决于您的硬件和软件架构以及软件的复杂性。在轮询中选择中断机制是最好的。

在轮询中,您的控制器将忙于连续轮询硬件以检查是否有所需的值。

使用中断机制会释放控制器执行其他任务,当出现中断时,ISR可以根据特定需要执行任务。