Forum: Mikrocontroller und Digitale Elektronik ATmega16 Timer 0 - 1 Sekunde warten


von hjen (Gast)


Lesenswert?

Hallo,

Wie kann ich beim ATmega16 den Timer 0 benützen um ca. jede Sekunden
einen Overflow zu erhalten?

Ich habe

/* enable overflow interrupt */
TIMSK |= (1 << TOIE0);
/* start Timer 0 */
TCCR0 |= (1 << CS02) | (1 << CS00);

gesetzt, doch damit gehts viel zu schnell.

von crazy horse (Gast)


Lesenswert?

irgendwo sind Grenzen :-)
1/fosz*1024 (Vorteiler)*256 (TCNT0), mehr geht nicht direkt mit dem
Timer0. Also in der Timer-ISR einen Zähler incrementieren, damit kann
man beliebig lange Zeiten erzeugen. Ok, beliebig nicht, irgendwann ist
der RAM an Ende :-)

von hjen (Gast)


Lesenswert?

Achso, also wenn der Prscaler 1024 ist, dann gäbe das ca. alle 16ms
einen Interrupt. Also, wenn ich einen counter 63 mal inkrementiere in
der ISR, sollte ich auf ca. 1 Sekunde kommen, richtig?

von Rahul (Gast)


Lesenswert?

richtig!

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.