www.mikrocontroller.net

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


Autor: Gunter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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)."

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Gunter (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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?

Autor: STK500-Besitzer (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: spess53 (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht 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...)

Autor: Oliver (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Johannes M. (johnny-m)
Datum:

Bewertung
0 lesenswert
nicht 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

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.