Da das letzte Problem gelöst ist habe ich ein schon wieder ein neues Problem:
In meinem Programm verwende ich den Timer Interrupt: SIG_Overflow 0, dieser wird auch ausgelöst, nun möchte ich aber auch noch einen Analog Wert einlesen!
Ich habe am Anfang meines Programm den ADC so initialisiert:
Und dann habe ich noch das Unterprogramm für den ADC im SIG_OVERFLOW0 aufgerufen:Code:void adc_init(void) { ADMUX=0x00; ADCSRA=(1<<ADEN); ADCSRA|=(1<<ADPS2)|(1<<ADPS1); SFIOR=0x00; }
Und jetzt kommt nach das Unterprogramm selber:Code:prozent_istwert=adc(1);
Code:float adc (unsigned char kanal) { long int x; ADMUX |= kanal; ADCSRA|=(1<<ADSC); while(ADCSRA&(1<<ADSC)) ; x=ADCL+ADCH*256; prozent_wert=(x*100)/1024; return(prozent_wert); }
Das Problem ist: wenn ich in das Unterprogramm gehe für den ADC, steigt er mir plötzlich aus und startet das Programm neu!!!
Zumindest ist es so im AVR STUDIO!
Deshalb meine Frage: Ist das nur im Studio so??? Weiß jemand warum das ist? Und was man dagegen tun kann?







Zitieren

Lesezeichen