Using of ADC registers on ATmega4809 (Uno Wi-Fi Rev2 board)

Here's a little function that should work. The original ADC register setting is restored after each use.

int analogReadFast(int ADCpin) {
  byte ADCregOriginal = ADC0_CTRLC;
  ADC0_CTRLC = 0x54; // reduced cap, Vdd ref, 32 prescaler
  int adc = analogRead(ADCpin);
  ADC0_CTRLC = ADCregOriginal;
  return adc;
}
1 Like