Forum: Compiler & IDEs Timer und Vergleichswert


von Florian (Gast)


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?
1
int main()
2
{
3
  DDRB |= (1 << DDB3);  // PORT PB3   
4
  PORTB &= ~(1 << PB3);  // T0 aus
5
6
  OCR0 = 5;  // Vergleichswert einstellen
7
  TCCR0 |= (1 << COM00) | (1 << COM01);  // OC0 ein bei Vergleichwert
8
  TCCR0 |= (1 << CS00) | (1 << CS01) | (1 << CS02);  // External Clock an T0, steigende Flanke
9
10
  while (1);
11
  return 0;
12
}

von Werner (Gast)


Lesenswert?

0
1
2
3
4
5

Das sind halt 6 ...

von Johannes M. (johnny-m)


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...

von Johannes M. (johnny-m)


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.

von Florian (Gast)


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...

von Johannes M. (johnny-m)


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"                                                  ^^^^
...

von Florian (Gast)


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!

von Rolf Magnus (Gast)


Lesenswert?

> Ist bei mir zwar auf S. 71

Dann solltest du dir mal das aktuelle Datenblatt runterladen.

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.