DCF77 mit RTC - Einstellung verschiedener Zeitzonen

    Diese Seite verwendet Cookies. Durch die Nutzung unserer Seite erklären Sie sich damit einverstanden, dass wir Cookies setzen. Weitere Informationen

    Aufgrund technischer Veränderungen ist der Mailverkehr innerhalb des Forums (Private Nachrichten) nur noch eingeschränkt möglich. Die Einschränkung ist notwendig, um zusätzliche Betriebskosten für das Forum zu vermeiden. Näheres zu den Hintergründen im Thread "Aktuelles zum Forum".Wir bitten um Verständnis.

    Hinweis kann nach Kenntnisnahme deaktiviert werden!

    • Schau mal oben Post #39.
      Ich vermute dass die 9 ein Überbleibsel von der 59. Sekunde ist. du musst also das Display an der Stelle wieder löschen.
      Du kannst aber auch mit Locate x, y arbeiten und deine Zahle explizit an die Stelle schreiben, wo sie hin sollen.
      Doch auch da musst du vorher bereits geschiebenes löschen.
      Eine Lösung habe ich nicht, aber mir gefällt Ihr Problem.
    • djmsc schrieb:

      Schau mal oben Post #39.
      Ja Post #39 war der entscheidende zur Lösung! a_17_af3b400f
      Jetzt glaube ich funktioniert alles so wie ich mir das vorgestellt habe. Die Stundenanpassung wird nun über Tasteneingabe durchgeführt.
      Auch der Zeitraum von 24 - 01 Uhr wird richtig angezeigt. (Datum und Tag ziehen natürlich erst um 1 Uhr nach)
      Aktuell bleibt sowieso alles wie es ist - also "Mez_dif = 0"!

      Vielen DANK noch einmal an alle die sich an der Problemlösung beteiligt haben!!!

      Zm Abschluss noch einmal die Letzversion:
      AQ_plus_minus_MEZ_2209.bas

      Dieser Beitrag wurde bereits 2 mal editiert, zuletzt von avralfred ()

    • Hallo Alfred,

      Nun doch noch ein Codeschnipsel zum testen obwohl du nun mit Ergebnis zufrieden bist.

      Weis das ich immer mit den gegebenen Mittel spiele. Hier sind es eben die Statusbit 7 und 6. Warum diese nicht so nutzen, nur weil es einige USER noch nicht irgendwo gelesen haben, muss es doch nicht Grundsätzlich falsch sein. Einfach mal als Idee betrachten und idealer weise optimieren. Ja so sollte es in diesem Forum sein.

      Quellcode

      1. '************************************
      2. '* Spielerei *
      3. '* (c) Fred 2018 *
      4. '************************************
      5. $regfile = "m644pdef.dat"
      6. $crystal = 16000000
      7. $baud = 19200 'wird nur benötigt für Printausgabe
      8. $hwstack = 80
      9. $swstack = 60
      10. $framesize = 60
      11. ' ist sehr vorteilhaft wenn mal in ein paar Jahren ausgelesen wird
      12. ' weis man wann erstelt und kennt den Bas Name
      13. Print
      14. Print "erstellt am : " ; Version(1)
      15. Print "Version Code : " ; Version(3)
      16. Print
      17. Wait 1
      18. '************************ LCD **************************************************
      19. Config Lcdpin = Pin , Db4 = Porta.4 , Db5 = Porta.5 , Db6 = Porta.6 , Db7 = Porta.7 , E = Porta.3 , Rs = Porta.2
      20. Config Lcd = 16 * 2
      21. Initlcd
      22. Cls
      23. Cursor Off
      24. 'DCF77 auf PinB.0 einstellen
      25. Config Dcf77 = Pinb.0 , Timer = 1 , Debug = 1 , Check = 1 , Inverted = 1 , ' Gosub = Sectic
      26. 'Declare Function Dcf_timezone() As Byte
      27. 'Datumsformat festlegen
      28. Config Date = Dmy , Separator = .
      29. 'Interrupts müssen aktiviert werden
      30. Enable Interrupts
      31. '++++++ Starteistellungen ++++++
      32. ' ........
      33. ' Dcf_status.7 = 1 'nicht auf DCF77 OK warten
      34. '+++++++++++++++++++++++++++++++++++
      35. ' Auf die Synchronisierung der Uhrzeit mit dem DCF77 Zeitsignal warten
      36. While Dcf_status.7 = 0
      37. ' solange die Zeit nicht stimmt
      38. Locate 1 , 1
      39. Lcd " DCF77 Dec ist "
      40. Locate 2 , 1
      41. Lcd Time(dcf_sec) ; " Sta.6= " ; Dcf_status.6
      42. Print "DCF: " ; Time$ ; " " ; Date$ ; " " ; Time(dcf_sec) ; " " ; Date(dcf_day) ; " " ; Bin(dcf_status) ; " " ; Bin(dcf_parity) ; " " ; Bin(dcf_bits) ; " " ; Bdcf_impuls ; " " ; Bdcf_pause '; " " ; db1 ; " " ; db2
      43. Print "S7 " ; Dcf_status.7
      44. Waitms 100 'nur für Test
      45. Wend
      46. Print "S7 " ; Dcf_status.7
      47. If Dcf_status.7 = 1 Then
      48. _hour = _hour + 1
      49. Dcf_status.6 = 0 'Keine Sync. mehr zulasen.
      50. End If
      51. Print "S6 " ; Dcf_status.6
      52. Cls
      53. Print "Uhrzeit erfolgreich synchronisiert! " ; Time$ ; " " ; Date$
      54. '*** nach Neustart immer etwas Zeit geben *****
      55. Wait 1
      56. '>>>> Hauptschleife <<<<
      57. Do
      58. Print "Uhrzeit synchronisiert! " ; Time$ ; " " ; Date$
      59. Locate 1 , 1
      60. Lcd "Zeit : " ; Time$
      61. Locate 2 , 1
      62. Lcd "Datum: " ; Date$
      63. '+++ Hier wird eine neue Syncrohoniesierung +
      64. '++ nach Wunschtermin gestartet z.B. ++
      65. If Time$ = "17:55:00" Then
      66. Dcf_status.6 = 1
      67. Dcf_status.7 = 1
      68. Wait 1
      69. Dcf_status.6 = 0
      70. Print " Syn. okay + eine Stunde erhalten"
      71. End If
      72. Waitms 250
      73. Print "S6 " ; Dcf_status.6
      74. Print "S7 " ; Dcf_status.7
      75. '#### oder mit Datum ####
      76. '(
      77. If Date$ = "25.09.18" And Time$ = "23:55:00" Then
      78. Dcf_status.6 = 1
      79. Dcf_status.7 = 1
      80. Wait 1
      81. Dcf_status.6 = 0
      82. End If
      83. ')
      84. 'hier mach dein Ding weiter
      85. Loop
      Alles anzeigen
      Wie anfänglich geschriebenauf auf so eine „blöde“ Idee wär ich nicht gekommen. Aber könnte ja von nutzen sein wenn (Dcf_timezone) keinen Sinn mehr hat.

      Mit freundlichen Grüßen

      Fred