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;
}
Lesezeichen