Если задача простая, то и в поллинге (while(IsReady()) ничего плохого нет.[/uquote]
Семен Семеныч! Ну что же Вы так! if(IsReady()) норма. А while(IsReady()) это тупо простаивание пока интерфейс тупит.
с таймерами все просто, главное чтобы выполнение задачи укладывалось между тиками таймеров. Здесь нужен творческий подход. Если задача критическая - нужен жесткий аппаратный таймер с наивысшим приоритетом прерываний (пользуясь случаем, хочу передать привет приоритетам прерываний в 8-битных АВРках (про хмегу я в курсе)).
Если нужно время от времени что-то проверять - то сгодится и софтверный системный таймер. Вот у меня в проектах есть такой, допускающий 7 програмных таймеров (больше пока не требовалось), с приводом от одного аппаратного. На один повесил проверку буфера модбаса, на другой - считывание кнопок, третий пулит машину состояний ацп и готовит/проверяет буффер spi и т.д. В результате главный цикл - пустой.


