Forum: Mikrocontroller und Digitale Elektronik RTC auslesen Genauigkeit


von Bastler (Gast)


Lesenswert?

Ist es eigentlich schlecht für die Genauigkeit der RTC, wenn ich diese 
auf einem STM32 durchweg in jedem Durchlaf der Main Loop auslese?

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Nö.

von Peter D. (peda)


Lesenswert?

Es gab früher mal einige externe RTCs, die gingen nach, wenn man sie 
ohne Pausen ausgelesen hatte.

von Anarchist (Gast)


Lesenswert?

RTC72421... das waren noch Zeiten!

von Pandur S. (jetztnicht)


Lesenswert?

Ändert sich die RTC denn so schnell, dass man sie bei jedem Mainloop 
Durchgang auslesen muss ? Welche Genauigkeit muss sie denn bringen?

Normalerweise macht eine RTC nur Sekundenauflösung. Also genügt es sie 
alle paar Sekunden auszulesen. Fuer interne Berechnungen hat man sowieso 
einen Tick, mit zB 10ms Aufloesung. Eine RTC ist allenfalls fuer 
Automatisierungen, wenn um 6:00 ein Prozess beginnen soll.

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Bastler schrieb:
> Ist es eigentlich schlecht für die Genauigkeit der RTC
Es schadet der Genauigkeit nicht, ist aber im Grunde 
Rechenzeitverschwendung.

> wenn ich diese
> auf einem STM32 durchweg in jedem Durchlaf der Main Loop auslese?
Welches Problem willst du damit lösen?

Pandur S. schrieb:
> Eine RTC ist allenfalls fuer
> Automatisierungen, wenn um 6:00 ein Prozess beginnen soll.
Für sowas kann man sich von einer RTC einen Interrupt geben lassen. Die 
haben dafür üblicherweise Alarmregister. Und das kann man dann z.B. 
einfach jede Sekunde um 1 höher setzen und bekommt dann den passenden 
Interrupt:
https://stackoverflow.com/questions/39345550/stm32l151-rtc-alarm-interrupt/39556952

von m.n. (Gast)


Lesenswert?

Lothar M. schrieb:
>> wenn ich diese
>> auf einem STM32 durchweg in jedem Durchlaf der Main Loop auslese?
> Welches Problem willst du damit lösen?

Dieses hier:

Lothar M. schrieb:
> Für sowas kann man sich von einer RTC einen Interrupt geben lassen.

Was soll der Aufwand?
Die RTC lohnt nur dann auszulesen, wenn die genaue Zeit auch benötigt 
wird.
Die Frage nach einem 6:00 Uhr Alarm wurde vom TO doch garnicht gestellt.

von Adam P. (adamap)


Lesenswert?

Also ich habe hier eine RX8130CE von Epson und da steht im Datenblatt:

"During access to the time registers, the time counting is on hold!"

von m.n. (Gast)


Lesenswert?

Adam P. schrieb:
> Also ich habe hier eine RX8130CE

Du Armer: Augen auf beim Uhrenkauf!

Die Frage des TO bezieht sich auf einen STM32.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Adam P. schrieb:
> Also ich habe hier eine RX8130CE von Epson und da steht im Datenblatt:
>
> "During access to the time registers, the time counting is on hold!"

Du solltest nicht sinnentstellend zitieren! Vollständig steht dort:

"Warning: When accessing this device, all communication from 
transmitting the start condition to transmitting the stop condition 
after access *should be completed within 0.95 seconds.* If such 
communication requires 0.95 seconds or longer, the I2C bus interface is 
reset by the internal bus timeout function. When bus-time-out occur, SDA 
turns to Hi-Z input mode.

Note: During access to the time registers, the time counting is on hold! 
This means that up to 1 second can be “lost” in case of unsuccessful 
communication as mentioned above! Please make sure to send I2C start 
condition before actual transmission of the RTCs slave address as 
otherwise the slave address appears to be shifted by 1 bit!"

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Angehängte Dateien:

Lesenswert?

Adam P. schrieb:
> "During access to the time registers, the time counting is on hold!"
Ja, das ist auch erstmal gut, denn sonst würde sich die Zeit während 
des Auslesens ändern. Und wenn die Uhr dann mitten im Auslesen grade von 
11:59,59  auf 12:00,00 umschaltet, dann liest du evtl. einen Mischmasch 
aus diesen beiden Zeiten ein z.B. 11:50,00 oder sonstwas.

Andreas S. schrieb:
> Vollständig steht dort: ...
Und im Normalfall bei zügigem Lesen passiert auch nichts. Der zum 
Auslesen "festgehaltene" Wert wird "automatically revised" also 
"überarbeitet".

m.n. schrieb:
> Die Frage des TO bezieht sich auf einen STM32.
Aber es steht da nicht, dass er damit die interne RTC meint.

> Was soll der Aufwand?
Frage ich mich und den TO auch.

> RTC lohnt nur dann auszulesen, wenn die genaue Zeit auch benötigt wird.
Vielleicht will er ja in jedem Zyklus nachschauen, ob schon wieder 
eine Sekunde vergangen ist.

> Die Frage nach einem 6:00 Uhr Alarm wurde vom TO doch garnicht gestellt.
Nein, aber man kann dem TO ruhig mal den Tellerrand zeigen...

: Bearbeitet durch Moderator
von m.n. (Gast)


Lesenswert?

Lothar M. schrieb:
> m.n. schrieb:
>> Die Frage des TO bezieht sich auf einen STM32.
> Aber es steht da nicht, dass er damit die interne RTC meint.

Er schreibt von "der RTC ... auf einem STM32".
Anders wären der bestimmte Artikel sowie die Angabe des µC nicht 
relevant.

von Cyblord -. (cyblord)


Lesenswert?

Adam P. schrieb:
> Also ich habe hier eine RX8130CE von Epson und da steht im Datenblatt:
>
> "During access to the time registers, the time counting is on hold!"

Echt geile RTC!

von Lothar M. (Firma: Titel) (lkmiller) (Moderator) Benutzerseite


Lesenswert?

Cyblord -. schrieb:
> Echt geile RTC!
Ja, wie schon ausführlich erläutert: zum Glück wird die Änderung der 
Register während des Lesens angehalten und der Zählerstand erst danach 
korrigiert.

m.n. schrieb:
> Er schreibt von "der RTC ... auf einem STM32".
Offenbar besteht da Präzisierungbedarf, den nur der TO klären kann. Also 
warten wir diese Antworten einfach mal ab...

: Bearbeitet durch Moderator
von Johannes S. (Gast)


Lesenswert?

wenn die interne RTC gemeint war, dann ist die Clockconfig auch wichtig. 
Mit unkalibriertem LSI ist die dann nur ein grobes Schätzeisen, es sollt 
also auch ein passender Quarz für den LSE vorhanden und evtl. 
parametriert sein.

von Cyblord -. (cyblord)


Lesenswert?

Lothar M. schrieb:
> Ja, wie schon ausführlich erläutert: zum Glück wird die Änderung der
> Register während des Lesens angehalten und der Zählerstand erst danach
> korrigiert.

Dann ist es ja ok. Aus dem Zitat geht das jedenfalls so nicht hervor.

von Andreas S. (Firma: Schweigstill IT) (schweigstill) Benutzerseite


Lesenswert?

Lothar M. schrieb:
> Adam P. schrieb:
>> "During access to the time registers, the time counting is on hold!"
> Ja, das ist auch erstmal gut, denn sonst würde sich die Zeit *während*
> des Auslesens ändern. Und wenn die Uhr dann mitten im Auslesen grade von
> 11:59,59  auf 12:00,00 umschaltet, dann liest du evtl. einen Mischmasch
> aus diesen beiden Zeiten ein z.B. 11:50,00 oder sonstwas.

Wenn ich die Bemerkungen im Datenblatt richtig verstehe, hat der 
Hersteller an jedem Gatter gespart und deswegen kein separates 
"Schattenregister" zum Auslesen spendiert. Stattdessen scheint ja 
wirklich das interne Zählregister angehalten zu werden. Bei einem 
halbwegs sauberen synchronen Design wären diese Register natürlich 
entkoppelt. Ggf. würde daa Ausleseregister dann einfach um einen 
Quarztaktzyklus (~30 µs) der echten Zeit hinterherhinken.

Aber das muss ich ja dem Großmeister der synchronen Digitallogik 
eigentlich nicht erklären. ;-)

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.