mikrocontroller.net

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


Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Jupp (Gast)
Datum:

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

Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

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

Autor: Martin L. (melvin_the_moose)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jadeclaw Dinosaur (jadeclaw)
Datum:

Bewertung
0 lesenswert
nicht 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.

Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

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

Autor: Michael U. (amiga)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Robin Tönniges (rotoe) Benutzerseite
Datum:

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

Autor: Alex Bürgel (Firma: Ucore Fotografie www.ucore.de) (alex22) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Oder eine externe RTC verwenden.

Autor: Jan (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
>Oder eine externe RTC verwenden.

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

Autor: yalu (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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".

Autor: dachs (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
@Jadeclaw Dinosaur

falsch siehe Beitrag "Die genaue Sekunde / RTC"

Autor: Michael G. (linuxgeek) Benutzerseite
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Peter Dannegger (peda)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Jadeclaw Dinosaur (jadeclaw)
Datum:

Bewertung
0 lesenswert
nicht 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.

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.