Zu deinem Code:
Martin Fischer schrieb:
> uint8_t ad = ADCH;
Das alleine wird dir nicht viel bringen, da sind nur die oberen 2bit des
10bit-Ergebnisses drin (bzw. bei 8bit Wandlungen nichts)... Nimm ADC
oder ADCW und statt uint8_t dann uint16_t...
Außerdem solltest du vor der eigentlichen Messung eine Dummy-Wandlung
durchführen, damit der ADC "warmlaufen kann"...
Heißt: ADSC 2x schreiben, zweimal while(...), das zweite mal dann den
ADC Wert auslesen!
Viele Grüße
Anmerkung meinserseits: Hab übersehen, dass du ADLAR = 1 setzt... Dann
sind im ADCH die Bits 9-2... damit könntest du 0,2V messen... Trotzdem
lieber ganz auslesen und ganz verarbeiten...
Außerdem: mit welcher Frequenz läuft dein AVR? Vorteiler so wählen, dass
der ADC mit 50-200kHz läuft!