Forum: Mikrocontroller und Digitale Elektronik 1s PWM mit welchem Timermode?


von Spice (Gast)


Lesenswert?

Hallo Zusammen,

ich möchte per Timer bei einem mega128 eine PWM mit 1Hz realisieren.
Wie würde man da am besten vorgehen?
TimerOverflow würde sekündlich zb. den Portpin setzen, aber wie 
realisiere ich das löschen des Portpins per Timerinterrupt am 
elegantesten?
Welchen TimerMode würdet ihr da am besten benutzen? Dummerweise hängt 
der Pin nicht an einem OutputCapture, also muss ich das manuell lösen...

Danke und schönen Sonntag
Spice

von Christoph S. (mixer) Benutzerseite


Lesenswert?


von Karl H. (kbuchegg)


Lesenswert?

Wie hast du das denn hin gekriegt, dass du 1 Overflow pro Sekunde 
bekommst?
32kHz Quarz und entsprechender Vorteiler am Timer2?

Was spricht gegen den Compare Match Interrupt und eine ISR, die den Pin 
zurücksetzt?

von Spice (Gast)


Lesenswert?

Noch habe ich den Overflow pro sekunde nicht, müsste ich in der ISR so 
hinbiegen. Im grunde stehen noch alle Timer zur Verfügung. SoftPWM 
müsste ich mir erst genauer anschauen.

Karl Heinz Buchegger schrieb:
> Was spricht gegen den Compare Match Interrupt und eine ISR, die den Pin
> zurücksetzt?

Wie meinste das? Quasi beim "Sekunden Overflow" pin setzen und dann halt 
in der selben ISR mitzählen und prüfen, ob der pin schon gesetzt ist, 
wenn ja zurücksetzen?

Danke und Gruß
 Spice

von Hansi C. (honsey)


Lesenswert?

Spice schrieb:
> Overflow pro sekunde

bei einem overflow pro sekunde kannst du ja gar keinen dutycycle mehr 
regeln, oder?

es wäre dann doch sinniger z.B. 255 ovf/s zu haben, um dann mit einer 
variable von 0-254 regeln zu können wie lange der pin HIGH bzw LOW sein 
soll.

von Spice (Gast)


Lesenswert?

Danke Hansi,

genau so hab ich das auch gelöst... ich habe 900Ints/sec, da kann man 
schön in 10% Abständen regeln...

Gruß Spice

von Compare (Gast)


Lesenswert?

Warum keinen Phase Correct Mode PWM? Man braucht den den Output Pin ja 
nicht einzuschalten. Statt dessen den Compare Interrupt nutzen und den 
Pin in der ISR bei hochlaufenden Zähler zB einschalten. In der gleichen 
ISR beim runterzählen wieder ausschalten. Einen 16 bit Timer mit einem 
TOP Register auf die 1Hz PWM Frequenz trimmen.

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.