CTC Modus mit veränderbarer Frequenz

Gast #1200649
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)."
Gast #1200650
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.
Gast #1200659
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?
Gast #1200665
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.
Gast #1200672
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
#1200687
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...)
Gast #1200740
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
#1200996
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.
#1201025
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.

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