Forum: Mikrocontroller und Digitale Elektronik Timer mit ATmega48


von Thomas P. (gonzo)


Lesenswert?

Hallo...

Ich experiemntiere schon seit einigen Wochen mit einem ATmega48. Dank
des AVR-GCC Tutorials habe ich auch schon eine vielzahl von Sachen wie
USART hinbekommen. Das einzige was ich nicht verstehe ist wie ich einen
Timer programmiere. Kann mir jemand mal ein ganz einfaches Beispiel in C
schreiben wo eine LED an PB0 (active LOW) im 1sec Takt blinkt? Am AVR
hängt ein Quarz mit 4 Mhz und der AVR selbst läuft auch mit 4 Mhz (Fuse
Low Byte = 0xe0)

Danke

von Thomas P. (gonzo)


Lesenswert?

entschuldigung die LED ist active High

von TravelRec. (Gast)


Lesenswert?

Warum nicht das Datenblatt benutzen, die entsprechenden Register setzen
und gucken, was ´rauskommt?! Vorerst nur mal das Overflow Flag pollen,
später dann einen passenden Interrupt benutzen und eine
Interrupt-Service-Routine programmieren.

von Dennis Kleine-Beck (Gast)


Lesenswert?

Hallo,

ich empfehle die ATMEL Application Notes!
Für Timer z.B.:

http://www.atmel.com/dyn/resources/prod_documents/DOC2505.PDF

Gruß,
Dennis

von Thomas P. (gonzo)


Lesenswert?

so habe das jetzt wie folgt versucht:

TIMSK0 |= (1 << TOIE0);
TCCR0A |= (1 << CS02) | (1 << CS00);

leider sind das ja nur ca 63mn (richtig?).
Aber auch wenn ich das in eine for schleife reinhänge bekomme ich
keinen längeren Timer hin. Kann mir jemand sagen was ich falsch mache?

von johnny.m (Gast)


Lesenswert?

Mit den Einstellungen sollten es bei 4 MHz ziemlich genau 65,536 ms
sein. Wenn Du mehr haben willst, nimm entweder nen 16-Bit-Timer (der
geht dann bis fast 17 s) oder ne Zählvariable...

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.