Forum: Mikrocontroller und Digitale Elektronik Quarz warum mit 6,553600MHz und nicht 6,553500MHz


von Robin T. (rotoe) Benutzerseite


Lesenswert?

Hi Fourmsgemeinde,

ich habe mal ne simple Frage die ich mir noch nicht ganz beantowrtetn 
konnte.

Ich habe mir bei Reichelt mal nen Quarz mit oben genannter Frequenz 
6,553600MHz bestellt weil ich dachte das ich damit super ne Uhr basteln 
könnte weil der Timer1 ja bis 65535 zählt. Aber da ist auch das Problem. 
Der Quarz hat ne kleine Abweichung gegenüber dem Maximalwert von Timer1.
Wieso?

Braucht das Interrupt asulösen auch noch ein paar Takte so dass sich das 
ausgleicht oder was?


MfG
Robin T.

von Jupp (Gast)


Lesenswert?

Die Quarzfrequenz ist für eine genaue Sekunde völlig irrelevant => 
Codesammlung, dort findest du eine Routine.

von Robin T. (rotoe) Benutzerseite


Lesenswert?

Aber es kann die Arbeit erheblich erleichtern wenn die Quarzfrequenz 
stimmt(weniger Rechnen).
Oder nicht?

von Martin L. (melvin_the_moose)


Lesenswert?

Robin Tönniges wrote:
> [...] Frequenz
> 6,553600MHz bestellt weil ich dachte das ich damit super ne Uhr basteln
> könnte weil der Timer1 ja bis 65535 zählt.

Das Zifferblatt der guten alten Zeigerur geht ja auch nur bis 59, obwohl 
es 60Sek./Min. sind...
Von Overflow zu Overflow macht der Timer1 65536 Zählvorgänge (die 0 
zählt mit...), also scheint das mit Deinem Vorhaben zusammenzupassen.


Viele Grüße

Martin

von Jadeclaw D. (jadeclaw)


Lesenswert?

Und außerdem muß beim Einsatz des Vorteilers eine gerade Zahl 
herauskommen, Dezimalbrüche lassen sich so schlecht ins Timerregister 
reinschreiben.
6.5536MHz / 1024 ergibt 6400. Timer1 in den CTC-Modus versetzen, 6400 
als Vergleichswert setzen, das Resultat ist exakt ein Interrupt pro 
Sekunde.
(Dies jetzt in der Annahme, das der Controller ein AVR ist.)

Gruß
Jadeclaw.

von Robin T. (rotoe) Benutzerseite


Lesenswert?

Ok. Danke.
Werd die Uhr mal über 1 oder 2 Tage beobachten und gucken ob sie falsch 
geht.

von Michael U. (amiga)


Lesenswert?

Hallo,

übliche Quarze haben Abweichungen von 50ppm, das können also 4s am Tag 
sein.
Die Quarzfrequenz ist da am AVR reltiv egal, die meisten Werte lassen 
sich ganzzahlig auf eine Sekunde teilen.
Den Quarz auf die genaue Sollfrequenz zu bekommen, ist das Problem.
Einen der Kondensatoren durch einen Trimmer 10/40p ersetzen und 
abgleichen...

Oder, wenn möglich, die Uhr eben öfter per DCF77 stellen.

Gruß aus Berlin
Michael

von Robin T. (rotoe) Benutzerseite


Lesenswert?

Mmmh. Oder ich muss doch die Variante aus der Codesammlung nehmen. 
Obwohl ich da noch nicht ganz durchblicke.

von Alex B. (Firma: Ucore Fotografie www.ucore.de) (alex22) Benutzerseite


Lesenswert?

Oder eine externe RTC verwenden.

von Jan (Gast)


Lesenswert?

>Oder eine externe RTC verwenden.

Womöglich noch mit 32.768kHz Quarz...der hat teilweise noch schlechtere 
Eigenschaften wie einer höherer Frequenz.

von yalu (Gast)


Lesenswert?

Ich habe irgendwie das Gefühl, dass der Beitrag von Martin L. noch
nicht richtig verstanden wurde. 6,5536 MHz ist eine ideale Frequenz
für einen Uhrenquarz:

  6553600 = 100 * 2**16

Wenn man die Frequenz durch 2**16 teilt, erhält man 100 Hz, also exakt
die Frequenz, die für eine Stoppuhr benötigt wird. Ein Frequenzteiler
durch 2**16 lässt sich einfach mit 16 hintereinandergeschalteten
Flipflops aufbauen. Genauso gut kann man aber einen 16-Bit-Timer/
Counter im AVR nehmen. Dazu lässt man ihn im Normal-Mode (Mode 0)
laufen und beim Overflow einen Interrupt auslösen. Im Mode 0 zählt er
von 0 bis 65535, d.h. nach 65536 Taktzyklen steht er wieder auf 0. Das
ist genau das, was du möchtest. Evtl. Ungenauigkeiten haben ihre
Ursache in Bauteiltoleranzen und nicht exakt abgestimmten
Lastkapazitäten, aber garantiert nicht in der Frequenzteilung.

32768 Hz ist ebenfalls eine "günstige" Frequenz für Uhrenquarze, da
man mit 15-Flipflops bzw. einem 15-Bit-Zähler einen Sekundentakt
gewinnen kann. Für Stoppuhren ist diese Frequenz allerdings nicht
optimal, da weder 10 noch 100 ein Teiler von 32768 sind. Die
Nachkommastellen bei Armbanduhren laufen deswegen immer etwas
"unrund".

von dachs (Gast)


Lesenswert?

@Jadeclaw Dinosaur

falsch siehe Beitrag "Die genaue Sekunde / RTC"

von Michael G. (linuxgeek) Benutzerseite


Lesenswert?

Robin Tönniges wrote:

> Ich habe mir bei Reichelt mal nen Quarz mit oben genannter Frequenz
> 6,553600MHz bestellt weil ich dachte das ich damit super ne Uhr basteln
> könnte weil der Timer1 ja bis 65535 zählt. Aber da ist auch das Problem.
> Der Quarz hat ne kleine Abweichung gegenüber dem Maximalwert von Timer1.
> Wieso?

Weil kein Bauteil unendlich genau ist? Abweichung duerften etwa 50ppm 
sein. Dann ist auch die Frage, wie genau Dein Messgeraet ueberhaupt ist. 
Wenn wir davon ausegehen dass der Messwert korrekt ist kommst Du auf 
eine Abweichung von 0,0001MHz, also 100Hz, das ist nicht gerade ein 
Traumwert aber normal. Du kannst z.B. durch die gezielte Verwendung der 
Lastkapazitaeten die Genauigkeit noch etwas erhoehen, z.B. indem Du 
einen Trim-C verwendest. Rechnest Du aber einfach mit der "falschen" 
Frequenz kannst den Fehler auch per Software wieder ausgleichen, indem 
Du einfach F_CPU auf den genauen (also den fehlerhaften) Wert setzt.

Gruss,
Michael

von Peter D. (peda)


Lesenswert?

Robin Tönniges wrote:
> Aber es kann die Arbeit erheblich erleichtern wenn die Quarzfrequenz
> stimmt(weniger Rechnen).
> Oder nicht?

Nö.

Definitiv nicht erheblich.
Weder für den Programmierer, noch den Compiler (Präprozessor), noch für 
den MC.

Ein Programmierer mit Angst vor leichtester Mathematik ist wie ein 
Maurer mit Zementallergie.
Beide sollten schnellstens den Beruf wechseln.


Peter

von Jadeclaw D. (jadeclaw)


Lesenswert?

dachs wrote:
> @Jadeclaw Dinosaur
>
> falsch siehe Beitrag "Die genaue Sekunde / RTC"

Ja und nein. Hat man gerade etwas passendes da, oder muß man sowieso 
kaufen, kann man sich die Teiler passend setzen und gut is'. PeDas Code 
hat natürlich den Vorteil, daß man nicht nur jeden Quarz nehmen kann, 
sondern auch keinen Trimmkondensator mehr braucht, da die Abweichung per 
Softwareberechnung korrigiert wird. Geht nur leider nicht für 
Frequenzzähler, da muß jeder Meßzyklus stimmen. Nun habe ich noch das 
Glück, 200 Quarze mit 3.2768 MHz hier zu haben (eBay läßt grüßen), da 
findet sich immer einer, der genau paßt.

Gruß
Jadeclaw.

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.