Timer Overflow Interrupt

Gast #2163401
Lesenswert?

Hallo, ich brauche etwas Hilfe bei meiner Interrupt-Routine.
Ich will ein einfachen Countdown schreiben.

Dazu verwende ich den Overflow-Interrupt von Timer0.
Vom Interrupt funktioniert auch alles soweit.Das Problem
liegt das er nicht zurück ins Programm will? Im Simulator(avrstudio)
zählt er unendlich lang weiter.

Die Interrupt-Routine:
ISR (TIMER0_OVF_vect){
  i++;
  if(i==61){
    sek_timer++;
    i=0;
  }
}
Und der Abschnitt im Hauptprogramm:
.
.
sek_timer=0;
sek_ADC=2;
sei();
TIMSK = 0x01;    //overflow interrupt ein
while(sek_timer != sek_ADC){}   //warten bis Zeit vorbei
TIMSK = 0x00;    //overflow interrupt aus
cli();
.
.
.

alle 61 Overflows addiert er eine Sekunde zu sek_timer und 'sollte' 
diese
mit sek._ADC vergleichen (sek_ADC ist zum testen auf 2 Sekunden 
gesetzt).
Wenn die 2 Sekunden vorbei sind soll er zum Zählen aufhören und mit dem 
Programm fortfahren.

So hab ich mir das gedacht, er zählt aber unendlich lang weiter?

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren