Hallo zusammen,
habe ein Problem mit folgendem Quellcode:
Und zwar wird der Timer Interrupt nicht mehr ausgeführt, seitdem ich in die While-Schleife einen Code integriert habe.Code:#define F_CPU 1000000UL #include <avr/io.h> #include <avr/interrupt.h> #include <util/delay.h> ISR(TIMER1_COMPA_vect) //Interrupt service routine wenn Vergleichswert erreicht ist { static uint16_t vTeiler = 0; //Deklarieren von vTeiler swTeiler++; //Zählschritt einstellen if (vTeiler == 2) //Wert bis Interrupt ausgelöst wird { vTeiler = 0; PORTD |= (1<<PD6); _delay_ms(4000); //Schmierzeit PORTD &= ~(1<<PD6); } } int main (void) { DDRD |= (1<<PD6); //Timer konfigurieren TCCR1B |= (1<<WGM12) | (1<<CS12); //CTC-Mode und Vorteiler auswählen //Tabelle TIMSK |= (1<<OCIE1A); //Timer1 auswählen //Interrupt aufrufen, wenn Vergleichswert erreicht ist //Tabelle OCR1A = 65499; //Vergleichswert zur bestimmung einer Sekunde //Interrupts aktivieren sei(); int i = 0; //Schleifenvariable deklariert while(i<2) //Zwei mal wird die Schleife durchlaufen { i++; PORTD |= (1<<PD6); _delay_ms(3000); //Schmierzeit PORTD &= ~(1<<PD6); _delay_ms(3000); } return (0); }
Es macht auf mich den Eindruck als würde, das komplette Programm stehen, nachdem die While-Bedingung nicht mehr erfüllt wird.
Sorry für die Anfänger Frage, aber bin blutiger Anfänger, was das Programmieren betrifft.
Gruß
damnit







Zitieren


Lesezeichen