PS: in deinem Code sind so einige Probleme enthalten.
1 | while ( !(ADCSRA & (1<<ADSC)) ) {} // auf Abschluss der Konvertierung warten
|
das wird nichts werden. Technisch gesehen, sagt dir das ADSC Bit, ob der
ADC arbeitet oder nicht. Im Free Running Modus arbeitet der aber
praktisch dauernd. D.h. du wirst dieses Bit nie auf 0 erwischen. Free
Running macht eigentlich nur Sinn, wenn man mit Interrupts arbeitet oder
wenn man ganz einfach den aktuellen ADC Wert ganz simpel ausliest "ohne
Rücksicht auf Verluste."
Aber eigentlich brauchst du den Free Running gar nicht. WEnn du messen
willst, setz das ADSC Bit um den ADC zu starten und warte auf das
Ergebnis. Genau so, wie es die Tutorial Routinen machen.
1 | if ( PORTC |= 0x01) // Set PC0
|
2 | {
|
3 | ausgabe +=ADCH; // Erste 8 Bit von 10 Bit nehmen.
|
4 | //c=ADC*0.004883;
|
5 | return ausgabe; // ADC auslesen und zurückgeben
|
was macht der return da mitten drinn?
und warum summierst du den ADC Wert?
Darf man fragen, was das hier
1 | if ( PORTC |= 0x01) // Set PC0
|
sein soll? Wozu ein if? Welchen Zweck soll das haben?