2012-06-07 2 views
2

В моем приложении нет. устройств (камера, A/D, D/A и т. д.) взаимодействуют с сервером. У меня есть два варианта экономии энергопотребления в устройстве, так как не все устройства должны работать всегда:Interupts Vs Poling a Device

1- Выполняйте проверку, то есть каждое устройство периодически следит за содержимым файла, где оно получает значение для пробуждения или спать. Если он находит пробуждение, то он просыпается и выполняет свою работу.

В этом случае на самом деле устройство будет спать, но драйвер будет активным и будет работать.

2- Используя прерывания, я могу пробудить устройство, когда это необходимо.

Я не могу решить, в каком направлении и почему. Может кто-нибудь, пожалуйста, просветит меня в этом отношении?

Платформа: Windows 7, 32 бит, работающий на Intel Core2Duo

+1

Очевидно, что подход, основанный на прерывании, лучше, чем опрос, потому что (.. много причин ..). Для какой платформы это? – valdo

+0

Windows 7, 32 бит, работающий на Intel Core2Duo – gpuguy

ответ

6

Polling является неточным по своей природе. Чем выше ваша целевая точность, тем более расточительным становится опрос. В идеале вы должны учитывать опрос, только если вы не можете сделать что-то с прерываниями; в противном случае использование прерывания должно быть предпочтительным.

Единственным исключением из этого правила является то, что вы хотели бы «дросселировать» что-то преднамеренно, например, когда вы можете получать несколько событий в секунду, но вы хотели бы реагировать только на одно событие в минуту. В таких случаях вы часто используете комбинацию опроса и прерываний, где прерывание устанавливает флаг, а опрос выполняет реальную работу, но только при установке флага.

2

Если ваши устройства должны периодически разбуждаться, я бы пошел на опрос с соответствующей частотой (которую всегда проще настроить, потому что он просто немного смотрит). Если события пробуждения асинхронны, я предпочел бы использовать архитектуру, управляемую прерываниями, несмотря на код и электронные накладные расходы.

0

Ну, это зависит от вашей аппаратной и программной архитектуры и сложности программного обеспечения. Лучше выбирать механизм прерывания по опросу.

Как и при опросе, ваш контроллер будет занят непрерывным опросом оборудования, чтобы проверить, доступно ли требуемое значение.

При использовании механизма прерывания освобождает контроллер для выполнения других задач, а при возникновении прерывания ваш ISR может выполнять задачу для конкретной необходимости.

Смежные вопросы