Der Fehler wurde von SprinterSB doch schon längst benannt, wenn auch etwas ungewöhnlich und knapp.
Die Funktion GetTime bleibt hier hängen:
weil fertig nicht als volatile deklariert ist.while(!fertig)
{}
Nach der Korrektur dieses Fehlers wird GetTime aber vermutlich immer noch nicht richtig funktionieren, weil auch Fehler volatile sein muss.
(Und vielleicht noch weitere Variablen, denn so genau habe ich es mir nicht angesehen)
Davon abgesehen springt mir noch eine andere Sache ins Auge:
Diese beiden Zeilen sind NOPs, die tun rein gar nichts, schon gar nicht halten sie den Timer an.TIFR |= (0 << ICF1) | (0 << TOV1);
TIMSK |= (0 << TICIE1) | (0 << TOIE1);
Und auch in den Blöcken dieser Form:
steckt ein kapitaler Denkfehler.Zeit.Stunde =
ZeitBits[28]*1+
ZeitBits[29]*2+
ZeitBits[30]*4+
ZeitBits[31]*8+
ZeitBits[32]*10+
ZeitBits[33]*20;
Lesezeichen