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
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.
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.
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
>Und wie bekomme ich den wieder zum Anhalten?
TCCRX = 0;
MW
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.