Also im GCC Tutorial dieser Site steht nichts dergleichen von ADIF etc.
Direkt aus dem Tutorial kopiert:
1 | uint16_t ReadChannel(uint8_t mux)
|
2 | {
|
3 | uint8_t i;
|
4 | uint16_t result = 0; //Initialisieren wichtig, da lokale
|
5 | Variablen
|
6 | //nicht automatisch initialisiert werden
|
7 | und
|
8 | //zufällige Werte haben. Sonst kann
|
9 | Quatsch rauskommen
|
10 | ADCSRA = (1<<ADEN) | (1<<ADPS1) | (1<<ADPS0); // Frequenzvorteiler
|
11 |
|
12 | // setzen auf 8 (1) und ADC aktivieren
|
13 | (1)
|
14 |
|
15 | ADMUX = mux; // Kanal waehlen
|
16 | ADMUX |= (1<<REFS1) | (1<<REFS0); // interne Referenzspannung nutzen
|
17 |
|
18 |
|
19 | /* nach Aktivieren des ADC wird ein "Dummy-Readout" empfohlen, man
|
20 | liest
|
21 | also einen Wert und verwirft diesen, um den ADC "warmlaufen zu
|
22 | lassen" */
|
23 | ADCSRA |= (1<<ADSC); // eine ADC-Wandlung
|
24 | while ( ADCSRA & (1<<ADSC) ); // auf Abschluss der Konvertierung
|
25 | warten
|
26 |
|
27 | /* Eigentliche Messung - Mittelwert aus 4 aufeinanderfolgenden
|
28 | Wandlungen */
|
29 | for(i=0;i<4;i++)
|
30 | {
|
31 | ADCSRA |= (1<<ADSC); // eine Wandlung "single
|
32 | conversion"
|
33 | while ( ADCSRA & (1<<ADSC) ); // auf Abschluss der Konvertierung
|
34 | warten
|
35 | result += ADCW; // Wandlungsergebnisse aufaddieren
|
36 | }
|
37 | ADCSRA &= ~(1<<ADEN); // ADC deaktivieren (2)
|
38 |
|
39 | result /= 4; // Summe durch vier teilen = arithm.
|
40 | Mittelwert
|
41 |
|
42 | return result;
|
43 | }
|
Also bevor Ihr das nächste Mal auf die Autoren des Tutorials
einschlagt: Richtig RTFM'men :)