Цитата(Andy_F @ Apr 11 2007, 10:02)

Как диагностировать происходящее,
В начало обработчика вставляем команду "дернуть ногой вверх". В конец - "дернуть ногой вниз". Запускаем программу, смотрим осциллографом, синхронизация по фронту. Пока система успевает - "вверх" будет стоять на одном месте и между "вниз" и следующим "вверх" будет свободное место. Вольтметром можно измерять загрузку системы

Как только "вверх" начинает дергаться - все, приплыли. А как исправить -
_Bill абсолютно прав. Причем делать это надо было сразу, не дожидаясь пока программа глючить начнет.
Цитата(Andy_F @ Apr 11 2007, 11:21)

Это способ обойти проблему, не всегда это возможно.
Это способ не породить данную проблему. Если не получается - значит надо увеличивать тактовую частоту ядра или брать другой (более скоростной) процессор. Или перекраивать алгоритм.
Цитата(Andy_F @ Apr 11 2007, 11:21)

Интересует "физика" процесса, что, собственно, не так ?
Да не успевает процессор обработать прерывание до возникновения следующего. Можете еще так проверить - в конце обработчика проверить флаг этого прерывания - не взведен ли он уже. Если взведен - дергайте ногой. Осциллографом увидите дерганье в моменты, когда система не успевает.