Возникла проблема с ADC в xmega256a3. Долго пытались разобраться, вроде все должно быть нормально, а нет.. Может вы увидите проблему свежим взглядом

АЦП настроен на 12 битный режим, внешнее референсное напряжение. При 0 вольт , значение АЦП сразу 420, далее плавно изменяется значение АЦП до 1075 при увеличении напряжения до 1 вольта. После этого резкий скачок на 1631. Далее опять плавно изменяется до 2460 (напряжение 2 вольта) и снова скачок до 3020. После этого снова плавное изменение до 3918 (3 вольта). Если одновременно контролировать напряжение осциллографом, то видно, что оно изменяется плавно во всем диапазоне.
В чем может быть проблема?
Код работы с АЦП:
CODE
/* инициализация АЦП */
ADCA.CTRLA = 0b00000101;
ADCA.CTRLB = 0b00000000;
ADCA.CH1.CTRL = 0b00000001;
uint16_t get_adc()
{
ADCA.REFCTRL |= (1<<5); // подаем смещение с пина AREFA
ADCA.CH1.MUXCTRL = 0b00100000; // выбираем ножку
ADCA.CH1.CTRL = 0b10000001; //запускаем преобразавние
_delay_us(30);
return ADCA.CH1.RES;
}
ADCA.CTRLA = 0b00000101;
ADCA.CTRLB = 0b00000000;
ADCA.CH1.CTRL = 0b00000001;
uint16_t get_adc()
{
ADCA.REFCTRL |= (1<<5); // подаем смещение с пина AREFA
ADCA.CH1.MUXCTRL = 0b00100000; // выбираем ножку
ADCA.CH1.CTRL = 0b10000001; //запускаем преобразавние
_delay_us(30);
return ADCA.CH1.RES;
}
В приложении фрагменты схемы устройства.
Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла
Нажмите для просмотра прикрепленного файла
Заранее благодарю за помощь!