www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Preload Wert richtig berechnet?


Autor: Christian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo,

könnte mir jemand nur kurz bestätigen, ob ich richtig mit meiner Annahme 
liege? Ich möchte 5 Sekunden messen.
Prozessor ist ein Atmega 8 auf 8Mhz
Verwendung 8-bit Timer
Prescaler: 8 --> 1000000 Ticks für 1 Sekunde, 1000 Ticks für 1ms

Der 8-bit Timer zählt von 0...255 (also 256 Schritte).
Für 1ms brauche ich also 4 overflows (1000/256=3,90625). Um den genauen 
Wert zu bestimmen rechne ich also mit 4 overflows --> 1024 Ticks. Sind 
24 Ticks zu viel bei 4 Overflows.
Also verteile ich die 24 Ticks auf 4 Overflow und müsste demnach den 
Timer mit 24/4=6 vorladen.
Ist das so richtig?
Dann hätte ich 1ms
über eine if-Anweisung kann ich ja dann mir die Sekunden zählen lassen:

ISR()
ms_counter++
if (ms_counter >= 1000)
sekunde++

//Hauptprogramm
main()
if (sekunde==5)
//do sth

Funktioniert das so?

Danke&Gruß
Christian

Autor: Marc Donner (cosinus)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Jupp das klingt korrekt. preload 6 heisst overflow bei 256 - 6 = 250 
ticks. 250 * 4 = 1000.
Warum nicht gleich den Timer1? CTC Mode und Interrupt bei OCR1A. OCR1A 
auf 1000.

Gruss
Marc

Autor: Karl Heinz (kbuchegg) (Moderator)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Marc Donner schrieb:

> Warum nicht gleich den Timer1? CTC Mode und Interrupt bei OCR1A. OCR1A
> auf 1000.

Wenns eine länger laufende Uhr werden soll, dann ist das sowieso die 
bessere Lösung.
Allerdings dann gleich den Vorteiler auf 1 und OCR1A auf 8000.

Grund: Der Quarz läuft nicht mit exakt 8000000Hz sonder ein bischen 
daneben. Läuft eine Uhr länger, dann summiert sich das.
Mit dem CTC Modus kannst du das aber im Extremfall bis aufs Hz genau 
ausgleichen.
http://www.mikrocontroller.net/articles/AVR_-_Die_...

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.