PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : Frage zu Timern und Interrupts



stefan_Z
03.05.2009, 14:23
Ich möchte auf dem Mega32 an Pin OC1A 65.536 Takte für einen externen IC erzeugen.
Also die 10-Bit-PWM 64x durchlaufen lassen und fertig sind die Takte.
Wie finde ich aber raus, dass die PWM-Periode durch ist? Wird da ein Interrupt gesetzt? Und wenn ja, welcher?

Zusatzfrage:
Welches ist die schnellste Methode um externe Takte (mithilfe eines Hardware-Timers) zu erzeugen?
Und wie hoch kann der Takt maximal sein? 1:1, 1:2 oder noch schlechter?

Besserwessi
03.05.2009, 15:52
Einen externen Takt erzeugt man am einfachsten an einem der OC... Pins. Die Höchste Frequenz sollte wohl die halbe Taktfrequenz sein. Entweder den Timer im CTC mode bis eins zählen lassen und dann den Ausgang invertieren, oder ein PWM Signal 2 Takte lang mit Pulslänge ein takt. Den vollen Takt kann man bei einigen der neueren AVRs auch direkt ungeteilt auf einen speziellen Pin ausgeben, dann aber nicht so einfach abstellen.

Bei der PWM Periode kann ein Interrupt ausgelöst werden. In jedem Fall geht der output compare Interrupt. Bei einigen Modes könnte auch der Overflow Interrupt gehen.

thewulf00
03.05.2009, 18:50
Bei einem CTC-Timer auf Prescaler 2 ist eine '1' als Zielwert nicht möglich. Das haben wir durch Ausprobieren festgestellt. Das ist aber sowieso technisch schwierig, den Interrupt jeden 2. Takt aufzurufen^^..

Besserwessi
03.05.2009, 21:17
Man muß ja auch nicht den Interrupt so oft aufrufen. Es ginge nur um den Timer. Die Information ist aber schon interessant wie weit man runter gehen kann im CTC modus.

EDIT:
Nach dem Datenbaltt (Mega48P, sollte aber für mehrere gelten) soll sogar ein OC Wert von 0 gehen und dann im Toggle mode gerade f/2 am Ausgang liefern.

thewulf00
03.05.2009, 23:15
Das glaube ich erst, wenn ich es sehe...
Aber theoretisch sollte es möglich sein, wenn man eben keinen Interrupt dazu aufruft, das stimmt.