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


von Martin K. (spyro07)


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

von Thomas L. (tom)


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.

von Karl H. (kbuchegg)


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.

von Martin K. (spyro07)


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

von Michael Wilhelm (Gast)


Lesenswert?

>Und wie bekomme ich den wieder zum Anhalten?

TCCRX = 0;

MW

von Thomas L. (tom)


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.

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.