Требуется программист в Зеленограде
- обработка данных с датчиков; ColdFire; 40 тыс. e-mail:jobsmp@pochta.ru |
if( timeout != 0) --timeout;
volatile uint16_t timeout;
...
ATOMIC_CODE( timeout = TIMEOUT_VALUE; );
...
uint16_t temp;
...
ATOMIC_CODE( temp = timeout; );
if( !temp)
а_икс_то_прошёл;
Т.е. для меня "дешевле" всегда в прерывании обрабатывать этот таймаут, чем "разруливать флагами". И потом при применении не думать, можно ли сейчас этим таймаутом воспользоваться.
Кроме этого тик доделивается до какого-то интервала - например, 10, 20, 100мс (в зависимости от проекта).
И с этим интервалом бежит ещё свободный таймер, используемый в разных местах.