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

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.