Gast
#111324
Hallo Ich versuche zur Zeit eine Uhr zu bauen und das ohne Uhrenquarz sondern mit einem normalen 8 MHz Quarz. Mein problem ist es, dass ich es nicht schaffe, dass ich genau jede Sekunde um eins weiterzählen kann. Ich hoffe jemand von euch weiß wo der Fehler liegt. Der Vorteiler wurde durch folgenden Code auf 1 gestellt, so müsste ich doch alle 256 Tackte ein Interrupt bekommen: LDI temp1, 0x01 ;Timervorteiler auf 1 OUT TCCR0, temp1 ;1Sek = 8.000.000 Takte = 31250*Int Der Interrupt springt dann in Timer und dort steht folgendes: Timer: PUSH temp1 ;temp und SREG sichern IN temp1, SREG PUSH temp1 INC time0 ;zählen CPI time0, 0x7D ;wenn nicht 125, dann Ende! BRNE End_Timer CLR time0 ;auf Null für nächsten Interrupt INC time1 ;125er zählen CPI time1, 0xFA ;weiter nur bei 250*125=31250 BRNE End_Timer CLR time1 ;für nächste Sekunde INC sek0 ;Zeit zählen Das Problem ist, dass nach ca. 3 Minuten der µC bereits 1 Sekunde nachgeht, dass kann doch nicht an der Ungenauigkeit des Quarzes liegen, oder?´ Andy