mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Timer Interrupts


Autor: oney (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Stephan Henning (stephan-)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
findest Du in der Artikelsammlung

Autor: Moritz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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ß

Autor: pfft. (Gast)
Datum:

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

Autor: Martin Vogel (oldmax)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Moritz (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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:)

Autor: Martin Vogel (oldmax)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: michel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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!

Autor: Vlad Tepesch (vlad_tepesch)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: michel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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...

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: michel (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: michel (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
ok danke, dann werd ich das mal so probiern

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
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.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.