И еще мнение, "..в догонку.."
Во-первых, так ли уж необходимо производить опрос через флаг, устанавливаемый сис.таймером?
Цитата(MrYuran @ Feb 10 2009, 09:25)

.... намного проще опрашивать порт по таймеру. То есть, системный таймер выставляет флаг раз в 2-5 мс, по этому флагу отдельный поток считывает порт ....
, разве не проще через Sleep(n) в самом процессе? /нет необходимости ни флаг создавать, ни конструкцию "сочинять" для установки флага с периодом, отличным от периода сис.тика (напр., флаг нужен через 3мс, а тик равен 1мс. А для Sleep(n) -> n=3 и "..все..")/.
...
И если "останавливаться" на Sleep(n), то не проще ли опрашивать через время достаточное для устранения дребезга...
Общепринятым считается:
- опрос состоятия через ~2..10мк;
- при получении изменения "задержка" опроса на ~50мс
/тут два варианта или "пауза", или подсчет числа обращений (3мс х 17 раз = 51 мс). Для RTOS приемлем последний вариант, посностью согласен с MrYuran/ ;
- повторный опрос;
- принятие решения.
А что если производить опрос через 50мс?
Получается:
- опрос /обнаружено изменение/;
- задержка 50мс;
- повторный опрос;
- принятие решения.
Дествия те же, но вот для RTOS от 17 (в нашем примере) циклов переключения процессов, со всеми вытекающими..., удается избавиться.
...
Что теряем? - Увеличивается время реакции на нажатие с 3мс до 50мс. Но при скорости печатания 150 знаков/мин (это очень хороший результат, обычно 100...120) время между нажатиями 60/150 = 400мс. А предполижить, что кнопками прибора бутут пользоваться с такой скоростью затруднительно.. То есть, применительно к EmbeddedDevice, вероятность пропуска нажатия кнопки еще меньше.
....
Быть может такое мнение ошибочно?