www.mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik Uhr läuft ungenau


Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo!

Ich habe eine Uhr mit dem 2313 gebaut, die mit 4 MHZ betrieben wird.
Das Problem ist, daß die Uhr in einer Woche 20 Sekunden nachgeht.
Nachfolgend ein Stück Code, das den Sekundentakt erzeugt. Ich habe 2
Fragen: Sieht jemand dort einen Fehler? Welchen Timer benutzt der WAIT
Befehl von Bascom, weil ich im Hauptprogramm zum Multiplexen meiner
Anzeige einen Wait 2msv verwende?

On Timer1 Ontimer1               'Interrupt-Routine für
Timer1Overflow
Config Timer1 = Timer , Prescale = 256       'Takt: Quarz/256=15625Hz
Enable Timer1                   'Timer1-Overflow-Interrupt
einschalten
Enable                                     'Interrupts global
zulassen
Timer1 =49911                             'Abstand=65536-49911=15625

Do
'Hauptprogramm
Loop
Ontimer1:                                    'Interrupt-Routine
  Timer1 = 49911                           'Timer 1 voreinstellen
  Ftoggle = Not Ftoggle                    'Toggle-Bit invertieren
  'Portb.7 =                         'Leuchtidiot als Anzeige
                                     'für die Sekunden
Return                               'und zurück vom Interrupt
' **** END OF PROGRAM



MfG Paul

Autor: Hubert (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Ich nehme an du hast nicht den internen Oszillator verwendet?
Wenn du nicht den Timertakt alleine verwendest sondern immer noch was
vom Programm dazukommt, addiert sich das auch noch.

Autor: Benedikt (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Der uC benötigt mindestens 6 Takte um die Interruptroutine zu starten.
Dazu kommen noch weitere Befehle von BASCOM. Dadurch vergeht einiges an
Zeit ehe du das Timer Register nachlädst. Und genau das verursacht, dass
die Uhr nachgeht.

Autor: Stefan May (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Deine Ungenauigkeit entspricht etwa 33ppm. Das liegt im Rahmen der
Quarzgenauigkeit. Wenn Du es genauer haben willst, dann mußt Du
entweder den Quarz mit einem Trimmkondensator etwas ziehen oder aber
die Synchronisierung in Software erledigen. DCF77 ist da hilfreich.

ciao, Stefan.

Autor: peter dannegger (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Da hat Stefan recht.

Übliche µC-Quarze sind zwar hochkonstant, aber nicht sehr genau.
Es ist also ein Abgleich nötig.

Bei Deinen Angaben beträgt die echte Quarzfrequenz 3,999868MHz.

In der Codesammlung ist ein Beispiel, wie man für beliebig krumme
Quarzfrequenzen die genauen Timerwerte automatisch einstellt.


Peter

Autor: Jens123 (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
hallo
ich hatte mir in ASM mal eine Uhr aufgebaut mit einem Mega8

Interner RC Oszilator und einen Externen Uhrenquarz als Takt fuer
meinen Timer...


ich hatte die Ihr 2 Tage laufen lassen bei mir auf der Arbeit
gegenueber eine Kirschenglocke + Radio und die schlugen immer zur
gleichenzeit volle Stunden..

ok Meine uhr auf den Glockenschlag gestartet und 2 tage Laufen lassen
siehe da sie ging von meiner Feststellung ger sehr genau (ich selbst
konnte es mit meinem Ohr (Glocke) / Auge (LCD Display) keine
Zeitverzögerung erkennen...

Wie es nun mit einem Monat / Jahr aussieht keine  ahnung war damals nur
zum kennenlernen...

Gruss Jens

PS: Der Uhrenquatz war aus einer alten Quarz Uhr =)

Autor: Mr_Börtsch (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Normalerweise Addiert man die Zeit die man warten will zum aktuellen
Timer Compare Wert. Somit ist es egal wie lange die Abarbeitung eines
Timerinterrupt dauert.

Autor: Paul Baumann (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
Hallo Männer!

Ich danke Euch erstmal für die vielen Antworten. Nun will ich erst mal
den Rat von Peter ausprobieren.

@Peter: Wie kommst Du auf die Frequenz, die Du errechnet hast?

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.