RTC beim STM32 deaktivieren

Gast #5116899
Lesenswert?
• ▲
▼
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);
}

Antwort schreiben

Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt. Bitte hier nur auf die ursprüngliche Frage antworten, für neue Fragen einen neuen Beitrag erstellen.

Formatierung
  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] – Link zu einem Artikel
  • Verweis auf einen anderen Beitrag: Rechtsklick auf dessen Beitrags-ID (#8078628), „Adresse kopieren“, in den Text einfügen

Mehr zur Formatierung

Längeren Sourcecode als Anhang, nicht in den Text. JPG nur für Fotos und Scans; Zeichnungen und Screenshots als PNG oder GIF. Siehe Bildformate.

Schon registriert? Anmelden

Wird nicht angezeigt. Wir schicken dir einen Link; sobald du damit bestätigst, erscheint dein Beitrag.

Mit dem Abschicken legst du einen kostenlosen Account an und erkennst die Nutzungsbedingungen und die Datenschutzerklärung an.