CTC Modus mit veränderbarer Frequenz

Gast #1200649
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
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
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
Gast
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
>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
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
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
>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
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.
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

Eine eigene Frage? Dieser Thread ist über 17 Jahre alt. Stell sie in einem eigenen Thread – dort lesen mehr Leute mit, und sie wird öfter und schneller beantwortet.

Neuen Thread starten

Eine Lösung, Ergänzung oder Rückmeldung zu diesem Thread? Dann antworte hier.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.