ATMega328: Timer 0 im CTC-Mode, Gegentakt

Gast #5009861
Lesenswert?

Versuche gerade den Timer 0 im CTC-Mode zu betreiben, so dass die Pins 
OC0A und OC0B bei jedem Match die Polarität im Gegentakt wechseln. Die 
Pins sind als Ausgänge (DDRD) definiert und OC0A auf High und OC0B auf 
Low gesetzt(PORTD).

Da das nicht funktioniert (die Pegel bleiben gleich) stellt sich die 
Frage, ob das überhaupt möglich ist.
Gast #5009868
Lesenswert?

Stefan E. schrieb:
> Bogdan schrieb:
>> OC0A auf High und OC0B auf
>> Low gesetzt(PORTD)
>
> Genau da liegt dein Denkfehler. Wenn die Pins mit dem Timer verbunden
> sind, ist PORTD komplett irrelevant, es zählen dann nur noch die Timer
> internen Pinzustände. Die kannst du mit einem "Force Compare Match"
> beeinflussen.

Danke für deinen Hinweis auf "Force Compare Match".
Gast #5010477
Lesenswert?

Bogdan schrieb:

> Versuche gerade den Timer 0 im CTC-Mode zu betreiben, so dass die Pins
> OC0A und OC0B bei jedem Match die Polarität im Gegentakt wechseln. Die
> Pins sind als Ausgänge (DDRD) definiert und OC0A auf High und OC0B auf
> Low gesetzt(PORTD).
>
> Da das nicht funktioniert (die Pegel bleiben gleich) stellt sich die
> Frage, ob das überhaupt möglich ist.

Ist es. Und man braucht nur ein einziges Mal was dafür zu tun, nämlich 
beim Start des Timers. Dafür gibt's die FOC-Bits.

Allerdings: Sobald sich an der Einstellung von OCRnA/OCRnB zur Laufzeit 
etwas ändern soll, dürfte es i.d.R. weitaus sinnvoller sein, einen 
PWM-Modus statt CTC zu verwenden...

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren