corny335
29.10.2005, 19:41
Hallo,
aus irgend einem unerfindlichen Grund gibt mein ADC nur beim starten den richtigen wert zurück, wenn ich ihn das zweite mal benutzt gibt er noch immer den selben wert zurück und nicht den aktuellen.
hier mein code:
void AD_init(void){
ADMUX = (1<<REFS1) | (1<<REFS0);
ADCSRA = (1<<ADEN)|(1<<ADPS2)|(1<<ADATE);
}
int getAD(void){
ADCSRA|= 1<<ADSC;
ADCSRA|= (1<<ADIF);
while ( !(ADCSRA & (1<<ADIF)) ) {}
int x = ADCH * 256 + ADCL ;
return x;
}
ich vermute das es daran liegt dass das ADIF bit nicht wieder auf 1 zurück gesetzt wird, weiss aber nicht warum er das nicht macht.
ich benutzte einen ATMEGA 16.
getAD wird in einer endlos schleife angesprochen.
hat einer ne Idee?
mfg Cornelius
aus irgend einem unerfindlichen Grund gibt mein ADC nur beim starten den richtigen wert zurück, wenn ich ihn das zweite mal benutzt gibt er noch immer den selben wert zurück und nicht den aktuellen.
hier mein code:
void AD_init(void){
ADMUX = (1<<REFS1) | (1<<REFS0);
ADCSRA = (1<<ADEN)|(1<<ADPS2)|(1<<ADATE);
}
int getAD(void){
ADCSRA|= 1<<ADSC;
ADCSRA|= (1<<ADIF);
while ( !(ADCSRA & (1<<ADIF)) ) {}
int x = ADCH * 256 + ADCL ;
return x;
}
ich vermute das es daran liegt dass das ADIF bit nicht wieder auf 1 zurück gesetzt wird, weiss aber nicht warum er das nicht macht.
ich benutzte einen ATMEGA 16.
getAD wird in einer endlos schleife angesprochen.
hat einer ne Idee?
mfg Cornelius