Time$ bei Erstinitialisierung prüfen ob die Zeit schon gesetzt ist

    This site uses cookies. By continuing to browse this site, you are agreeing to our Cookie Policy.

    • Time$ bei Erstinitialisierung prüfen ob die Zeit schon gesetzt ist

      Hallo Freunde,
      wie überprüft Ihr Time$ ob die Zeit schon gesetzt ist, oder nicht?
      Besonders wenn man eine RTC zum ersten mal in Betrieb setzt, dann stehen in Time$ nur wirre Zeichen und wenn man
      später mal die Batterie tauscht, dann steht da so etwas wie "@5:@5:@5" oder auch "00:00:80"
      Wie könnte man dann softwaremäßig erkennen dass die Zeit nicht initialisiert ist?
      Der Sekundentakt ist dann auch (noch) nicht da.

      Derzeit mache ich das darüber. Bei Neuinstallation setze ich eine Variable auf High und im Sekundentakt wird diese dann ständig auf Low gehalten.
      Ich könnte mir aber denken, dass Irgendjemand unserer fähigen Programmierer bereits eine smartere Lösung entwickelt hat.

      VY73 Dieter
    • Ich denke mal, wenn der AVR startet und die clock initialisiert, dann beginnt die Zeit bei 0 Uhr und das Datum bei 01.01.2000 (syssec=0). Ist eine gültige Zeit, aber sicher nicht die passende, aktuelle. Um die zu haben, liest man eine Rtc ein und da bleibt eigentlich nur eine Plausibilitästprüfung, ob da komische Werte auftauchen, oder nicht. Was vielleicht noch eine Möglichkeit wäre, bei Setzen der Zeit, das in dem RTC-chip vorhandene ram zu beschreiben. Ich vermute!! dass das auch mit der Batterie gepuffert wird und bei Batteriewechsel und fehlender Spannungsversorgung zurück setzt.
      Im Datenblatt der DS3107 findet man
      56-Byte, Battery-Backed, General-Purpose RAM with Unlimited Writes
      Bei der DS3231 finde ich kein ram, man könnte aber vielleicht die programmierbaren Alarmzeiten für so ein flag missbrauchen.

      Nachtag: bei der DS3231 findet man im Blockschaltbild 7 byte 'user buffer'
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------
    • Bei der Ds3231 gibt's doch kein ram, aber man könnte bits vom control-register 0Eh verwenden. Dieses Register wird bei power-on mit einem bestimmten Wert gesetzt. Die bits für die Frequenz des Ausgangs könnte man, nach dem Stellen mit einer gültigen Zeit, setzen/resetten. Die bits, die dafür verwendet werden, wären dann ein flag, ob der chip mal stromlos war und damit die gültige Zeit verloren ging.
      Raum für Notizen

      -----------------------------------------------------------------------------------------------------

      -----------------------------------------------------------------------------------------------------