ADC gibt Wert zurück, trotz 0V

Gast #783197
Lesenswert?

Hallo zusammen

Ich versuche mich gerade am ADC des AT90CAN32. Initialisiert hab ich das 
so:
1
void ADC_Init (void)
2
  {
3
  uint16_t x;
4
  ADCSRA  |= (1<<ADEN) | (1<<ADSC) | (1<<ADATE) | (1<<ADIE) | (1<<ADPS1) | (1<<ADPS2);
5
  ADMUX |= (1<<REFS0) | (1<<MUX0);
6
  ADCSRA |= (1<<ADSC);            
7
      
8
  x = ADCL;
9
  x += (ADCH<<8);
10

11
  
12
  }

Der Wert wird dann folgendermassen ausgewertet:
1
ISR (ADC_vect)
2
  {
3
  value = ADCL;
4
  value += (ADCH<<8);
5
  voltage = (float) value * (float)VREF / 1023.0;
6
  if (voltage > MAXVAL)
7
  MOTOR_Move (STOP);
8
    }

Der Spannungswert am Eingang kommt vom Sense-Ausgang eines L6201. Wenn 
der Motor steht, messe ich am Sense-Ausgang und am ADC-Eingang 0V. Beim 
Debuggen mit AVR-Studio zeigt er mir aber einen Wert von value von 30-34 
an. Woran kann das liegen?

Gruss
Patrick
Gast #783211
Lesenswert?

Ich hab den Fehler gefunden. Ich benutze den Eingang ADC0.
Mit:
1
..| (1<<MUX0);
wird aber ADC1 als Eingang gewählt und der hängt natürlich irgendwo. Ich 
hab den Teil gelöscht und jetzt funktionierts.

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