Hallo,
2 Dinge fallen mir auf.
1) Du rechnest 8000000 / 1024 in der clock.c. Dies ergibt 7812.5, also als integer passt es nicht genau in eine Sekunde -> deine Sekunden sind also 0.999 936 Sekunden lang (30 minuten wären aber auch nur 0,1152 Sekunden Fehler in einer halben Stunde)
2) Du setzt bei jeden Overflow den Timer neu auf. Wenn aber gerade ein anderer Interrupt in diesem Moment bearbeitet wird, kann der entsprechende Interrupt verzögert werden. Ich würde eher vorschlagen den Timer Gleich so zu setzen dass man ihn nicht mehr anfassen muss (Clear Timer On Comparer Mode, 8000000 / 1024 -> OCR1A und statt Overflow Interrupt SIG_OUTPUT_COMPARE1A verwenden), Allerdings würde dies aber eher bedeuten dass Deine Uhr nach geht.
Aber wo Deine 2 Minuten herkommen kann ich leider auch nicht sagen.
-Andreas
Lesezeichen