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
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.
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.
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.
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
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
"fast exakt genau" merk ich mir, ist mindestens so gut wie "immer nie nich". Es war stärker. Cheers Detlef
Was war stärker? Gruß, Marian PS: diese 3 Worte habe ich mit Absicht gewählt!
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
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.