Nie znam Twojego kodu, ale podzielę się z Tobą swoim doświadczeniem z ADC
1. Po przełączeniu kanału pierwszy pomiar wywalałem do kosza - był przekłamany - nie wiem do końca dlaczego tak było - niby poprzednia konwersja się skończyła... Być może ja popełniałem gdzieś błąd w kodzie, ale po wywaleniu pierwszej konwersji uzyskiwałem satysfakcjonujące mnie wyniki, więc tematu nie drążyłem.
2. Zmieniając kanał robiłem na nim serię pomiarów, z której wyciągałem średnią. Chodzi o to, że nie robiłem pomiaru pojedynczego i nie zmieniałem kanału, tylko po wykonaniu kilku pomiarów zmieniałem kanał.
Bawiłem się (chyba) atmega8. Było to dość dawno - z dwa, trzy projekty temu