Forum: Mikrocontroller und Digitale Elektronik CTC Modus mit veränderbarer Frequenz


von Gunter (Gast)


Lesenswert?

Tag

Habe mir verschiedene Seiten angeguckt um den CTC modi zu verstehen. Hab 
es auch soweit glaube ich verstanden.
Aber was ist wenn man den CTC modus dazu nutzen will Impulse mit 
veränderbarer Periodendauer zu nutzen? (Angenommen man liest eine 
analoge spannung ein und anhand dieser spannung stellt man die 
periodendauer ein) Dann muss man doch auch hier neu nachladen oder? Wäre 
dieser Modus denn trotzdem genauer als einen Timer Interrupt Overflow zu 
nutzen?

Habe im Tutorial folgendes gefunden, allerdings steht da nicht viel:

"Diese Betriebsart macht das Timer-Nachladen, das bei AVRs, die ja im 
Unterschied zu 8051-Derivaten keine Auto-Reload-Funktion haben, immer 
mit Ungenauigkeiten und programmtechnischen Klimmzügen verbunden ist, 
überflüssig. Ist das OCRnx einmal gesetzt, dann wird das Signal am 
Ausgang kontinuierlich ausgegeben, ohne dass die Anwendersoftware 
eingreifen muss (es sei denn, die Frequenz soll geändert werden)."

von STK500-Besitzer (Gast)


Lesenswert?

Eigentlich gibt es nur einen CTC modus, der wirklich so heisst.
Alle anderen heissen irgendwas mit PWM.
Du kannst also z.B. den FastPWM-Mode nehmen und ICR als TOP benutzen.
Die Pulsweite kannst du dann durch Ändern des zugehörigen OC-Registers 
veriieren.

von spess53 (Gast)


Lesenswert?

Hi

Deine Pulsdauer wird vom OC-Register bestimmt. Wenn du die Frequenz 
ändern willst musst du 'Top' einstellen. Näheres in den Datenblättern 
unter 'Modes of Operation'.

Spess53

von Gunter (Gast)


Lesenswert?

Hallo

>> Die Pulsweite kannst du dann durch Ändern des zugehörigen OC-Registers
veriieren.

Das wäre im Grunde genau dasselbe, wenn ich zB TCNT2 neu nachlade um 
verschiedene Impulsbreiten zu erhalten?

von STK500-Besitzer (Gast)


Lesenswert?

>Das wäre im Grunde genau dasselbe, wenn ich zB TCNT2 neu nachlade um
>verschiedene Impulsbreiten zu erhalten?

Nicht wirklich. Es ist wesentlich besser, da es automatisch läuft.
Wenn du den Wert nicht ändern willst, brauchst du dich nicht weiter um 
das Ding kümmern. Erst, wenn du etwas ändern willst.

von spess53 (Gast)


Lesenswert?

Hi

>Das wäre im Grunde genau dasselbe, wenn ich zB TCNT2 neu nachlade um
>verschiedene Impulsbreiten zu erhalten?

Damit veränderst du aber die Frequenz gleich mit. Also etwas 
kontraproduktiv.

MfG Spess

von Johannes M. (johnny-m)


Lesenswert?

spess53 wrote:
> Damit veränderst du aber die Frequenz gleich mit. Also etwas
> kontraproduktiv.
Er will die Frequenz ändern! Steht sogar im Betreff. Und im Text steht 
"Periodendauer", und die ist bekanntermaßen der Kehrwert der Frequenz. 
Ich schätze, das mit der "Impulsbreite" war nur "unpräzise 
Ausdrucksweise"...

Trotzdem kann man mit ein bisschen Nachdenken herausfinden, warum das 
Ändern vom Compare-Register besser ist. Es muss nämlich nur genau 
einmal der Wert geändert werden und der Timer läuft mit der neuen 
Frequenz weiter! Beim Timer-Reload muss nach jedem Überlauf der Timer 
nachgeladen werden. Jetzt klar?

Falls wirklich die Impulsdauer geändert werden soll (bei 
gleichbleibender Frequenz), ist allerdings tatsächlich die PWM das 
Mittel der Wahl (wobei PWM auch eigentlich nur ein CTC-Modus mit 
Zusatzfunktion ist...)

von Oliver (Gast)


Lesenswert?

>Beim Timer-Reload muss nach jedem Überlauf der Timer
>nachgeladen werden. Jetzt klar?

Naja, hinschreiben muß man das auch nur einmal, das Programm macht es 
dann schon alleine. So groß ist der Aufwand nicht. Problematisch wird es 
halt nur, wenn auch noch andere Interrupts aktiv sind, und das Nachladen 
dadurch unkontrolliert verzögert wird.

Oliver

von Karl H. (kbuchegg)


Lesenswert?

Beim Verändern des Top Wertes aber aufpassen!

Wenn dein aktueller Zählerstand zur Zeit gerade zb 1000 ist, du den 
alten Top Wert von 2000 auf 500 veränderst, läuft dir der Zähler einmal 
durch. Enige PWM Modi berücksichtigen das, indem das eigentliche Top 
Register erst beim erreichen des alten Top Wertes verändert wird. WIe 
das beim CTC ist, weiß ich nicht auswendig. Also Datenblatt studieren, 
bzw. selbst dafür Sorge tragen, dass hier nichts passiert.

von Johannes M. (johnny-m)


Lesenswert?

Karl heinz Buchegger wrote:
> Enige PWM Modi berücksichtigen das, indem das eigentliche Top
> Register erst beim erreichen des alten Top Wertes verändert wird. WIe
> das beim CTC ist, weiß ich nicht auswendig.
Beim CTC wird nicht synchronisiert (im Gegensatz zu den PWM-Modi)! CTC 
sollte man nicht als PWM-Ersatz "missbrauchen". Wenn man ne PWM haben 
will, dann den Timer in einem PWM-Modus betreiben, dafür sind die da.

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.