ATmega88 - Timer0 CTC Mode - Echte Milisekunde

#3007631
Lesenswert?

Nabend zusammen,

ich beschäftige mich gerade mit dem 8-bit Timer/Counter0 with PWM im CTC 
Mode.

Ziel ist es das ich eine genaue Millisekunde als Flag hin bekomme.
Ich habe mal ein bisschen Code dazu geschrieben.
1
void InitialTimer(void)
2
{
3
  // Timer 0 initialisieren
4
  TCCR0A = (1<<WGM01); // CTC-Mode
5
  TCCR0B = ((1<<CS00)|(1<<CS02)); // Prescaler 1024
6
  OCR0A = 6.8125; // 1ms
7
  TIMSK0 |= (1<<OCIE0A); // Interrupt setzen
8
}
Frage an die Experten. Wird der Interrupt in genauen Millisekunden 
aufgerufen wenn der ATmega mit 8Mhz Takt läuft.

Rein optisch sieht mir das nach 1 Sekunde aus, wenn ich da eine LED mit 
einem Zähler für die Millisekunden blinken lasse.
Ich hab nur keine Idee im moment wie ich das nun verifizieren kann.

Grüße
Stephan

PS: Ich hab zwar ein Osziloskop, muss aber gestehen, das ich zu lange 
nicht mehr damit gearbeitet habe als das ich nun zuverlässig damit das 
verifizieren kann. Muss mich ins Osziloskopieren selbst erst wieder 
einarbeiten.
#3007678
Lesenswert?

Danke euch beiden.

Habe das gerade mit dem Prescaler 64 und OCR 124 gerechnet.
Damit bekomme ich exakte Werte hin.

Genau bei dem OCR Wert von 6,8125 habe ich selbst bedenken gehabt.
Ich konnte nur nirgends herausfinden welchen Datentyp da zulässig ist.

Also danke für die Hilfe.
Ich weiß nun, das ich da ein bisschen mehr mit den verschiedenen Werten 
spielen muss, bis man das gewünschte ergebnis bekommt.
#3007780
Lesenswert?

Thomas Eckmann schrieb:
> Stephan W. schrieb:
>> Ich weiß nun, das ich da ein bisschen mehr mit den verschiedenen Werten
>> spielen muss, bis man das gewünschte ergebnis bekommt.
> Nicht spielen. Ausrechnen. Guck dir das im Datenblatt genau an. Bis du
> weisst, warum da 64 und 124 reinkommen. Sonst stehst du beim nächsten
> Mal wieder vor dem gleichen Problem.
>
> mfg.

Welche Seite/Abschnitt des Datenblatt meinst Du damit?
Klar hab ich mir das Datenblatt schon zu rate gezogen, aber ich weiß 
nicht worauf du hinaus willst.

Ich habe auch die Formel im Datenblatt gefunden. Und genau da meine ich 
das mit dem Satz das ich verschiedene Werte probieren muss um auf das 
gewünschte ergebnis zu kommen.
#3007816
Lesenswert?

Stephan W. schrieb:

> Ich habe auch die Formel im Datenblatt gefunden. Und genau da meine ich
> das mit dem Satz das ich verschiedene Werte probieren muss um auf das
> gewünschte ergebnis zu kommen.

Ja.
Aber gezielt probieren!

Lies dir mal das durch. Das kommt aus einem etwas praxisbezogeneren 
Ansatz. Da ergeben sich die Formeln durch Nachdenken darüber, wie das 
eigentlich alles funktioniert. Und danach brauchst du keine Formeln aus 
dem Datenblatt mehr, weil sich die Werte aus der gewünschten 
Funktionalität und Dreisatz ganz von alleine ergeben.

FAQ: Timer


> Genau bei dem OCR Wert von 6,8125 habe ich selbst bedenken gehabt.
Ich sach mal so.
Wenn du Schäfchen zählen musst, die über den Zaun springen, dann kannst 
du 6 Schafe zählen oder du kannst 7 Schafen zählen. Aber 6.3 Schafe 
können nicht über den Zaun springen.
#3007851
Lesenswert?

Karl Heinz Buchegger schrieb:
> Lies dir mal das durch. Das kommt aus einem etwas praxisbezogeneren
> Ansatz. Da ergeben sich die Formeln durch Nachdenken darüber, wie das
> eigentlich alles funktioniert. Und danach brauchst du keine Formeln aus
> dem Datenblatt mehr, weil sich die Werte aus der gewünschten
> Funktionalität und Dreisatz ganz von alleine ergeben.
>
> FAQ: Timer
Karl Heinz, das ist super beschrieben darin. Das hat doch noch ein paar 
Gedanken zurechtgerückt. Ich werde die Seite mal ganz nach oben in meine 
Favoriten setzen, denn bis sich das mal 100% gefestigt hat darf man ja 
gerne nochmal nachlesen und spicken ;-)

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren