Danke für die schnellen Antworten, das ist die Auslesefunktion
Code:uint16_t GetAdc(uint8_t pin) { // min Prescaler = µC Frequ / 200 KHz & max Prescaler = µC Freq. / 50 khz = min 80 & max 320 ADCSRA = (1<<ADEN) | (1<<ADPS2) | (1<<ADPS1); // Prescalar = 128 DIDR0=0x00; DIDR2=0x00; uint8_t i; uint16_t result; uint16_t ergebnis; ergebnis = 0; // +------------ Dummy-Check ------------+ i = 1; // i x Dummy-Check while(i){ ADMUX = pin; // Kanal waehlen ADCSRA |= (1<<ADSC); // eine Wandlung "single conversion" while(!(ADCSRA & (1<<ADIF))); // auf Abschluss der Konvertierung warten (ADIF-bit) result = ADCL + (ADCH << 8); // Wandlungsergebnisse erfassen result = 0; // Zurücksetzen i--; } // +------------- Ermittlung ------------+ i = 10; while(i){ ADMUX = pin; // Kanal waehlen ADCSRA |= (1<<ADSC); // eine Wandlung "single conversion" while(!(ADCSRA & (1<<ADIF))); // auf Abschluss der Konvertierung warten (ADIF-bit) result = ADCL + (ADCH << 8); // Wandlungsergebnisse erfassen ergebnis = ergebnis + result; // Aufaddieren i--; } // +-------- Umrechnung & Ausgabe -------+ ergebnis = ergebnis / 10 ; return ergebnis; }







Zitieren
Lesezeichen