www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Timer - Output Compare Mode


Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
In sämtlichen Timer-Tutorials, die ich kenne, wird beim Output Compare
Mode beispielsweise für einen 1sec-Timer bei 8MHz und Prescaler 256,
31250 in OCR1A geschrieben (8000000/256=31250). Da aber der Timer bei 0
und nicht bei 1 zu zählen anfängt, wäre doch 31249 richtig, oder?
Schließlich dauert es 31251 Timer-Zyklen, bis er von 0 bis 31250
gezählt hat. Oder liegt da bei mir ein Denkfehler vor? :-)

Autor: Roc (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Du hast vollkommen recht: OCR1A=Quarzfreq./Prescaler-1

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"Oder liegt da bei mir ein Denkfehler vor? :-)"

Ja.

Der Übertrag von 31250 nach 0 erfolgt in einem Zyklus. Ohne Vorteiler
müßte man diesen Zyklus abziehen.

Mit Vorteiler kommte jedoch der nächste Zählimpuls erst 256 Zyklen
später, deshalb muß man diesen Zyklus nicht abziehen.

Man hat also:

256 Zyklen: 31249
  1 Zyklus: 31250
255 Zyklen: 00000
256 Zyklen: 00001
usw.


Peter

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wenn der Timer sich so verhält, wie du es beschreibst, dann hätte er
doch aber einen "Schluckauf"? Schließlich sind die Zyklus-Abstände
zwischen den Schritten 31250-00000-00001 dann nicht konstant, oder?

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich habe das ganze mal im AVR-Studio simuliert, der Timer springt
nicht in einem Zyklus von 31250 auf 0. Die Aussage von Peter scheint
also nicht korrekt zu sein. Trotzdem wäre mir eine dritte Meinung noch
ganz recht ;-)

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Und um das ganze noch zusätzlich zu verkomplizieren, sagt die
Simulator-Hilfe:

"When set up to toggle on overflow, OC1A toggles immediately in the
simulator whereas in silicon it will wait for the timer to roll over to
0x0000. This has been verified for ATmega8, but may be experienced with
other parts."

Autor: Khani (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Um das Thema totzuschlagen (zumindest auf dem Mega8) schaut einmal ins
datasheet vom Mega8. Dort findet sich auf Seite 87 Mitte eine Formel.
Diese Formel bestätigt den ersten Post hier im Thread. Sie berechnet
die Frequenz, welche sich für verschiedene Einstellungen des
Compare-Match-Wertes bei verschiedenen Prescaler-Einstellungen.

MfG, Khani

P.S.: Die meisten Antworten stehen im Datenblatt - nur nicht immer da,
wo man denkt ;-)

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Auf die Idee mit dem Datenblatt bin ich auch gerade gekommen :-)Beim
8515 steht es tatsächlich so drin wie von Peter beschrieben, scheint
also wirklich ein Bug im Simulator zu sein.

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Warum dann die Formel im Mega8-Datenblatt wiederum die erste Annahme
bestätigt, verstehe ich nun allerdings auch nicht... ich kann mir
eigentlich nicht vorstellen, dass das Timerverhalten in der Hinsicht
einfach geändert wurde.

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Doch, zwischen AT90 und ATmega (ohne 103 und ggf. 163) ist das
geändert worden.

Autor: Khani (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Öh Flo : Hast Du bei AVRFreaks keine hinreichend schöne Antwort bekommen
? ;-)

MfG, Khani

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Offensichtlich nicht ;-) In
http://www.atmel.com/dyn/resources/prod_documents/... ist das
unterschiedliche Timerverhalten ausführlich erklärt... beim ATmega ist
meine Annahme im ersten Posting korrekt, beim AT90S nicht. Ich frage
mich nur, wieso das von keinem der diversen Timer-Berechungstools
(AVRcalc usw.) berücksichtigt wird.

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Damits nun völlig konfus wird:

Wie verhält sich der Timer T1 mit Vorteiler des ATMega8515 bei
gesetzter Compatibilitäts-Fuse ?

Bzw. beim Mega128 im Mega103-Mode ?


Peter

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Das würde mich nun allerdings auch interessieren :-)

Autor: Jörg Wunsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
So viel Einfluß haben die compat Fuses meiner Meinung nach nicht. ;-)

Autor: Flo (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Habe mal beim Support nachgefragt... die meinen, das sei ein
"'non-conflicting' enhancement".

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.