Hallo,
ich habe an meinem ATMega169 der mit 5V betrieben wird ein
Analogeingang der zwischen 3 und 5 Volt schwankt. Diesen will
ich messen. Mit meinem Code unten schwanken die 16bit Werte
aber immer nur sehr wenig im gesamten Messbereich, so dass
die Auswertung nur sehr ungenau wird. Außerdem werden die
16bit Werte größer, wenn die Spannung kleiner wird, das verstehe
ich auch nicht.
Wenn ich den Teiler von 64 auf 32 stelle ändert das komischwerweise
auch nichts...
DANKE für Hilfe!Code:uint16_t readADC(uint8_t channel) { uint16_t result = 0; // init ADC, set to 64 ADCSRA = (1<<ADEN) | (1<<ADPS2) | (1<<ADPS1); // channel of the multiplexer ADMUX = channel; // external referencevoltage (AVCC 5.0 V) ADMUX &= ~(1<<REFS1); ADMUX |= (1<<REFS0); // open ADC ADCSRA |= (1<<ADSC); // dummy readout while(ADCSRA & (1<<ADSC)); // convert analog value ADCSRA |= (1<<ADSC); // wait for result while(ADCSRA & (1<<ADSC)); // read value result = ADCW; // ADC close ADCSRA &= ~(1<<ADEN); return result; }
Gruß
RICOLA







Zitieren

Lesezeichen