CTC-Modus & Phasenverschiebung

Gast #2812380
Lesenswert?
• ▲
▼
Guten Tag zusammen

Ich habe eine kurze Verständnisfrage, die mir vielleicht jemand 
beantworten kann. Wie im Betreff geschrieben, geht es um die 
Phasenverschiebung im Timer/Counter Modus CTC, genauer um den 16-Bit 
Timer beim ATmega162.

Als Beispiel:

Timer Modus Nr. 4 (CTC, TOP = OCRnA)

OCRnA = 2000
OCRnB = 500


Frage:

Bedeutet das in diesem Fall, dass der PinB des Timers erst einschaltet, 
wenn der Timer bis 2000 gezählt hat, dann wieder bei 0 beginnt und 
schlussendlich bei 500 ankommt? Aus dem Datenblatt konnte ich das leider 
nicht herauslesen.


Ich hoffe, ich konnte das Problem mehr oder weniger verständlich 
beschreiben.
Danke für die Antworten.
Lesenswert?
• ▲
▼
cedric schrieb:

> Timer Modus Nr. 4 (CTC, TOP = OCRnA)
>
> OCRnA = 2000
> OCRnB = 500
>
>
> Frage:
>
> Bedeutet das in diesem Fall, dass der PinB des Timers erst einschaltet,
> wenn der Timer bis 2000 gezählt hat, dann wieder bei 0 beginnt und
> schlussendlich bei 500 ankommt? Aus dem Datenblatt konnte ich das leider
> nicht herauslesen.

Der B-Kanal des Timers hat nichts mit dem CTC Modus zu tun.

Du kannst natürlich da einen Compare Match zusätzlich drauf legen (*). 
Aber erst mal interessiert sich der CTC Modus ausschliesslich für den 
A-Kanal, also OCRnA



(*) Und Compare Match bedeutet, wann immer der Timerwert mit dem OCRnX 
Register übereinstimmt, wird eine Aktion ausgelöst. Es spielt dabei 
keine Rolle wie der Timer zählt. Sobald die Übereinstimmung da ist, ist 
das ein Compare Match. Und dann passiert, was auch immer du für diesen 
Fall konfiguriert hast.
A und B sind hier also 2 völlig verschiedene Paar Schuhe. Ihre einzige 
Gemeinsamkeit ist, dass sie dasselbe Timer-Zählregister benutzen um ihre 
konfigurierten Aktionen auszulösen. Wobei beim OCRnA durch den gesetzten 
CTC Modus dann auf jeden Fall noch ein Zurücksetzen des Zählregisters 
auf 0 dazu kommt.
Lesenswert?
• ▲
▼
Z.B. mit CTC, Toggle-On-Compare-Match, OCRA=4 und OCRB=1 sähe es so aus:
1
TCNT  ... 4 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 0 1 2 3 4 ...
2

3
           ---------           ---------           -
4
OCA       |         |         |         |         |
5
         -           ---------           ---------
6

7
               ---------           ---------
8
OCB           |         |         |         |
9
         -----           ---------           -------

Ich vermute mal, das ist es, was er mit "Phasenverschiebung im 
Timer/Counter Modus CTC" meint.
Gast
Lesenswert?
• ▲
▼
Vielen Dank für die schnellen Antworten.

Ich glaube langsam verstehe ich auch den CTC Modus, danke :)

Noch eine letzte Frage:

OCRnB muss ja <= (kleiner-gleich) OCRnA sein, weil sonst bei OCRnB kein 
Compare Match entsteht. Soll also bedeuten, dass der PinB dem PinA immer 
voreilt oder, wenn die Register gleich sind, beide symmetrisch schalten?
Lesenswert?
• ▲
▼
cedric schrieb:

> Noch eine letzte Frage:
>
> OCRnB muss ja <= (kleiner-gleich) OCRnA sein, weil sonst bei OCRnB kein
> Compare Match entsteht.

Genau.
Wobei das den Timer selbst nicht interessiert. Das ist etwas wofür du 
sorgen musst.

> Soll also bedeuten, dass der PinB dem PinA immer
> voreilt

Jein. Hinkt der Minutenzeiger einer Uhr dem Sekundenzeiger um 50 
Sekunden nach, oder ist er ihm 70 Sekunden vorraus? (Zu einer bestimmten 
Uhrzeit)
Dadurch dass es sich um zyklische Vorgänge handelt, ist es 
Definitionssache, wer jetzt vorraus und wer nachhinnkt. Zudem muss es ja 
nicht so sein, dass beim Toggeln beide Pins gleichartig den Zustand 
wechseln. Du musst das 'A und B sind voneinander unabhängig' ernst 
nehmen. Ob OCB beim Toggeln von 0 auf 1 wechselt oder von 1 auf 0 hängt 
ausschliesslich vom vorhergehenden Zustand DIESES Pins ab. In welchem 
Zustand OCA ist, ist völlig unerheblich. Im oben gezeigten Beispiel ist 
es so, dass beide gleich schalten. Kann so sein, muss aber nicht. Einmal 
den Compare Match für B abschalten und die beiden sind 'gegengleich'.
Gast
Lesenswert?
• ▲
▼
Karl Heinz Buchegger schrieb:
> Jein. Hinkt der Minutenzeiger einer Uhr dem Sekundenzeiger um 50
> Sekunden nach, oder ist er ihm 70 Sekunden vorraus?

Sehr gutes Beispiel :)

Ich werde mich noch damit beschäftigen und sehen was sich alles machen 
lässt. Aber ich denke es sollte soweit alles geklärt sein.

Vielen Dank für die Antworten und einen schönen Abend!

Antwort schreiben

Eine eigene Frage? Dieser Thread ist über 14 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.