В устройстве используется Atmega168 (TQFP32), в котором задействованы 5 каналов АЦП (ADC0 - ADC4). Частота выборки небольшая. Источник опорного - внешний, прецизионный. Питание АЦП - через фильтр. Программа написана на С, отлажена. Но это ремарка.
После прошивки МК считывает по всем каналам номинал опорного напряжения. При этом с платами всё в порядке, сигналы на входах на превышают опорное.
Инициализация АЦП следующая:
Код: Выделить всё
void ADC_init(char ch_name, char div_factor)
{
//cli();
// Первичный выбор канала
ADC_channel_select(ch_name);
// Коэффициент деления
ADC_prescaller(div_factor);
//ADIE запрещаем прерывание
ADMUX = (0<<REFS1)|(0<<REFS0)|(0<<ADLAR);
ADCSRA = (1<<ADEN)|(0<<ADATE)|(0<<ADIF)|(0<<ADIE);
DIDR0 = (1<<ADC4D)|(1<<ADC3D)|(1<<ADC2D)|(1<<ADC1D)|(1<<ADC0D);
// Слепое преобразование
ADC_start_conversion();
while(ADCSRA & (1<<ADSC));
//sei();
}В чём подвох?


