Übersicht/ Möglichkeiten Timer

Hallo,

ich würde gerne mehr über die Möglichkeiten bzgl. der Einbindung/ Verwendung von Timern erfahren. Zum jetzigen Zeitpunkt arbeite ich (noch) ausschließlich mit millis() und hab von den Dingern noch keinen Plan.

Links/ Tipps Hinweise wären super.

Was mich primär interessiert:

Wann machen Timer Sinn?
Was kann man mit ihnen machen?
Welche Prozessoren werden unterstützt (Uno/Mega 2560)?

Gruß Chris

Timer gehen auf allen Prozessoren, aber der Mega hat mehr. Timer0 wird von millis() belegt. Timer2 ist sehr beliebt weil er sehr flexibel mit den einstellbaren Zeiten ist (durch die vielen Prescaler Optionen).

Gute deutsche Erklärung
http://www.mikrocontroller.net/articles/AVR-GCC-Tutorial/Die_Timer_und_Zähler_des_AVR

Ist zwar AVR, aber der Code geht auch auf dem Arduino (Minus main() und die unnötigen includes)

Der meist verwendende Modus ist CTC. Clear Timer on Compare Match. Der Counter zählt hoch, vergleicht sein Register mit einem festen Wert und wenn der erreicht ist wird ein Interrupt ausgelöst.

Ansonsten kannst du auch Sachen machen wie die Zeit zwischen zwei externen Ereignissen zählen oder gleich extern takten.

Mit PWM gibt es sehr, sehr viele Optionen, aber das macht der Arduino für dich mit analogWrite(). Es sei denn man will die Frequenz erhöhen. Dann kann man den Prescaler überschreiben.

Das Datenblatt des Prozessors ist eine gute Anlaufstelle für die Details

Danke,

das liest sich gut.

Gruß Chris

Hier ist noch was speziell zum Atmea328 und Arduino:
http://maxembedded.com/2011/07/14/avr-timers-ctc-mode/ (AVR, nicht Arduino, aber gut beschrieben)
http://letsmakerobots.com/node/28278
http://www.engblaze.com/microcontroller-tutorial-avr-and-arduino-timer-interrupts/

Da sind die Register genauer beschrieben. Aber letztendlich sollte man da wie gesagt ins Datenblatt schauen wenn man sicher sein will was was bedeutet.

Wenn du Google nach "AVR Timer" oder "Arduino Timer" bemühst findest du da zig Anleitungen