Der Sharp liefert knapp 3V (5V/1023*600) als Maximalwert, bei interner 2,5V Referenz gibt es deshalb einen ADC-Überlauf! Bei der Batteriemessung wird die Bordspannung über den Spannungsteiler R43/R44 gemessen.
(Aus analog.c der Library)Code:static inline void analog_setupNext(uint8_t pos) { switch (pos) { case 0: ADMUX = _BV(REFS0) | 1; break; case 1: ADMUX = _BV(REFS0) | 2; break; case 2: ADMUX = _BV(REFS0) | 3; break; case 3: ADMUX = _BV(REFS0) | 5; break; case 4: ADMUX = _BV(REFS0) | 6; break; case 5: ADMUX = _BV(REFS0) | 7; break; case 6: ADMUX = _BV(REFS0) | 4; break; case 7: ADMUX = _BV(REFS0) | 5; break; case 8: ADMUX = _BV(REFS0) | 6; break; case 9: ADMUX = _BV(REFS0) | 7; break; case 10: ADMUX = _BV(REFS0) | 0; break; } } ISR(ADC_vect) { analog_storeResult(analog_pos); if (++analog_pos>10) { analog_pos=0; } analog_setupNext(analog_pos); }
Analog.c setzt intern in der ADC-ISR mit analog_setupNext() neben der Kanalnummer auch die Reverenz. REFSO=1 im ADMUX-Register steht für "AVCC with external capacitor at AREF pin". Das bedeutet, alle ADC-Kanäle verwenden eine 5V-Referenz.







Zitieren

Lesezeichen