Цитата(0x56 @ Jul 11 2009, 20:38)

а подскажите алгоритм
устанавливать флаг потом его проверять в обработчике прерывания таймера и доделывать то, что не доделал в обработчике внешнего прерывания?
Прерывания должны быть как можно короче.
То есть делаете неотложные дела (непосредственно связанные с прерыванием), и быстро выходите.
Иначе, если вложенные прерывания запрещены, вы не сможете их вовремя обработать и пропустите нужное событие (например, потеряете пришедший в UART байт)
А если разрешены вложенные прерывания, то в зависимости от приоритета, может и не пропустите событие, но в процессе может сильно разбухнуть стек.
Я обычно делаю быстрый цикл main(), который опрашивает флаги. А флаги выставляются по событиям, в том числе и в прерываниях.
По флагам запускаются нужные обработчики.
Для отсчёта длинных пауз (миллисекунды) обычно заводится переменная, которая по таймеру считает системные "тики".
А в нужных местах просто стоят проверки, "дотикала" она или ещё нет.
Опишите хотя бы на пальцах, что хотите сделать и для чего нужно ждать в прерывании.
Программирование делится на системное и бессистемное. ©Моё :)
— а для кого-то БГ — это Bill Gilbert =)