Hallo, eine vielleicht blöde Frage: wie deaktiviere ich die bereits laufende RTC bei einem STM32F4 Controller? Danke, mfg
Hallo, ich papp mich mal hier drunter und kapere den Thread. Irgendwie habe ich bei diesen ARMs das Gefühl, dass da manchmal was strubbelig ist in der Hardware. Beispiel unten: Ich setze ab und an die Zeit neu, die ich per Funk für mein Anzeigeboard bekomme. Die RTC läuft zwar sehr genau aber kann ja nicht schaden, die Referenz stammt aus einem DCF77 Board und ist genauer. (Gibt Leute im Netz, die sich einen abgebrochen haben manuell aus dem 32 Bit Counter eine Zeit zu basteln, dabei hat Unix und damit der GCC doch alles an Bord, nämlich die Epoch Time und Routinen diese umzuwandeln. ) Stunden gesucht, wieso mir plötzlich die INTs der Anwendung verrückt spielen, d.h. die CPU ist dicht, andauernd wurde der 1s RTC Int ausgelöst, raus und direkt wieder rein. Ich habe dann probiert und den Befehl PWR_BackupAccessCmd(ENABLE); hinein genommen. Und plötzlich war das Problem weg! Ohne diesen wird der RTC Prescaler nämlich auf 0 gesetzt und das beeinflusst den INT wohl. Aber: Normalerweise dürfte der Schreibzugriff gar nicht ausgeführt werden, ohne dass diese RTC / Backup Register freigeschaltet wurden. Da dürfte nix passieren. Ist das nun ein Feature oder ein Bug? /* ---------------------------------------------------------------------- Zeit neu einstellen, läuft allein weiter per RTC ISR ------------------------------------------------------------------- */ void Set_NewTime(uint32_t newtime) { NVIC_DisableIRQ(RTC_IRQn); PWR_BackupAccessCmd(ENABLE); RTC_WaitForLastTask(); RTC_SetCounter(newtime); RTC_WaitForLastTask(); PWR_BackupAccessCmd(DISABLE); /* Unixzeit umwandeln */ /* Unix Zeit für localtime casten */ time_t value = (time_t)newtime; mytime = *localtime(&value); NVIC_EnableIRQ(RTC_IRQn); }
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.