Hallo Forum. Ich möchte gerne einen Atmega16 als Uhr betreiben. Dazu benötige ich natürlich einen exakten 0.5 Sekundentimer also rechnete ich so: 0.5 = 15625 * 256/8000000 Getaktet ist der Chip mit 8 MHZ Nur mein Problem ist, dass nach knapp 24 Stunden die Uhr bis zu 7 Minuten hinterherhinkt. Wo könnte das Problem liegen? Habe ich falsch gerechnet? Falsche formel? ect.
Sonic Hedgehog schrieb: > Wo könnte das Problem liegen? Womit taktest du denn? Zeig mal die ISR und die Timer-Konfiguration.
Interner Takt 8 MHZ 6CK 64MS Und die Konfiguration:
1 | ISR(TIMER1_COMPA_vect); |
2 | |
3 | |
4 | //main
|
5 | |
6 | |
7 | TCCR1B = (1<<CS12|1<<WGM12); |
8 | OCR1A = 15625; |
9 | TIMSK = 1<<OCIE1A |
10 | sei(); |
Sonic Hedgehog schrieb: > Getaktet ist der Chip mit 8 MHZ Also wenn du eine Uhr aufbauen willst, brauchst du auf jeden fall einen externen Quarz Osc.. Dann ist die Frage, wie verwendest du den Takt weiter? Zählst du über die Software Stunden Minuten etc.. Dann bedenke das Für die Abarbeitung des Programms eine gewisse Zeit gebraucht wird. (Zykluszeit) Diese muss natürlich mit berücksichtigt werden, wenn du so "weit" Zählen willst!
Sonic Hedgehog schrieb: > Interner Takt 8 MHZ 6CK 64MS Na dann weißt du ja jetzt, wie "genau" der interne RC-Oszillator ist.
Ach ja, Rundungsfehler kommen dann auch noch dazu. Deshalb solltest du ruhig in 100ms schritten, oder sogar 10ms Schritten zählen. Damit erreicht man auch eine Höhere Genauigkeit.
Ok dann würde ich mich gerne mal auf einen Quarz 6MHZ einlassen. Wie würde da die Konfiguration aussehen?
Sonic Hedgehog schrieb: > Ok dann würde ich mich gerne mal auf einen Quarz 6MHZ einlassen. Wie > würde da die Konfiguration aussehen? Keine Ahnung, musst du mit deiner obigen Formel ausrechnen. Die Kunst dabei ist "nur", einen ganzzahligen Wert zu finden, den du dann in OCR1A lädst.
Treter_Peter schrieb: > Ach ja, > Rundungsfehler kommen dann auch noch dazu. Deshalb solltest du ruhig in > 100ms schritten, oder sogar 10ms Schritten zählen. Damit erreicht man > auch eine Höhere Genauigkeit. Und lass' dir vom Peter keinen Bären aufbinden.
Eine andere Möglichkeit wäre festzustellen, ob diese 7 Minuten konstant sind. Siehe hierzu auch: "Die genaue Sekunde". 0,5% ohne weitere Maßnahmen erscheinen mir relativ genau.
Sonic Hedgehog schrieb: > Andere Frage: Kann man auch mehr als nur gerade 2 Timer erstellen? Was meinst du? Du kannst natürlich nur so viele Timer nutzen, wie im Controller integriert sind.
amateur schrieb: > Eine andere Möglichkeit wäre festzustellen, ob diese 7 Minuten konstant > sind. Siehe hierzu auch: "Die genaue Sekunde". Dieser Ansatz macht Sinn, wenn schon eine recht stabile Taktquelle benutzt wird. Es nützt jetzt aber wenig, den internen RC-Oszillator jetzt zu kalibirieren und beim nächsten warmen Tag rennt er wieder davon.
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.