Timer Interrupts

Gast
Ließ doch erst mal nach, wenn du dann noch Fragen hast melde dich.
Ich will hier nicht den Text von Wikipedia etc. rein kopieren, das ist 
nicht Sinn der Sache. Wir machen auch keine Hausaufgaben.
Wenn du dich grob informiert hast, helfen wir dir gerne.

Gruß
hi
Auch wenn ich Gefahr laufe, Hausaufgaben zu machen, einen Tipp hab ich:
Ein Timer - Interrupt ist wie die Pausenglocke in der Schule.
Normaler Ablauf ist Unterricht. Es bimmelt (Interrupt) Alle gehen zur 
Pause. ( Interruptroutine) Nach der Pause ist wieder Unterricht.....
Nun ja, ich geb zu, ein wenig hinkt dieses Beispiel.
Gruß oldmax
Gast
Ja es hinkt wirklich! Aber nur, weil die Schüler während des 
Interrupts(Pause)garnichts machen und danach auch nicht da weiter 
machen, wo sie aufgehört haben:)
Gast
muss dass thema hier mal wieder aufgreifen...

folgendes problem:

ein timer hat nach 4sec einen overflow, durch den interrupt soll dann 
für 1sec eine andere funktion ausgeführt werden. ich weiß, ein 
1sekündiger interrupt ist zu lang, ist ja aber nur ein beispiel....

der erst durchlauf funktioniert mit den entsprechenden zeitabständen, 
beim 2ten durchlauf verkürzt sich die zeit bis zum overflow auf 3sec.

mit was hängt das zusammen? muss ich mein timer kurz vor ende der ersten 
interrupt routine auf 0 zurückstellen?

danke!
der timer läuft der weile weiter.
Du kannst ihn natürlich manuell zurücksetzen.
wenn der Timer überläuft während du in der Routine bist (und interupts 
nicht selbst wieder angeschaltet hast) wird nur ein Flag gesetzt, das 
der Interupt aufgetreten ist.
Sobald Interupts wieder aktiviert werden, werden die Pending interupts 
ausgeführt.

Da das ganze allerdings nnur ein 1bit Flag ist, kann von jeder 
Interuptsorte nur ein Interupt nachgeholt werden. alle weitere sind 
verloren.
Gast
danke!

hat es dann was mit dem TIFR register zu tun??

hab da mal 0b10000000

reingeladen. D.h das TOV Flag auf 1 gesetzt. Bin ich da falsch??? Es hat 
zumindest zu keiner verbesserung geführt...
Gast
Hi

>D.h das TOV Flag auf 1 gesetzt. Bin ich da falsch???

Ja. Mit dem Schreiben einer 1 in das Flag wird es gelöscht.

Deine Beschreibung der Problematik ist etwas schwammig. So richtig wird 
man nicht schlau draus.

MfG Spess
Gast
mein problem ist mein timer nach dem overflow zu stoppen. So wie es 
aussieht und so wie ich es verstanden habe zählt mein timer nach dem 
ersten overflow und somit dem interrupt einfach weiter. er soll aber 
erst nach ende des interrupts wieder von vorne beginnen.

ist es jetzt so, wenn ich kurz vor ende des interrupts das flag mit 
setzen durch eine 1 lösche, dass mein timer dann wieder bei 0 anfängt zu 
zählen?

danke
michel schrieb:
> mein problem ist mein timer nach dem overflow zu stoppen. So wie es
> aussieht und so wie ich es verstanden habe zählt mein timer nach dem
> ersten overflow und somit dem interrupt einfach weiter. er soll aber
> erst nach ende des interrupts wieder von vorne beginnen.
>
> ist es jetzt so, wenn ich kurz vor ende des interrupts das flag mit
> setzen durch eine 1 lösche, dass mein timer dann wieder bei 0 anfängt zu
> zählen?

Nein, ist es nicht. Warum sollte es auch. Das Flag löscht die 
Markierung, dass ein Interrupt aufgetreten ist. Aber das ist doch für 
den Zählerstand höchst unerheblich. Dein Autotacho geht ja auch nicht 
auf 0, nur weil du den Blinker zurückschaltest.

Wie gesagt: Der Timer zählt einfach weiter.
Wenn er aufhören soll zu zählen, setzt du einfach den Timertakt (per 
Vorteiler) auf 0. Wenn er wieder weiterzählen soll, stellst du wieder 
einen Vorteiler ein.
Gast
Hi

Dann mach es doch einfach so: Im Overflow-Interrupt den Timer stoppen. 
Ein Flag setzen. Im Hauptprogramm dieses Flag abfragen und bei gesetzten 
Flag deine zweite Routine starten. Wenn die fertig ist das Flag löschen 
und den Timer wieder starten.

MfG Spess

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

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.