Код
ISR(ADC_vect)
{
cli();
в запрещении прерываний нет необходимости.
для ожидания конца цикла измерения используется delay... что не гут вообще и это потенциально "гоночный" код.
также не видно всё ли, что в прерываниях с модификатором volatile.
теперь можно и схему глянуть.