Forum: Mikrocontroller und Digitale Elektronik ADC gibt Wert zurück, trotz 0V


von Patrick (Gast)


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

von Patrick (Gast)


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.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.