coCo
18.09.2006, 20:44
Hi,
ich wollte den Akkustand mit dem Mega32 auslesen. An PA6 hab ich einen 22k Widerstand gegen +UB und einen 4,7k gegen Masse (so wie beim RN-Control).
Ich habe die Funktion aus dem microcontroller.net AVR-GCC Tutorial übernommen.
uint16_t ADC(uint8_t port) {
uint16_t result = 0;
ADCSRA = (1 << ADEN) | (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);
ADMUX = port;
ADMUX |= (1<<REFS1) | (1<<REFS0);
ADCSRA |= (1<<ADSC);
while ( ADCSRA & (1<<ADSC) ) { }
ADCSRA |= (1<<ADSC);
while ( ADCSRA & (1<<ADSC) ) { }
result = (ADCH << 8) + ADCL;
ADCSRA &= ~(1<<ADEN);
return result;
}
main():
uint16_t spannung = ADC(6);
spannung = spannung * (5/1024) * 5.2941;
Danach wird das dann über RS232 ausgegeben. Es wird aber immer nur ne 0 ausgegeben. :/
Die 5 Taster mit der Funktion abfragen funktioniert, aber mit der Spannung klappts net :(
Vielen Dank schonmal für eure Hilfe!
MfG
ich wollte den Akkustand mit dem Mega32 auslesen. An PA6 hab ich einen 22k Widerstand gegen +UB und einen 4,7k gegen Masse (so wie beim RN-Control).
Ich habe die Funktion aus dem microcontroller.net AVR-GCC Tutorial übernommen.
uint16_t ADC(uint8_t port) {
uint16_t result = 0;
ADCSRA = (1 << ADEN) | (1 << ADPS2) | (1 << ADPS1) | (1 << ADPS0);
ADMUX = port;
ADMUX |= (1<<REFS1) | (1<<REFS0);
ADCSRA |= (1<<ADSC);
while ( ADCSRA & (1<<ADSC) ) { }
ADCSRA |= (1<<ADSC);
while ( ADCSRA & (1<<ADSC) ) { }
result = (ADCH << 8) + ADCL;
ADCSRA &= ~(1<<ADEN);
return result;
}
main():
uint16_t spannung = ADC(6);
spannung = spannung * (5/1024) * 5.2941;
Danach wird das dann über RS232 ausgegeben. Es wird aber immer nur ne 0 ausgegeben. :/
Die 5 Taster mit der Funktion abfragen funktioniert, aber mit der Spannung klappts net :(
Vielen Dank schonmal für eure Hilfe!
MfG