ATmega328P: Reading from ADCL make ADC stop conversion
ADCL must be read first before ADCH, as stated in the datasheet.
Use this code
/*
 * Section: Function Defintion
 */
void ADC_Setup(){
    // Enable the ADC
    ADCSRA |= 1&lt;&lt;ADEN;
    // Select the refence voltage to be AVcc, which is connected to Vcc in the Arduino Nano board
    ADMUX |= 1&lt;&lt;REFS0;
    // Set Prescaler to 128, so that the ADC clock is 16M/128= 125Khz
    ADCSRA |= (1&lt;&lt;ADPS2)|(1&lt;&lt;ADPS1)|(1&lt;&lt;ADPS0);
    ADCSRA |= (1&lt;&lt;ADSC) | (1&lt;&lt;ADATE) | (1&lt;&lt;ADIF);
    sei();
    
}
void ADC_StartConvert(){
    ADCSRA |= (1&lt;&lt;ADSC);
}
uint16_t ADC_read(){
    uint16_t i = ADCL + (((uint16_t)(ADCH))&lt;&lt;8);
    return i;
}