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