Forum: Mikrocontroller und Digitale Elektronik PIC16F84: Programmablauf / Uhr langsamer machen?


von Nico K. (puplictraffic)


Lesenswert?

Hallo,

ich habe mir die Digitaluhr von
http://www.electronicecircuits.com/electronic-circuits/pic-16f84-12-24-hour-clock-circuit-and-programming
nachgebaut. Die Uhr hat einen 16F84A. Mein Problem ist jetzt, dass die 
Uhr zu schnell läuft (0,666min pro h).

Ich könnte das Programm ja durch zusätzliche Befehle verlangsamen, aber 
was könnte man da benutzen?
von mhh (Gast)


Lesenswert?

Ausversehen einen Keramikresonator statt einem Quarz erwischt und 
eingebaut? Die Ganggenauigkeit soll sicher vom Quarz und nicht von 
zusätzlichen Befehlen kommen.
von Peter D. (peda)


Lesenswert?

Nico K. schrieb:
> Ich könnte das Programm ja durch zusätzliche Befehle verlangsamen, aber
> was könnte man da benutzen?

Garnichts.

Uhren macht man doch mit einem Timer. Und zwar gerade deshalb, damit sie 
unabhängig von Programmlaufzeiten sind.
Vermutlich hast Du Dich mit dem Timer verrechnet oder den falschen Modus 
benutzt.

Für eine genaue Zeitbasis ohne Jitterakkumulation nimmt man entweder 
Clear-On-Compare oder Auto-Reload, je nachdem, was der Timer des 
gewählten MC kann.
Und wenn der Wert der gewählten Vorteiler/Timer Kombination nicht 
ganzzahlig mit der Quarzfrequenz aufgeht, erinnert man sich an die 
Schulzeit: Rechnen mit gebrochenen Zahlen.


Peter
von Nico K. (puplictraffic)


Lesenswert?

Das Programm (siehe die ASM-Datei, welche man auf der Internetseite 
ziehen kann) ist ja mit Timer (u.a. Timer0 hab ich gelesen). Ich habe ja 
nur die Schaltung nachgebaut und ärger mich halt, dass sie ungenau ist 
und möchte das gerne noch ändern.

Edit sieht gerade, dass man das Programm nicht mehr Downloaden kann. Ich 
selber komme jetzt auch nicht ran, da die Dateien auf Arbeit liegen...

Der Oszillator sollte schon ein Quarz sein, wenn der Besteller nix 
falsches Bestellt hat.
von Peter D. (peda)


Lesenswert?

Nico K. schrieb:
> Edit sieht gerade, dass man das Programm nicht mehr Downloaden kann.

Vielleicht hat er ja den Fehler entdeckt und korrigiert ihn grade.
Assembler wäre mir eh zu kompliziert, ich programmiere in C.


Peter
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.