Forum: Mikrocontroller und Digitale Elektronik Manueller Timerreset ATmega16


von Malte B. (oberammergau)


Lesenswert?

Hallo,

ich wollte fragen, ob es möglich ist, in einem Programm einen der in den 
ATmega eingebauten Timer manuell zurückzusetzen, um von einem bestimmten 
Moment an auf den Overflow zu warten.
Falls nicht, ist es eine vernünftige Alternative verschachtelte 
Schleifen zu benutzen oder gibt es eine naheliegendere Lösung?

Danke für die Hilfe :)

von Krapao (Gast)


Lesenswert?

Selbstverständlich ist das möglich. Du kannst z.B. mit TCNT0 = 0; den 
Timerzähler für Timer 0 auf 0 setzen.

von Josef M. (Firma: Privat) (jmoellers)


Lesenswert?

Krapao schrieb:
> Selbstverständlich ist das möglich. Du kannst z.B. mit TCNT0 = 0; den
> Timerzähler für Timer 0 auf 0 setzen.

Wer's noch genauer mag: man kann zusätzlich auch den Prescaler 
"resetten": Beim ATmega16 (*) das unterste Bit von Register SFIOR setzen 
und wieder zurücksetzen und auch der Prescaler fängt wieder von vorne 
an.
Achtung: damit wird der für beide Timer benutzte Prescaler 
zurückgesetzt!

(*) Bei den anderen ATmegas (z.B. den 8ern) geht das auch, da heißt das 
Register aber anders.

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.