Timer Interrupts

Gast #1301940
Lesenswert?
• ▲
▼
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ß
#1302083
Lesenswert?
• ▲
▼
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 #1325789
Lesenswert?
• ▲
▼
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!
#1326020
Lesenswert?
• ▲
▼
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 #1326500
Lesenswert?
• ▲
▼
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 #1326508
Lesenswert?
• ▲
▼
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
#1326519
Lesenswert?
• ▲
▼
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 #1326528
Lesenswert?
• ▲
▼
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

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