Timer - Programmierung!

Gast #78030
Lesenswert?

Hi!

Ich habe vor kurzem begonnen einen ATMega16 in C zu programmieren.
Jetzt habe ich im Handbuch gelesen, dass es auch einen Timer gibt, doch
leider weiß ich überhaupt nicht wie ich diesen programmieren kann.

Im Grunde zählt das "Ding" ja bis zur einer Obergrenze und löst dann
einen Interrupt aus (im normal mode). Aber wie kann ich jetzt z.B.
sagen, dass er 40 us warten soll bis er die nächste Anweisung ausführt
??

mfg, Gerald
Gast #78032
Lesenswert?

Im Prinzip musst du dir einfach nen Taschenrechner nehmen und anfangen
mit rechnen. Wichtige Größen sind deine Taktfrequenz, der nötige
Prescaler und die Zählgrenze (TOP), an der der Timer wieder auf Null
gesetzt werden soll.
Bsp.:
ftakt = 8 MHz
Prescaler = 8
--> jeder Zählschritt dauert etwa 1/1MHz = 1us
d.h. wenn der Zähler bei 40 angekommen ist, sind 40us vergangen.
Es muss lediglich noch der richtige Interrupt freigegeben werden und
Interrupts global erlaubt sein.
Hoffe, ich konnte helfen.

Alex
Gast #78033
Lesenswert?

Danke für die schnellen und hilfreichen Antworten.
Jetzt wird mir schon einiges klarer...
Eine Frage nr noch zum Prescaler: Mit dem kann man die Taktfrequenz
sozusagen "skalieren", ist das richtig?

mfg, Gerald
Gast #78036
Lesenswert?

mc-project.de

Programme -> Timer
ist für den ATMega8 geschrieben, eine Adaption auf andere ATMega's
sollte kein Problem sein.
Prinzipiell hilft aber auch das Datenblatt, dort ist alles haarklein
erklärt!
Gast #1463630
Lesenswert?

Hallo.
Dazu habe ich auch noch eine Frage. Ich habe das gleiche mit einem 
C8051F060 probiert. Oszillator auf 24.5MHz, Prescaler=1, Interrupt 
freigegeben, Code läuft.

Jetzt möchte ich eine Rechteckschwingung (PIN Toggle) haben, welche mit 
100Hz läuft, d.h. mit 200Hz toggelt. Beim SiLabs gibt es einen schönen 
Hardware Wizard dazu, welcher mir das alles ausrechnet.

Um das zu erreichen muss der Timer SYSCLK/2 als Timebase haben und dann 
mit dem Wert 0x10BE beladen werden damit er das macht was er soll. 
Leider kommt danach am Oszilloskop eine 90Hz Schwingung heraus! Ich werd 
noch Wahnsinnig.

Die Dateien im Anhang helfen beim Verständnis.
Wenn ich die SYSCLK ändere, verändert sich auch die Rechteckschwingung, 
obwohl ich immer den richtigen Preloader Wert in die RCAP2H und RCAP2L 
eingetragen habe...
Angehängte Dateien:
Dieser Beitrag ist gesperrt und kann nicht beantwortet werden.