www.mikrocontroller.net

Forum: Compiler & IDEs Timer und Vergleichswert


Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo
Ich habe einen Timer 0 (mega16) und möchte, das er nach 5 Flanken an T0 
Pin OC0 aktiviert. Macht er eigentlich auch - aber erst nach 6 Flanken. 
Warum nur?
int main()
{
  DDRB |= (1 << DDB3);  // PORT PB3   
  PORTB &= ~(1 << PB3);  // T0 aus

  OCR0 = 5;  // Vergleichswert einstellen
  TCCR0 |= (1 << COM00) | (1 << COM01);  // OC0 ein bei Vergleichwert
  TCCR0 |= (1 << CS00) | (1 << CS01) | (1 << CS02);  // External Clock an T0, steigende Flanke

  while (1);
  return 0;
}

Autor: Werner (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
0
1
2
3
4
5

Das sind halt 6 ...

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

Bewertung
0 lesenswert
nicht lesenswert
Florian wrote:
> Warum nur?
Weil das Compare-Flag erst beim jeweils folgenden Timertakt gesetzt wird 
(s. Datenblatt). Wenn es schon bei Übereinstimmung der Werte gesetzt 
würde, gäbe es bei OCR = 0 gewisse Probleme...

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

Bewertung
0 lesenswert
nicht lesenswert
Werner wrote:
> 0
> 1
> 2
> 3
> 4
> 5
>
> Das sind halt 6 ...
Stimmt in dem Fall nicht, weil nicht die Zustände, sondern die 
Inkremente zählen. Und das sind nur 5. Schließlich wird bei der ersten 
Flanke auf 1 erhöht.

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Das sind halt 6 ...

Ja, aber der Counter steht ja schon auf 0:
0 - Takt - 1 - Takt - 2 - Takt - 3 - Takt - 4 - Takt - 5
Das sind 5 Takte bis 5 im Counter (=Vergleichswert) steht


>Weil das Compare-Flag erst beim jeweils folgenden Timertakt gesetzt wird
>(s. Datenblatt). Wenn es schon bei Übereinstimmung der Werte gesetzt
>würde, gäbe es bei OCR = 0 gewisse Probleme...

Das habe ich mir auch irgendwie gedacht, aber im Datenblatt nirgends 
gefunden. Kannst Du mir das aufzeigen? Ich lese nur "The Output Compare 
Registers contain a 8-bit value that is continuously compared with the 
counter value." Das klingt für mich nicht nach nächster Flanke...

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

Bewertung
0 lesenswert
nicht lesenswert
Abschnitt "Output Compare Unit" (in meiner Version vom DS auf S. 73), in 
der dritten Zeile steht
"A match will set the Output Compare Flag (OCF0) at the next timer clock 
cycle"                                                  ^^^^
...

Autor: Florian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ah. So viele Bäume hier im Wald. Wer lesen kann, ist klar im Vorteil. 
Ist bei mir zwar auf S. 71, aber wenn man weiß, wonach man den Acrobat 
Reader suchen lassen muß, findet man's.

Danke!

Autor: Rolf Magnus (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
> Ist bei mir zwar auf S. 71

Dann solltest du dir mal das aktuelle Datenblatt runterladen.

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.