Gast
#1980318
Hallo, ich folgenden Code programmiert, dieser funzt leider nicht. Wenn ich das ganze in AVR Studio simuliere bleibt der im ADC Interrupt hängen. Warum??? Warum geht er nicht ins Hauptprogramm zurück? Vielen Dank für eure Hilfe #include <avr/io.h> #include <avr/iom8.h> #include <avr/interrupt.h> volatile unsigned char tick,adcwert; void init_timer0 (void) { TCCR0 = 0x03; // Prescaler OSC/Takt /64 = 57600 Hz TIMSK = 0x01; // Setzt Interrupt für Timer0 1 TCNT0 = adcwert; // Startwert setzen } void ADC_init (void) { ADMUX = 0x00; // Channel 0 ADCSRA = 0xDD; // Prescaler /32 Int Enable; Single Shot Betrieb } ISR(TIMER0_OVF_vect) { TCNT0 = adcwert; // Startwert von AD Wandler übernehmen PORTB=!0x01; // Summer ein/ausschalten, wenn er aus/an ist } ISR(ADC_vect) { adcwert = ADCL; // ADC Wert der Variable adcwert zuweisen ADMUX = 0x00; // Channel 0 auswählen ADCSRA = 0xDD; // AD Wandler neu starten } void main (void) { SREG=0x80; // alle Interrupts neu einschalten DDRB=0x07; // PortB Pin 0,1,2 als Ausgang schalten ADC_init(); // ADC Initialisieren while(1) { if (ADIF==1) init_timer0(); } }