> erfassterWert = ADCH;
> erfassterWert = erfassterWert << 8;
> erfassterWert = ADCL | erfassterWert;
Das ist beim Umgang mit dem ADC der Standard-Anfängerfehler. Es muss
beim Auslesen der ADC-Datenregister unbedingt die Reihenfolge beachtet
werden. Erst ADCL, dann ADCH. Beim Lesezugriff auf ADCL werden beide
Register für einen Zugriff des ADC gesperrt, und zwar so lange, bis ADCH
gelesen wurde. Da Du nach dem Lesen von ADCL das ADCH erst im nächsten
Durchlauf wieder liest, der ADC aber in der Zwischenzeit keinen neuen
Wert reinschreiben kann, kommt immer das selbe raus.
Allerdings ist es in C unsinnig, die beiden Register getrennt
auszulesen. Jeder mir bekannte C-Compiler für AVRs bietet ein
16-Bit-Register ADC oder ADCW an und nimmt Dir beim Zugriff die Sache
mit der richtigen Reihenfolge ab, so dass Du Dir da keine Gedanken
drüber machen musst.
Abgesehen davon solltest Du überlegen, ob Du wirklich Gleitkommazahlen
brauchst, oder ob Festkommaarithmetik nicht besser ist...