Bedeutung des DS1307-Zeitmessungsdatums (Schaltsekunden?)

Als Teil eines Hobbyprojekts baute ich eine relativ einfache binäre BCD-LED-Uhr mit einem PIC-Mikrocontroller und einer DS1307-RTC. Bei Batterieverlust wird der DS1307 auf 01.01.00 00:00:00 zurückgesetzt, was sinnvoll ist. Da der Benutzer auf meiner Uhr jedoch nur Stunden, Minuten und Sekunden sehen kann, macht es keinen Sinn, das Datum einzustellen.

Meine Frage ist, welche Bedeutung die Einstellung des Datums in einem DS1307 in Bezug auf die Zeitmessung hat. Soweit ich weiß, ist die einzige Beziehung zwischen Uhrzeit und Datum alle paar Jahre eine Schaltsekundenkorrektur, die ich bezweifle, dass die DS1307 implementiert.

Ist es in Ordnung, das Datum am 01.01.00 zu belassen? Ich würde annehmen, dass es die Zeit nicht viel driften lassen würde, aber vielleicht übersehe ich etwas.

Wie auch immer, es ist nur eine Hobbyuhr, die Genauigkeit ist nicht geschäftskritisch, ich frage nur aus Neugier.

Vielen Dank im Voraus!

Diese Schaltsekunden-Korrektur über Jahre ist natürlich nicht implementiert, da die RTC eine sehr hohe Abweichung hat. Wenn deine einen Fehler von nur 1sec/Tag hat, ist sie ausgezeichnet.
@MarkoBuršič hat dir einen wichtigen Punkt gezeigt. Sie können das Datum unverändert lassen. Schaltsekunden treten unvorhersehbar auf (siehe Schaltsekunden-Wiki ). DS1307 unterstützt nur Schaltjahre, wie Sie im Handbuch nachlesen können . Wenn Sie mit der theoretischen Genauigkeit Ihrer Uhr spielen möchten, habe ich eine interessante Seite gefunden , die sich auf Ihre RTC-Seite bezieht. Die tatsächliche Genauigkeit hängt nicht nur vom Quarz, sondern auch vom PCB-Layout ab.

Antworten (2)

Sie können den RTC-Chip sehr gut bedienen, indem Sie das Feld "Datum" auf seinem anfänglichen Standardwert belassen. Sie werden jedoch feststellen, dass, wenn Sie die RTC aktivieren, das „Zeit“-Feld zu zählen, dass das „Datum“-Feld einmal alle 24 Stunden einen weiteren Tag akkumuliert.

Ob Sie das „Datum“-Feld einstellen oder nicht, hat keinen Einfluss auf die Genauigkeit der RTC oder auf ihren Stromverbrauch in realistisch messbarer Weise.

Ich habe mit keiner RTC mit einer „Sommerzeitfunktion“ (DST) gearbeitet, aber wenn es eine RTC mit einer solchen Funktion gäbe und sie aktiviert wäre, würden Sie sehen, dass sie mit Ihrem „Zeit“-Feld interagiert. In diesem Fall möchten Sie wahrscheinlich, dass Ihre Uhr das Datum erfasst. Wie ich bereits sagte, ist es jedoch unwahrscheinlich, einen RTC-Chip mit DST-Funktion zu finden, da diese Funktion in vielen Teilen der Welt unterschiedlich ist und in bestimmten Bereichen nach Lust und Laune von Regierungstypen geändert werden kann.

Ich habe zwei Arten von DST-Unterstützung auf RTC-Hardware gesehen - einige Geräte haben ein Bit, dessen vorgeschlagene Verwendung darin besteht, zu verfolgen, ob die Uhr Sommer- oder Standardzeit darstellt. Mindestens ein Gerät hat eine Funktion, um die Uhr genau eine Stunde vor- oder zurückzustellen (ohne die Sekundenzählung zu stören), aber mit der lustigen kleinen Einschränkung, dass eine Aufforderung zum Zurückstellen der Uhr um eine Stunde zwischen Mitternacht und 1:00 Uhr ausgegeben wird wird stillschweigend nichts tun.
Danke für die Antwort. Was Sie beschreiben, ist das, was ich derzeit bereits implementiert habe, also danke für die Klarstellung. Ich werde mir einige RTCs ansehen, die das Datum nicht verfolgen (oder möglicherweise eine in PIC eingebaute RTC verwenden).
Wenn Sie nach einer MCU suchen, die über eine eingebaute RTC verfügt, sollten Sie sich auf zusätzliche Arbeit, höheren Batterieverbrauch und möglicherweise einige Enttäuschungen einstellen. Fast alle MCUs, die ich mir angesehen habe und die RTC unterstützen, haben keine separate Batterie, die automatisch auf dem Chip eingeschaltet wird. Wenn Sie also On-Chip-RTC unterstützen möchten, müssen Sie Ihr Board mit einem komplexeren Stromversorgungssystem entwerfen, das zwischen Batterie und Vdd umschalten kann. Ich arbeite derzeit mit der PIC32MZ-Teilefamilie und wenn Sie möchten, dass die RTC funktioniert, während das System ausgeschaltet ist, muss die MCU in einen Schlafmodus versetzt werden, während (Fortsetzung)
(Fortsetzung von oben) Batteriebetrieb. Der Stromverbrauch ist weitaus höher als das, was Sie mit einem eigenständigen RTC-Chip erreichen können, der auf einem I2C-Bus sitzt. Wählen Sie den richtigen Chip aus und er kann die Batterieumschaltung direkt auf dem Chip unterstützen, mit einer kleinen Knopfbatterie lange halten und eine einfache Schnittstelle haben.
(Fortsetzung) Wenn Sie eine MCU mit integriertem RTC haben, können Sie sie trotzdem zur Laufzeit für einen schnelleren Zugriff auf die Zeitwerte verwenden und sie einfach beim Start vom externen RTC-Chip laden. Ich habe sogar etwas Ähnliches gemacht, wo ich eine einfache Software-RTC verwende, die von einem Timer-Interrupt gesteuert wird, und sie einfach mit dem Startzeit-/Datumswert von der externen RTC füttere. Für einige eingebettete Echtzeitsysteme bedeutet das 6 oder 7 ms zum Lesen eines I2C-RTC-Chips eine Zeitverzögerung, die nicht attraktiv ist.

Es gibt keine Relevanz, wenn Sie es nicht brauchen.

Es sind einige RTC-Typen verfügbar.

  1. Einfacher Zähler. Es zählt die Sekunden seit dem letzten Set/Reset.
  2. Uhr. Zählt die Zeit im menschenlesbaren Format, hh:mm:ss
  3. Kalender. Zeit und Datum. Das ist der DS1307.
  4. Alarm. Es wird an einem bestimmten Datum oder einer festgelegten Uhrzeit unterbrochen.
  5. Logger. Protokolliert die Zeit eines Ereignisses oder Interrupts.

Typischerweise enthält jeder alle darüber liegenden. Dies sind nur zusätzliche Funktionen , die Sie verwenden können , wenn Sie möchten . Andernfalls ignorieren Sie sie, es sei denn, das Datenblatt gibt an, dass sie auf einen bestimmten gültigen Wert gesetzt werden müssen.

Sie können die Kalenderfunktion des DS1307 einfach ignorieren.

Ehrlich gesagt, wenn Sie ein echtes Bastlerprojekt wollen, lassen Sie den DS1307 fallen und implementieren Sie Ihre eigene Uhr in Software, mit oder ohne 32-kHz-Kristall.

Mir ist klar, dass es übertrieben ist, einen DS1307 zu verwenden, der PIC, den ich verwende, hat sogar eine eingebaute RTC. Der Zweck des Projekts bestand jedoch darin, mich mit Protokollen wie I2C vertraut zu machen und wie das Registersystem eines typischen I2C-Geräts funktioniert. Ich habe viel gelernt, so dass dieses Ziel erreicht wurde. Danke für die Klarstellung so oder so