Программные задержки в прерывании - это не просто плохой стиль программирования, это плохо выбранная структура программы.
Никакие CLI/SEI там не нужны.
1. Зашли в прерывание, считали результат.
2. установили следующий канал.
3. Пнули запуск АЦП.
4. Если надо изменили машину состояний.
На всё пару-тройку десятков машинных тактов если писать на Си.
Когда имеются более приоритетные критические по времени процессы, то опрос АЦП можно вынести в функцию main.
В вашем случае скорее всего также ошибка в выборе режима Free running.


