Hallo, ich möchte einen kleinen Timer mit meinem PIC16F887 in C mit MPLAB Programmieren. Dazu möchte ich einen Timer0 Verwenden, der bei einem Quarztakt von 8MHz jede ms einen Interrupt ausführen soll. Durch den Interrupt soll eine Variable hochgezählt werden. Wenn die Wariable 6000 erreicht hat ist eine Sekunde Vergangen und eine LED soll aufleuchten. Meine Frage: welchen Prescaler muss ich für den Timer 0 Verwenden, dass mir der Timer inerhalb einer Sekunde einmal überläuft?
Die Frequenz mit der der Timer läuft berechnet man mit:
umgestellt nach Prescaler:
=
Doch leider kann man schlecht einen Prescaler von 7.8 einstellen. Somit muss man den Preload anpassen. Mit einem Preload von 6 und einem Prescaler von 8 kommst du genau auf eine Timerfrequenz von 1000Hz. Falls du es nicht selber berechnen willst, gibt es hier ein gutes Tool dafür: http://eng-serve.com/pic/pic_timer.html
Hallo, danke für deine Antwort, ich nehme an mit einem Preload meinst du, dass ich den Timer nicht auf 0 zurücksetze sondern immer nach einem Überlauf von 6 aus wieder starten lasse. Oder?
Danke, aber irendwie läuft das ganze nicht rund. Der Timer hat bei einer minute 2Sekunden Toleranz. Je weitere Minute kommt 1Sekunde dazu. Warum?
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.