Forum: Mikrocontroller und Digitale Elektronik ATMega328: Timer 0 im CTC-Mode, Gegentakt


von Bogdan (Gast)


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.

von Stefan E. (sternst)


Lesenswert?

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.

von Bogdan (Gast)


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".

von c-hater (Gast)


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...

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.