Also SternThaler,

das Brüten über der Datentabelle hat mir keine zündende Idee über die Ursache des Fehlers eingebracht . Daraufhin habe ich noch einmal das Datenblatt des ATmega8 vorgenommen und das Kapitel ADC (S. 192 - 20 nach Art einer FMEA durchgeforstet. Hier ist das Resultat:

Mögliche Fehlerquellen am ATmega ADC:

1. Frequenz der ADC-Wandlung tiefer als Auslesefrequenz:
Dauer Sample-and-hold: 1,5 - 13,5 ADC-Takte, normalerweise 1,5 Takte (Abs. 2, Seite 199)
Dauer ADC-Wandlung: 13 - 25 ADC-Takte, normalerweise 13 Takte (Abs. 2, Seite 199)
Dauer Vref-Umschaltung: nicht spezifiziert
Dauer Kanal-Umschaltung: abhängig vom Ende der laufenden ADC-Wandlung (Abs. 3, S. 200).

In Deinem Fall (ADC-Betriebsart nicht freilaufend, Kanal-Umschaltung unmittelbar vor Löschen des INT-Flags, Vref-Quelle unverändert) sind das 14,5 Takte (Tabelle 73, S. 200); bei einem ADC-Takt von 36kHz also 0,4 ms. Leider habe ich keine Formel zum Berechnen des ADC-Taktes aus MC-Takt und ADC-Vorteiler gefunden.
Möglicher Fehler: Die Wandlung wird durch das Timerinterrupt-Dienstprogramm gestartet (ADSC=high). Anschliessend wird versucht, ebenfalls vom Timer gesteuert, das Ergebnis vor Ende der Wandlung (ADSC=low bzw. ADIF=high in ASCSRA Abs.2, S. 206) auszulesen. Das liefert nicht den gewünschten Messwert sondern die vorherige Messung wird noch einmal gelesen.
Anderer möglicher Fehler: Die Wandlungszeit wird unerwartet lang, weil bei jedem Start der Wandlung das ADEN-Flag in ADCSRA gesetzt wird. In diesem Fall gilt die verlängerte Sample-and-Hold und Wandlungszeit von 38,5 ADC-Takten (Abs. 1, S199). Ergebnis ist wieder ein wiederholtes Auslesen des alten Messwertes.

2. Störfreies Auslesen nur, wenn zuvor vorheriges Ergebnis vollständig ausgelesen wurde: Bei 10-Bit-Wandlung immer erst ADCL, dann ADCH auslesen (Abs 2, S.19. Wenn die nächste Wandlung endet, bevor ADCH gelesen wurde, dann geht das neue Ergebnis verloren und stattdessen wird das alte erneut ausgegeben.
Möglicher Fehler: Es wird zu früh ausgelesen und statt des gewünschten das Ergebnis der vorhergehenden Wandlung nochmals gelesen.

3. ADMUX schaltet nie vor letztem Takt der laufenden ADC-Wandlung um: Während laufender Wandlung bleiben Änderungen von ADMUX unwirksam. Tatsächlich umgeschaltet wird erst beim letzten Takt der Wandlung (Abs. 1, S. 200).
Möglicher Fehler: Der Kanal wird zu spät, d.h. während der laufenden Wandlung in das Register ADMUX geschrieben. Weil die Umschaltung erst bei Ende der laufenden Wandlung wirksam wird, wird nochmals das Ergebnis der vorherigen Wandlung (alter Messwert aus altem Kanal) ausgelesen. Empfohlen wird Kanalumschaltung nach Auslesen des jüngsten Ergebnisses, unmittelbar vor Starten der nächsten Wandlung.

4. Mess-Spannung höher als Vref : Wenn die Messspannung ausserhalb des zulässigen Bereichs liegt, werden ADC-Werte "in der Nähe von" 0x03FF ausgegeben (Abs. 4, S. 201).
Möglicher Fehler: Es gibt Spitzen in der Ausgangsspannung des Fototransistors oder kurze Einbrüche in der Versorgungsspannung des MC (mit Einfluss auf die interne Referenzspannung).

5. Versehentliche Anwahl von ADMUX-Kanal 0b1110=0x0E: Mit diesem Kanal wird die interne Spannung von 1,23V umgewandelt (Tabelle 75, S. 206).
Möglicher Fehler: Der Kanal 0x0E wird versehentlich angewählt und die interne Referenzspannung ausgewertet.

Noch ein Test-Vorschlag: Versuchsweise mit 8-Bit Wandler arbeiten (ADLAR=1, nur ADCH auslesen). Das sollte schneller gehen und die Zeitkonstante, mit der die Ausreisser erscheinen müsste sich verändern (Wenn die Ursache in einer "unglücklichen" Koinziendenz liegt).

Irgendwie werdern wir's doch noch 'rauskriegen !

Ciao,

mare_crisium