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
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ß
Normale Leute haben mit dem Datenblatt des Herstellers auszukommen. Nur Koeniginnen bekommen das Wesentliche vorgekaut.
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
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:)
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
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.
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...
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.