В случае, если контроллер дёргает много прерываний, а впрерываниях вызываются процедуры, плюс одно и тоже прерывание может быть вызвано дважды, до завершения обработки, приводит к тяжёлым и сложноотлавливаемым багам. Например срыву стека. Если сюда добавить использование глобальных переменных на пару с отсутствием volatile, то происходит тихий ужас. На прошлой неделе вылавливал такую багу как раз. Упростил обработчик до предела.
Ping-Pong на AVR