Ist es eigentlich schlecht für die Genauigkeit der RTC, wenn ich diese auf einem STM32 durchweg in jedem Durchlaf der Main Loop auslese?
Es gab früher mal einige externe RTCs, die gingen nach, wenn man sie ohne Pausen ausgelesen hatte.
Ä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.
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
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.
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!"
Adam P. schrieb: > Also ich habe hier eine RX8130CE Du Armer: Augen auf beim Uhrenkauf! Die Frage des TO bezieht sich auf einen STM32.
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!"
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
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.
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!
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
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.
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.