Les ATMega*u4 ont 12 canaux de numérisation ADC :
#include <avr/io.h>
void ad_init(unsigned char channel){
ADCSRA = (1<<ADPS2) | (1<<ADPS1) | (1<<ADPS0); // Résolution maximale
ADCSRB = (((channel&0x20)==0?0:1)<<MUX5); // Sélection du canal
ADMUX = channel&0x1f;
ADMUX |= (0<<REFS1) | (1<<REFS0); // Référence de mesure AVCC
ADMUX |= (1<<ADLAR); // Alignement gauche de la valeur
ADCSRA |= (1<<ADEN); // Convertisseur activé
}
unsigned int ad_capture(void){
ADCSRA |= (1<<ADSC); // Début de conversion
while(ADCSRA & (1<<ADSC)); // Attente de la fin de conversion
return ADCH; // Un seul octet retourné
}