Hallo,
Wie schon gesagt, musst du einen Zeger zurück geben.
Aber du hast noch zwei ganz grobe Fehler!
1.
char Uhrzeit[9];
Ist eine lokale Auto-Variable!
Beim Aufruf von TimeToString() wird diese auf dem Stack angelegt und nach verlassen von TimeToString() wird der Speicher wieder freigeben!
Wenn du nun eine andere Funktion aufrufst oder eine Interruptroutine ausgeführt wird, werden die Werte überschrieben und due hast nur noch Datensalat.
Also übe mal, wie man eine gute Salatsauce macht
Wenn du
static char Uhrzeit[9];
verwendest, umgehst du dieses Problem, dann wird Uhrzeit im allgemeinen Speicher angelegt.
Allerdings ändert jeder Aufruf von TimeToString() den Inhalt von Uhrzeit.
2. der Rückgabewert von TimeToString() ist nicht mehr
uint16_t
sondern
char *TimeToString(uint8_t Stunden, uint8_t Minuten, uint8_t Sekunden)
MfG Peter(TOO)
Lesezeichen