когда управление перехватил другой обработчик на пару сотен тактов - получите TCNT < MIN_DELAY и (_|_). Для 8-разрядного счетчика ситуация реальная. Проверка brsh её не отловит. Тогда выручит исчо одна проверка.
in ZL, TCNT0 ;
cpi ZL, MAX_DELAY ;
brsh too_high_delay ;
;--------------------------------
// Защита от зависания при TCNT0 < MIN_DELAY
cpi ZL, MIN_DELAY
brsh t0_00
ldi ZL, MIN_DELAY
t0_00:
;---------------------------------
clr ZH ; +
......