Hallo,
Ich baue derzeit an einer Modellbau-Servosteuerung die mit Batterie
betrieben werden soll.
Der Stromverbrauch liegt im Normalfall (SLEEP_MODE_PWR_DOWN) bei 0,824mA
(davon 0,9µA vom Prozessor) und der Rest von der Hardware
(IR-Empfänger).
Sobald ich eine Messung mit dem ADC gemacht habe, benötigt der Prozessor
(im PWR_DOWN) 0,296mA. Egal wie oft ich ihn Wecke und wieder in den
Schlaf schicke!
Prozessor: Atmega8 (TQFP) @ 4MHz intern
Hier mein Code zum auslesen des ADC:
1 | unsigned int analog_input(unsigned char channel)
|
2 | {
|
3 | ADCSRA = (1<<ADEN) | (1<<ADPS2) | (1<<ADPS1); // Den ADC aktivieren und Teilungsfaktor auf 64 stellen
|
4 | ADMUX = channel; // Kanal des Multiplexers waehlen
|
5 |
|
6 | ADCSRA |= (1<<ADSC);
|
7 | while(ADCSRA & (1<<ADSC));
|
8 | return ADCW; //ergebnis
|
9 |
|
10 | ADCSRA &= ~(1<<ADEN); // ADC wieder deaktivieren
|
11 | }
|
Was mache ich falsch?
Gruß
René