mikrocontroller.net

Forum: Compiler & IDEs Timerparameter bei 7,3728MHz


Autor: Marian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Leute,

ich habe mal wieder ein Problem mit den Timern meines Atmegas32. Ich
möchte gerne damit eine Genauigkeit von 1ms erreichen. Als erstes hatte
ich einen 4 MHz Quarz, mit welchem es sehr gut funktioniert hat. Da ich
einfach durch 8 geteilt habe und dann im CTC Modus bis 250 gezählt habe
und somit waren 0,0005s vergangen. Das fand ich sehr gut:). Nun habe ich
einen anderen Quarz (7,3728MHz) und damit das Problem, dass ich nicht
weiß, wie ich jetzt meine Timerparameter einstellen muss, damit ich
wieder eine Auflösung von einer Millisekunde komme. Hat das schonmal
jemand gemacht? Ich habe jetzt schon ne ganze Weile im Forum rumgelesen
aber da finde ich immer nur Timer mit geraden Frequenzen oder einer
Auflösung von einer Sekunde.
Kann mir da jemand mal einen Denkanstoss geben, wie ich mir meinen
Timer konfiguriere um halt die 0,001 Sekunden zu erhalten.

Gruß Marian

Autor: Jörg Wunsch (dl8dtl) (Moderator) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da 7372800 nicht ganzzahlig ohne Rest durch 1000 teilbar ist,
wirst du mit dieser Quarzfrequenz keinen exakten Takt mit 1 ms
Auflösung generieren können.

Autor: Marian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Na gut dann werde ich wohl doch ein wenig schummeln müssen. Danke für
deine Antwort Jörg, das hatte ich mir auch fast schon gedacht.

Autor: Christoph Kessler (db1uq) (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Die Feinauflösung muß man eben mit "NOP" erreichen. Wenn der Timer
einen Interrupt auslöst, einfach noch passend NOPs einfügen bis zum
Neustart des Timers, das geht dann halt nicht im free-run-Modus.

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Wie genau müssen denn die 1ms sein, wozu brauchst Du sie ?

Nimm doch einfach 1,1ms, dann kannst Du durch 8192 teilen und nach 900
Interrupts hast Du ne Sekunde.


Peter

Autor: Marian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Also ich brauche die 1ms fast exakt genau. Möchte halt eine sehr genaue
Zeitmessung machen. Da mein µC eigentlich sehr oft resetet wird, reicht
mir meine Lösung auch schon. Der Überlauf (also die Zeitverschiebung)
ist so gering, dass ich damit weiterarbeiten kann. Es sind ja nur
einige µs die mir verloren gehen aber das kann ich locker verkraften.

Danke für eure Mühe.

Gruß,
Marian

Autor: Detlef _a (detlef_a)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
"fast exakt genau" merk ich mir, ist mindestens so gut wie "immer nie
nich".

Es war stärker.
Cheers
Detlef

Autor: Marian (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Was war stärker?

Gruß,
Marian

PS: diese 3 Worte habe ich mit Absicht gewählt!

Autor: Detlef _a (detlef_a)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hi,

>Was war stärker?
Die Versuchung, dazu was zu sagen anstatt dazu nichts zu sagen.

Angenommen der Quarz ist genau: Wie im thread gesagt: 2^3*5^3=1000 paßt
nicht in 2^15*3^2*5^2=7372800 rein, da fehlt ne 5. Krücke vielleicht so:
5ms sind 5*7372.8=36864ticks=4*7373ticks+1*7372ticks, i.e viermal ist
Dein Vergleichswert für den Zähler 7373, beim fünften Mal änderst Du
den (in der ISR?) auf 7372. Auf die Dauer geht die Uhr richtig, der
Jitter beträgt allerdings einen tick.

Der Quarz ist aber nicht genau. Der Quarz hat bestimmt ne Ungenauigkeit
(Mittenfrequenz, Temperaturdrift, aging) von 50ppm, macht gute 368Hz.
Der Fehler, 5*7373=36865 anstatt 4*7373+7372=36864 zu nehmen, beträgt
hingegen nur ca 27ppm. Wenn Du's genau exakt willst, muß Du das Ding
temperieren und mit nem Trimmkondensator ziehen. Dazu brauchst Du nen
besseres Normal: 10^-7 Ofenquarz, 10^-8 DCF77 Frequenz, 10^-10 dieser
englische Sender Droitwitch !?

Wie genau willst/mußte denn (das is ne Zahl!).

>PS: diese 3 Worte habe ich mit Absicht gewählt!
Die Absicht sich mir nicht erschlossen.

Sorry
Cheers
Detlef

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.