Hallo, ich benutze einen STM32 inc. RTC. Zur Zeitberechnung verwende ich die C Standard Bibliothek "time.c". Wie definiere ich für diese Bibliothek meine Zeitzone ? Meine Funktion int gettimeofday(struct timeval *tv, struct timezone *tz) { uint32_t tick = HAL_GetTick(); /* uptime in ms */ tv->tv_sec = tick / 1000; tv->tv_usec = (tick % 1000) * 1000; return 0; } bekommt für den Pointer *tz ein NULL
Kai schrieb: > Meine Funktion > > int gettimeofday(struct timeval *tv, struct timezone *tz) Da ist eine Zeitzone doch ohnehin unsinnig, weil diese Funktion die Zeit seit power-up zurückgibt, und die hat außerdem nach 24 Tagen einen Überlauf.
Nop schrieb: > Da ist eine Zeitzone doch ohnehin unsinnig, weil diese Funktion die Zeit > seit power-up zurückgibt, und die hat außerdem nach 24 Tagen einen > Überlauf. Stimmt auch wieder. Ich bekomme nach Programm Start die aktuelle UTC Zeit. Diese möchte ich in der Bibliothek setzen und anschließend bei Bedarf mit time_t t; struct tm * ts; t = time(NULL); ts = localtime(&t); das aktuelle Datum auslesen. --- Nun stellt sich mir die Frage - Wie setze ich die aktuelle UTC Zeit nach Programm Start in der Bibliothek - Wie setze ich die Zeitzone ?
Ich denk du benutzt die RTC? Warum setzt du nicht in der RTC das Datum+Uhrzeit in der gewünschten Zeitzone, und fragst es direkt (ohne irgendwelche Bibliotheksfunktionen) ab? So bekommst du automatisch die lokale Zeit und musst nix rechnen. Die RTC musst du nur ein einziges mal setzen (ich denke mal die hat eine Backup-Batterie), mit UTC musst du dann auch nicht rumfummeln.
Ich habe einen externen RTC Chip aus dem nach Programmstart die UTC Zeit ausgelesen wird. Das funktioniert auch. Allerdings möchte ich nun verschiedene Berechnungen mit der aktuellen Zeit und anderen Zeiten machen. Die Bibliothek habe ich noch nie benutzt, würde mir aber helfen. Ich finde überall Informationen wie man sie benutzt aber nicht wie ich sie initialisiere.
Kai schrieb: > Ich habe einen externen RTC Chip aus dem nach Programmstart die > UTC Zeit > ausgelesen wird. Warum benutzt du nicht die interne? Ist doch viel einfacher. Kai schrieb: > Ich finde überall Informationen wie man sie benutzt aber nicht wie ich > sie initialisiere. Weil die Initialisierung vom Betriebssystem vorgenommen wird. Da du vermutlich keines hast, musst du nachschauen, wie deine Standard-Bibliothek das macht, denn das ist nicht vom C-Standard definiert. Da du auch nicht gesagt hast welche du nutzt, kann dir dabei keiner helfen.
Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.