Сделайте явный флаг и дайте ему volatile, как уже советовали, в цикле его нулите, стартуете АЦП, ждете, когда он взведется. А обработчик прерывания читает АЦП, кладет в данные (тоже volatile), а потом взводит флаг. В этом случае события могут идти только в определенной последовательности