Code:
if (g_msec < 1000){
g_msec++;
Das kann nie zutreffen, wenn du vorher
Code:
if (g_msec > 999) {
kontrollierst.
Du hast deine Timerroutine leider nicht gepostet, aber da g_msec signed ist und sie einfach nur hochgezählt wird (so hast du es jedenfalls geschrieben) dann kann der Wert auch weit größer als 1000 und sogar negativ sein, in dem Moment in dem du sie abfragst. Und dann wirst du Probleme kriegen.
Ich würde die ganze Berechnung mit in die Interrupt Routine reinbringen und die Werte ( Stunden, Minuten, Sekunden) in drei volatile Variablen speichern, so kannst du sie jederzeit abrufen. Aber ist nur ein erster Gedanke
Lesezeichen