Forum: Mikrocontroller und Digitale Elektronik RTC: Tag, Monat, Jahr lässt sich nicht auslesen bei BluePill STM32F103C8


von HP C. (hpx)


Angehängte Dateien:

Lesenswert?

Hallo Leser,

ich verwende:
- BluePill STM32F103C8 mit Uhrenquarz und Back-Up-3V-Batterie
- Arduino 1.8.13 (portabel installiert)
- Habe über 
https://github.com/stm32duino/BoardManagerFiles/raw/master/STM32/package_stm_index.json 
die offizielle STM32duino-Erweiterung von ST installiert 
(Boardverwalter: STM32 Cores)
- Verwende STM32CubeProgrammer und einen ST-Link V2 zum Flashen
- Library "STM32duino RTC": #include <STM32RTC.h>
- Beispiel -> STM32duino RTC -> SimpleRTC.ino
- Mit dieser eingefügten Zeile läuft die Uhrzeit auch ohne 
Versorgungsspannung weiter:
  rtc.setClockSource(STM32RTC::LSE_CLOCK);   // LSE ist fuer externen 
Uhrenquarz mit 32.768 kHz
  Sie steht vor dieser Zeile:
  rtc.begin(); // initialize RTC 24H format

Mein Problem:
- Das Original-Beispiel mit Zusatzzeile funktioniert und setzt die 
Daten. Ausgabe: 15/06/15 16:00:06
- Wenn ich dann das Setzen auskommentiere, wird die richtige Uhrzeit 
ausgegen (Stunde bis Sekunde):
- ABER die Daten Tag, Monat, Jahr stimmen nicht: Ausgabe: 01/01/00 
16:01:19

Durch eine Internet-Recherche habe ich gesehen, dass auch andere das 
Problem hatten.
Durch vertauschen der Abfrage von Datum und Uhrzeit ließ es sich 
beheben.
Es wurde auch von Schattenregistern berichtet.
Die Vorschläge haben mir leider nicht weiter geholfen.

Hat jemand eine Lösung für mich?
Vielen Dank fürs Mitdenken!

von A. B. (Gast)


Lesenswert?

Statt in den (Un-) Tiefen des Internet herum zu suchen, wäre es besser, 
die Doku zu konsultieren. Schattenregister gibt's bei F10X nicht, die 
kamen erst später dazu.

Der Schlüssel ist vermutlich das RSF bit, s. 18.3.3 im RM0008. Nach der 
kleinen zusätzliche Verzögerung ist es dann gerade schon gesetzt.

von Stefan F. (Gast)


Lesenswert?

Da die RTC des STM32F103 eigentlich nur ein 32bit Zähler ohne Kalender 
ist, vermute ich einen Fehler im Algorithmus deiner Bibliothek.

Probiere mal das folgende Beispiel mit unterschiedlichen Integer-Werten 
aus. Danach weißt du wenigstens mit Sicherheit, ob die Hardware OK ist. 
Bei den vielen Fälschungen, die im Umlauf sind kann man da ja nicht mehr 
sicher sein.

http://stefanfrings.de/stm32/stm32f1.html#rtc

Die Zeilen, die mit "Wait until..." kommentiert sind, haben mit den 
Schattenregistern zu tun.

von HP C. (hpx)


Lesenswert?

Hallo A. B., hallo Stefan,

vielen, vielen Dank für Eure Antworten.
Ich habe das Refence Manual studiert und auch Stefans Seite.

Ich bin erschrocken, dass meine Vorlage
- Library "STM32duino RTC": #include <STM32RTC.h>
- Beispiel -> STM32duino RTC -> SimpleRTC.ino
offensichtlich nie getestet wurde.

Nach Verwendung einer anderen Library funktioniert alles problemlos.

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
Noch kein Account? Hier anmelden.