mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Mega8 Timer erst nach Interrupt starten


Autor: Martin K. (spyro07)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
ist es irgendwie möglich, den Timer erst nach dem ein externer Interrupt 
aufgetreten ist zu starten? Und das der Timer dann wieder nach einer 
Weile aufhört?

mfg

Martin

Autor: Thomas L. (tom)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Natürlich: Über das TCCR Register kannst du den Timer laufen lassen 
(entweder mit einem Vorteil oder synchron mit dem CPU Takt) oder 
anhalten.

Wann genau er anhalten soll musst du näher definieren, aber sollte ja 
kein größeres Problem sein.

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

Bewertung
0 lesenswert
nicht lesenswert
Martin K. wrote:
> Hallo,
> ist es irgendwie möglich, den Timer erst nach dem ein externer Interrupt
> aufgetreten ist zu starten? Und das der Timer dann wieder nach einer
> Weile aufhört?

Ein Timer läuft, sobald er einen Vorteiler gesetzt bekommt.
Wie und wann du den Vorteiler für einen Timer setzt (bzw.
zurücksetzt um den Timer anzuhalten) ist ganz alleine
dir überlassen. Du kannst zb. im Interrupt Handler für
einen externen Interrupt den Vorteiler auf den von dir gewünschten
Wert setzen. Dann beginnt der Timer zu laufen sobald der externe
Interrupt auftritt.

Autor: Martin K. (spyro07)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,
danke für die Antworten, hätte ich auch selber drauf kommen können.
Und wie bekomme ich den wieder zum Anhalten? So nach einer bestimmten 
Zeitspanne, einfach mit einer Warteschleife im Inerrupt-Programm und 
dann den Vorteiler wieder zurücksetzen?

mfg

Autor: Michael Wilhelm (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Und wie bekomme ich den wieder zum Anhalten?

TCCRX = 0;

MW

Autor: Thomas L. (tom)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Zeitspanne kannst du beliebig vorgeben. Das kann z.B. ein externer 
Interrupt sein oder eben sonst ein Ereignis (ob nun in der main oder in 
einem anderen ISR Handler ist egal).

Damit der Timer wieder anhält (und keine Interrupts bei Overflow oder 
ähnlichem erzeugt) setzt du das TCCR Register auf 0 (kein Vorteiler, 
kein Takt).

Kommt halt drauf an was du machen willst, erst so ergibt sich dann die 
"optimale" Lösung.

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.