Das Programm ist sehr schwer zu lesen. Bitte schreibe es (wie schon weiter oben geschrieben) in Code Tags, damit es so aussieht wie in Beitrag 8.
Warum parametrierst du den ADC eigentlich linksbündig und schiebst das Ergebnis nach rechts? Mit "ADLAR = 0" hast du das selbe Ergebnis nur das du nicht nach rechts schieben musst. "ADLAR = 1" verwendet man nur wenn man mit 8Bit rechnet (der ADC wird erst aktualisiert wenn man ADCH gelesen hat).
Die Variable "x" benötigst du nicht, das Ergebnis kannst du auch dort schon in die variable "ergebnis" schreiben, da es in der "while"-Schleife sofort überschrieben wird (weil zuerst der ADC neu gestartet und anschließend in "ergebnis" geschrieben wird).
Was mir noch aufgefallen ist (was die Ursache sein kann). In der "while" Schleife startest du den ADC, Anschließend schreibst du solange "ADSC == 1" den ADC Wert in die Variable "ergebnis" und wenn die Wandlung fertig ist schreibst du den richtigen Wert nicht mehr in "ergebnis", weil du das ";" hinter der Zeile "while (ADCSRA &(1<<ADSC)) // Führe ADC-Wandlung solange aus bis abgeschlossen" vergessen hast.
MfG Hannes
Lesezeichen