(что у вас и происходит) чтобы оптимизатор не очень то оптимизировал кол когда перед ним появится эта переменная. Правило Буравчика: если переменная изменяется в прерывании, делай ее volatile. А зачем вы кстати в initADC запускаете старт преобразования? Получается что после initADC вы его сразу же перезапускаете.