Forum: Mikrocontroller und Digitale Elektronik Timer Interrupts


von oney (Gast)


Lesenswert?

Hallo

kann mir wer bitte erklären was ein Timer Interrupt macht und wie es 
aufgebaut ist.Ich muss darüber ein Vortrag halten und hoffe das ich hier 
ein paar Infos bekomme.

mfg oney

von Stephan H. (stephan-)


Lesenswert?

findest Du in der Artikelsammlung

von Moritz (Gast)


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ß

von pfft. (Gast)


Lesenswert?

Normale Leute haben mit dem Datenblatt des Herstellers auszukommen. Nur 
Koeniginnen bekommen das Wesentliche vorgekaut.

von Martin V. (oldmax)


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

von Moritz (Gast)


Lesenswert?

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:)

von Martin V. (oldmax)


Lesenswert?

Hi
Nun ja, ga nichts machen knn auch eine Interruptroutine. Schreib da mal 
1000 x NOP rein und dann RETI
Außerdem ist Weiberjagen eine Tätigkeit....
Verdammt, wo sind die Smilies ???
Gruß oldmax

von michel (Gast)


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!

von Vlad T. (vlad_tepesch)


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.

von michel (Gast)


Lesenswert?

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...

von spess53 (Gast)


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

von michel (Gast)


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

von Karl H. (kbuchegg)


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.

von michel (Gast)


Lesenswert?

ok danke, dann werd ich das mal so probiern

von spess53 (Gast)


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

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.