double ADC_conversion(unsigned char mux, unsigned char MW) // Spannung messen (single ended) { ADMUX = mux; // Multiplexer-Modus einstellen _delay_us(40); // Pause bis Multiplexer eingestellt ist double Messwert = 0; unsigned int ADC_temp; unsigned char i = 1; do { ADCSRA |= (1<= 512) // wenn Bit 9 gesetzt => negativer Wert { ADC_temp += 64512; // Bit 10..15 auf '1' => negative INT-Zahl } Messwert += ADC_temp; // Ergebnisse der Messungen addieren i++; // Schleifenzähler erhöhen } while (i <= MW); // MW Messungen für bessere Genauigkeit Messwert = Messwert/MW; // Mittelwert der Messungen der globalen Variable zuweisen return (Messwert); }