Tut mir Leid dass ich so frag... Anxious Aber nur dadurch lerne ich etwas...
Das ist wohl wahr...

ich war der Meinung dass ich die Variable result global anlegen muss, da Sie ja auch in mehreren Methoden verwendet wird...
Hab ich mich verguckt ?

result wird in main gebraucht und von ADC_einlesen geliefert

deklariere dann in der main result mit uint16_t result;

In ADC_einlesen wird auch eine lokale Variable deklariert und eine 0 zugewiesen
Code:
uint16_t result = 0;
Blöd wenn sie den gleichen Namen haben, das stört aber nicht weiter, wenn Du magst kanst Du sie anders benennen.

So die Sache mit ADC ausschalten, in der ADC_init wird ADC eingeschaltet, gut
In ADC_einlesen zum Schluß abgeschaltet, und wo wird ADC neu eingeschaltet in der 2. 3. ...n. Wandlung ?

ja die 2-er Potenzen.
Wie Teilt man durch 2-er Potenzen...
Indem man die Zahl binärgesehen um eine Stelle nach rechts schiebt, Beispiel:

Code:
11001100 -> dezimal 204
01100110 -> dezimal 102
Das wäre da /2 /4 muß man es noch eine Stelle nach rechts schieben usw.
und weißt Du wie lange der AVR für dies da ^ braucht ?
1. Takt bei Deiner 16 Bit Variable dann 2 Takte bei Teilen durch 4 4 Takte
burch 8 6 Takte usw.

Wieviel er bei Teilen /3 braucht entzieht sich meiner Kenntnis, aber glaub mal länger und verbraucht auch entsprechend viel Flash.

So klar soweit ?

Gruß Sebastian