Исходник:


Код
#include "avr_compiler.h"
#include "clksys_driver.h"
#include "adc_driver.h"

unsigned short ADC[4]; // массив для результов измерения
int main(void)
{

//////////////////////////////////////////////////////////////////////////
    // Fcpu=8 MHz - 32 МГц RC-генератор делённый на 4
    CLKSYS_XOSC_Config( OSC_FRQRANGE_12TO16_gc,
        false,
        OSC_XOSCSEL_XTAL_16KCLK_gc);
    CLKSYS_Enable( OSC_XOSCEN_bm );
    do {} while ( CLKSYS_IsReady( OSC_XOSCRDY_bm ) == 0 );
    CLKSYS_Main_ClockSource_Select( CLK_SCLKSEL_XOSC_gc );
    CLKSYS_Prescalers_Config( CLK_PSADIV_4_gc, CLK_PSBCDIV_1_1_gc);
    CLKSYS_Disable( OSC_RC32MEN_bm );
//////////////////////////////////////////////////////////////////////////
    //// ADC Config
    ///* Move stored calibration values to ADC A. */
    ADC_CalibrationValues_Load(&ADCA);
    ///* Set up ADC A to have signed conversion mode and 12 bit resolution. */
    ADC_ConvMode_and_Resolution_Config(&ADCA, ADC_ConvMode_Unsigned, ADC_RESOLUTION_12BIT_gc);
    ///* Set sample rate. */
    ADC_Prescaler_Config(&ADCA, ADC_PRESCALER_DIV256_gc);
    ///* Set reference voltage on ADC A*/
    ADC_Reference_Config(&ADCA, ADC_REFSEL_INT1V_gc);
    ///* Setup channel 0 */
    ADC_Ch_InputMode_and_Gain_Config(&ADCA.CH0,    ADC_CH_INPUTMODE_SINGLEENDED_gc, ADC_CH_GAIN_1X_gc);
    ADC_Ch_InputMode_and_Gain_Config(&ADCA.CH1,    ADC_CH_INPUTMODE_SINGLEENDED_gc, ADC_CH_GAIN_1X_gc);
    ADC_Ch_InputMode_and_Gain_Config(&ADCA.CH2,    ADC_CH_INPUTMODE_SINGLEENDED_gc, ADC_CH_GAIN_1X_gc);
    ADC_Ch_InputMode_and_Gain_Config(&ADCA.CH3, ADC_CH_INPUTMODE_SINGLEENDED_gc, ADC_CH_GAIN_1X_gc);
    ///* Enable ADC A .*/
    ADC_Enable(&ADCA);
    ADC_Wait_8MHz(&ADCA);
    while (1) {
        {    
            ADCA.INTFLAGS=15;
            ADC_Ch_InputMux_Config(&ADCA.CH0, ADC_CH_MUXPOS_PIN3_gc, 0);
            ADC_Ch_InputMux_Config(&ADCA.CH1, ADC_CH_MUXPOS_PIN4_gc, 0);
            ADC_Ch_InputMux_Config(&ADCA.CH2, ADC_CH_MUXPOS_PIN6_gc, 0);
            ADC_Ch_InputMux_Config(&ADCA.CH3, ADC_CH_MUXPOS_PIN7_gc, 0);
            // запуск преобразования
            ADC_Ch_Conversion_Start(&ADCA.CH0);
            ADC_Ch_Conversion_Start(&ADCA.CH1);
            ADC_Ch_Conversion_Start(&ADCA.CH2);
            ADC_Ch_Conversion_Start(&ADCA.CH3);
            
            while (ADCA.INTFLAGS!=0x0F);
            ADC[0]=ADC_ResultCh_GetWord_Unsigned(&ADCA.CH0, 0);
            ADC[1]=ADC_ResultCh_GetWord_Unsigned(&ADCA.CH1, 0);
            ADC[2]=ADC_ResultCh_GetWord_Unsigned(&ADCA.CH2, 0);
            ADC[3]=ADC_ResultCh_GetWord_Unsigned(&ADCA.CH3, 0);
        }
    }
}



На вход PA4 подаётся постоянное напряжение 0,2 В от стабильного источника, но после завершения преобразования результаты измерения оказаваются вместо ожидаемых ~950 в диапазоне 970-1024.
При запуске по одному каналу проблем с разбросом результата нет.
Очевидно, что что-то делаю неправильно, но могу понять, где ошибка.