ADC-Initialisierung erhöht Stromverbrauch enorm

Gast #2971011
Lesenswert?

Hallo,

ich habe gerade ein kleines Board (Atmega 644p @16MHz) mit mehreren 
Sensoren aufgebaut. Mein Netzteil läuft beim Versorgen allerdings immer 
in die Strombegrenzung (120mA). Nachdem ich lange nach einem Kurzschluss 
in der Schaltung gesucht habe und eben keinen gefunden habe, habe ich 
ein leeres Programm aufgespielt (nur 30mA fliessen).

Ich konnte den Stromanstief auf die Zeile ADC_init eingrenzen. Ist die 
Zeile drin geht es in die Begrenzung, ansonsten liegt der Verbrauch bei 
ca.70mA (LEDs...).
1
int main(void)
2
{
3
/*
4
  DDRC = 0b11111111; 
5
  PORTC = 0b00000000; 
6
*/  
7
  DDRA = 0x00;          
8
  uart_init0();
9
  timer1Init();
10
  timerPWMInit();
11
  //ADC_Init();             //Die böse Funktion
12
  SPI_MasterInit();
13
  control_init();
14
  
15
  sei();
16
  
17
  while(1)
18
  {
19
  ...

die Funktion ADC_Init()
1
void ADC_Init(void) {
2
 
3
  uint16_t result;
4
 
5
  ADMUX = /*(1<<REFS1) | */(1<<REFS0);
6
  
7
  ADCSRA = (1<<ADPS2)|(1<<ADPS1) | (1<<ADPS0);     
8
  ADCSRA |= (1<<ADEN);                  
9

10
  ADCSRA |= (1<<ADSC);                  
11
  while (ADCSRA & (1<<ADSC) ) {         
12
  }
13

14
  result = ADCW;
15
}

Ich brauch die ADC Eingänge auch nicht auslesen, die Initialisierung 
reicht. Achja, ich habe einen Analogsensor dran mit Werten zwischen 0 
und 5V, die Werte liegen auch in dem Bereich

Ich kann mir das nicht erklären, vielleicht hat jemand eine Idee

Vielen Dank
Gast #2971024
Lesenswert?

Arrgh...

Genau das ist der Fehler, da ist ein Kurzschluss von ARef auf GND. Ich 
hätte gedacht, das ich den auch ohne die Initialisierung bemerke. Naja, 
hätte ich auch selber drauf kommen können -.-

Jedenfalls vielen Dank für deine Hilfe

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren