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


Announcement: there is an English version of this forum on EmbDev.net. Posts you create there will be displayed on Mikrocontroller.net and EmbDev.net.
von HP C. (hpx)


Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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)


Bewertung
0 lesenswert
nicht 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. (stefanus)


Bewertung
1 lesenswert
nicht 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.

: Bearbeitet durch User
von HP C. (hpx)


Bewertung
0 lesenswert
nicht 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.

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.