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.
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);
}
(Aus analog.c der Library)
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.
Lesezeichen