Zuverlässigkeit DCF77

    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!

    • Zuverlässigkeit DCF77

      das Thema Zuverlässigkeit DCF77 ist immer noch eine Diskussion wert

      Grundsätzlich: Es gibt keine DCF77 Uhr. Es ist ein Langwellenzeitzeichensender .

      Das DCF- Signalist gedacht um ein Zeitmesser mit genauen Werten Voreinzustellen und nicht als eine Echtzeituhr zu betrachten.

      Nun kommen meine praktischen Neuzeiterfahrungen auch noch dazu die natürlich sehr einfach erklärt sind.

      Es geht los:

      Von der Qualität her konnte ich nur ein Antennenmodul als unbrauchbar erkennen(da war ein billig Quarz verbaut. Getestet die von Reichelt, Pollin und Conrad. Die haben alle den gleichenEmpfängerchip drauf der sehr empfindlich ist. Diese Module sollen ja ein sehr geringen Leistungsverbrauch haben. Somit muss sehr großen Wert auf Betriebsspannung gelegt wertenstabile 3 Volt waren beiallen Modulen optimal. Obwohl einige mit andere Spannungen im Zulassungsbereich funktionierten. Alle benötigen aber eine stabile Betriebsspannung. Eine sehr, sehr kurze Schwankung startet den internen PLL. Solange er nun wiederversucht die optimale Trägerfrequenz einzuregeln ist erst mal Schluss mit Demodulation und wenn es dumm kommt rastet derEmpfänger völlig falsch ein.

      Somit ist erst mal das allerwichtigste. Dafür zu sorgeneinSchwangung von > +- 50mV und Ripple von 10mVeff zu vermeiden.

      Nun kommt noch die sehr schwache Ausgangsbelastung ins Spiel. Oft wird vermutetder Pegel reicht nicht und wird zum Teil mitaufwendigen Schaltungen angehoben und dabei erreichen diese genau das Gegenteil weil deren Einganswiderstand zu gering ist. Also so wenig wie möglich den Ausgang belasten. Er liefert ja auch den PLL die „Regelgröße“. Somit haben meine Praxistestauch als Übeltäter den Einganswiederstand der verschiedenen AVR/Ports festgestellt. Kennen wir ja „bei mir geht es warum bei dir nicht“. Hier geht es umµA< 2 da kann schon der interne Pull Up ungewollt eine zu große Last sein wie auch ein einfaches Messgerät.Also um erst mal al dies auszuschließen benutze ich die sehr einfache aber zuverlässige Schaltung.Schaltung.jpg

      Die LED am Ausgang ist bestimmt hilfreicher wie ein teures Messgerät. Blinkt sie stabil in Sekundentakt( na ja pro Minute ist eine Pause sichtbar) kann man erwarten das modulierte Signale ankommen die Sekundenflanke wird erkannt. Wenn nicht Antennenmodul ortsverändern. Alles andere macht erst mal keinen Sinn.

      Oft wird vermutet Empfang ist zu schwach ist abermit ordentlicher Anwendung und Ausrichtung der Antennenicht mal in 1000 km Entfernung von Mainflingen der Fall. Die int. Reglung sorgt dafür das Schwankungen der Feldstärke ausgeglichen werden. Natürlich gib es Ausnahmenwerden als Funkloch bezeichnet und können auch nur sehr kurzlebig sein.

      AberStörungen sind anders zu betrachten. Ob es Störungen sind sieht man am besten miteinem kleinen Bascomcode der in der Terminalanzeige, zeigt ob demodulierte Informationen auch richtig dekodiert werden. Nebenbei bemerkt da kann man auch die Wetterdaten erkennen.

      Die Reglung die ich mit PLL bezeichne hat eine lange Einschwingzeit >10 s. Somit ist es begründet warum nach dem Einschalten die Signal LED wirres oder nichtsanzeigt

      Trägerfrequenz muss doch erst mal ein vergleich mit der Referenzfrequenz durchführen und sich das Ergebnis für Signalfreigabe merken. Wird in dieser Zeit Antenne verändert benötigt es wieder diese Zeit. Also bissel Geduld beim ausrichten.

      Im Dauerbetrieb ist es nicht so schlimm da Signalfreigabe erteilt wurde, es sei denn die Signalfrequenz driftet, dann wird in sehr kurzer Zeit nachgeregelt. Diese kleine Demudolierungspause ist unkritisch zu Berücksichten ist ein Pegelwechsel kann bis zu 360msdauern.Aber wenn wie Oben beschrieben nur eine kleine Betriebsspannungsschwankung kommt ist es ein Verhalten wie Neueinschalten. Alles muss erst wieder in Tritt kommen bevor decodiert werden sollte.

      Es wird nur jede Minute einTelegramm gesendet Und dazwischen ist Pause. Ein festen Abtastzeitpunkts kann es Logischerweise nicht geben also sollten immer 2 Minuten eingeplant werden. Ein guter Decoder wie es die DCF77 Lib istnimmt sich die Startzeit bevor er die Daten an eine Uhr weiter gibt.

      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) ; " S6= " ; Dcf_status.6
      42. Print
      43. Print "demodu " ; Bin(dcf_bits)
      44. Print
      45. Print " " ; "time " ; " " ; "date "
      46. Print "DCF: " ; ; " " ; Time(dcf_sec) ; " " ; Date(dcf_day)
      47. Print "Clock:" ; ; " " ; Time$ ; " " ; Date$
      48. Waitms 100 'nur für Test
      49. Wend
      50. Cls
      51. Print "Uhrzeit erfolgreich synchronisiert! " ; Time$ ; " " ; Date$
      52. Print "S7 " ; Dcf_status.7
      53. Print "S6 " ; Dcf_status.6
      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 Synchronisierung ++
      64. '++ nach Wunschtermin gestartet z.B. ++
      65. If Time$ = "16:00:00" Then
      66. Dcf_status.6 = 1
      67. Print "S6 " ; Dcf_status.6
      68. 'Dcf_status.7 = 1
      69. Print "S7 " ; Dcf_status.7
      70. Wait 1
      71. Dcf_status.6 = 0
      72. Print " Syn. okay "
      73. End If
      74. Waitms 250
      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
      Edit log Ausschnitt
      demodu 00000000

      time date
      DCF: 00:00:00 00.00.00
      Clock: 00:00:00 00.00.00

      demodu 00000000
      time date
      DCF: 00:00:01 00.00.00
      Clock: 00:00:00 00.00.00
      demodu 10000000
      time date
      DCF: 00:00:01 00.00.00
      Clock: 00:00:00 00.00.00

      demodu 00110101
      time date
      DCF: 13:53:58 17.01.19
      Clock: 00:04:30 00.00.00

      demodu 00110101
      time date
      DCF: 13:53:58 17.01.19
      Clock: 00:04:30 00.00.00

      demodu 00110101
      time date
      DCF: 13:53:58 17.01.19
      Clock: 00:04:31 00.00.00
      Uhrzeit erfolgreich synchronisiert! 13:53:00 17.01.19
      S7 1
      S6 1
      Uhrzeit synchronisiert! 13:53:01 17.01.19


      Hoffe mich verständlich ausgedrückt zu haben und somit häufiggestellte Fragenbeantwortet werden.

      Warum gibt es denn so ein PweronAnschluss und warum zeigt derFunkweckerder nebenan steht die richtige Zeit an.

      Liegt wieder mal ans Anspruchsverhalten. Diese Antennenmodule sind nicht für Kommunikation mit AVR entwickelt wurden. Ein Funkwecker kann und benötig nicht ständigeine neue Clocksyn. Warum auch . Man musst doch nicht jeden Früh Sekundengenau aus dem Bett springen

      Wenn ein interner genauer Clock reichtist doch ein Abgleich nur bei Zeitumstellung wenn überhaupt. nötigt

      Powschalter ist für Energiesparmodus gedacht (Batteriebetrieb) na ja man kann schon 1µW einsparen. Macht aber nur Sinnwenndie Information nur sehr selten aktualisiert werden müssen. Also last den Schalter auf null stehen.

      Es kommt doch sehr selten vor das alle möglichen Signalfehlergenau zum Zeitpunkteiner Syn auftreten oder?

      Da Sender nur jede Minute ein neu generiertes Telegramm sendet, hab iches noch nie verstanden warum, mit sehr großen Softwareaufwand versucht wirddieses als Echtzeit zu präsentieren oder halt den Flankenwechsel als sehr genauen Zeittakt anzupreisen. eine Signal-Rauschabstands der entsprechenden Sekundenmarken ist fast unmöglich.

      Eine sehr aufwändiger Software kann natürlich digitale Fehler kompensieren, ist aber meist nicht nötig.


      Mit freundlichen Grüßen
    • fredred schrieb:

      '+++ Hier wird eine neue Synchronisierung ++
      '++ nach Wunschtermin gestartet z.B. ++

      If Time$ = "16:00:00" Then
      Dcf_status.6 = 1
      Print "S6 " ; Dcf_status.6
      'Dcf_status.7 = 1
      Print "S7 " ; Dcf_status.7
      Wait 1
      Dcf_status.6 = 0
      Print " Syn. okay "
      End If
      Waitms 250
      '#### oder mit Datum ####
      '(
      If Date$ = "25.09.18" And Time$ = "23:55:00" Then
      Dcf_status.6 = 1
      Dcf_status.7 = 1
      Wait 1
      Dcf_status.6 = 0
      End If
      das verstehe ich jetzt nicht. Soll mit diesem code die softclock mit der DCF-Zeit synchronisiert werden? Nachdem du beim config dcf77 keine besondere Einstellung für das update ausgewählt hast, dann gilt ja
      Upd determines how often the internal date/time variables are updated with the DCF received values. The default value is 0.
      There are 3 possible values :
      0 - Continuous update. The date and time variables are updated every time the correct values have been received
      und die softclock wird sowieso bei jedem gültigen Zeitempfang synchronisiert. Und dieses Hin- und Herschalten von dcf_status.6 bringt doch nur die lib durcheinander. Da jetzt einfach ein 'Syn. okay' zu schreiben, hm, ohne Überprüfung des dcf_status.7, ist schon sehr optimistisch.
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • tschoeatsch schrieb:

      das verstehe ich jetzt nicht. Soll mit diesem code die softclock mit der DCF-Zeit synchronisiert werden? Nachdem du beim config dcf77 keine besondere Einstellung für das update ausgewählt hast, dann gilt ja
      Upd determines how often the internal date/time variables are updated with the DCF received values. The default value is 0.
      There are 3 possible values :
      0 - Continuous update. The date and time variables are updated every time the correct values have been received


      Unschön eine Frage mit eine Frage zu beantworten. Diese kleine Zusatzspielerei funktioniert bei dir praktisch nicht weilich keine besondere Einstellung für Update habe?

      Hast dich wie immer sehr viel Mühe mit der englischsprachige Erklärung gegeben aber dies ist ja mein Nachteil, wenn ich das Prinzipverstanden habe, kommen fragen(Ideen) und dann praktische Versuche und nur wenn die Erfolg haben , dann erlaube ich mir auch mal solche zu veröffentlichen. Weiß da ich auch kein Englisch kann sehr mutig.

      Die immerwiederholten Kenntnisse zweifle ich nicht an sind ja die Grundlage für meine Ideen.

      tschoeatsch schrieb:

      und die softclock wird sowieso bei jedem gültigen Zeitempfang synchronisiert. Und dieses Hin- und Herschalten von dcf_status.6 bringt doch nur die lib durcheinander. Da jetzt einfach ein 'Syn. okay' zu schreiben, hm, ohne Überprüfung des dcf_status.7, ist schon sehr optimistisch.


      Der kleine Code ist ja nur gedacht um zu sehen was der Decoder so macht. Und da solltest du erkennen wieRegister gesetzt werden . Mal für dich eine kleine Übersicht.


      ---------- R e g i s t e r v e r w e n d u n g --------------------------------

      ;DCF_readDCF_PulsDCF_CheckDCF77_ClockDCF_Exit

      ; zh,zl ==== Memorypointer ===============================================

      ; r22StatusStatus-----------------------------------> Status

      ; r23TimerCountParityTemp3

      ; r24Temp1BitsTemp1

      ; r25Sec ---------> SecTemp2


      DCF_Read_Clock;keine Pegeländerung, nur Soft-Clock updaten

      bdcf_timeset = 7 ; Soft -clock Wurde Synchronisiert


      also was spricht dagegen wenn DCF-Pegel die Register setzt, warum kann ich dies nicht mit ein Befehl nur weil es mal nicht so gedacht war? Bezweifle auch das mein Setzen was durcheinander bringen kann. Um dies zu vermeiden hat man ja die Flage erfunden.Und ein setzen dessen in Klartextanzuzeigen ist doch üblich. Aber warum hier nicht. Wenn ich ein BIT vorab auf 0 setze, vertraue ich mich und muss nicht noch mal prüfen.
    • fredred schrieb:

      Hast dich wie immer sehr viel Mühe mit der englischsprachige Erklärung gegeben aber dies ist ja mein Nachteil,
      das ist nur ein Zitat aus der bascom-Hilfe. Die Übersetzung wäre, wenn man keine Option 'Update' angibt, dann wird bei jedem gültigen Zeitempfang die softclock (Weichuhr) gestellt. Auch wenn du dein Programm 'Spielerei' nennst, dann ist der Hinweis darin

      fredred schrieb:

      '+++ Hier wird eine neue Synchronisierung ++
      '++ nach Wunschtermin gestartet z.B. ++
      nicht richtig.

      fredred schrieb:

      wenn ich das Prinzipverstanden habe, kommen fragen(Ideen) und dann praktische Versuche und nur wenn die Erfolg haben , dann erlaube ich mir auch mal solche zu veröffentlichen.
      dann versuche doch einfach mal, das dcf_status.6 zu verstehen. Lass es dir mal anzeigen, zB mit so einem Programm

      BASCOM-Quellcode

      1. $regfile = "m328pdef.dat"
      2. $crystal = 16000000
      3. $hwstack = 34
      4. $swstack=32
      5. $framesize = 64
      6. Baud = 9600
      7. Config Dcf77 = Pind.2 , Timer = 1 , Inverted = 1 'mein Empfänger liefert ein nicht-invertiertes Signal
      8. Enable Interrupts
      9. Wait 2
      10. Reset Dcf_status.6 'hier wird die 'falsche' Einstellung vom config DCF77 korrigiert
      11. Do
      12. Bitwait Dcf_status.0 , Set
      13. Print Bin(dcf_status)
      14. Bitwait Dcf_status.0 , Reset
      15. Print Bin(dcf_status)
      16. Print Time$
      17. Loop
      18. End
      Alles anzeigen
      Wenn man dann auch mal versucht, den Hinweis zum bit6 aus der Hilfe zu übersetzen
      This Bit determines the level of the DCF input-pin at the pulse (100/200 mSec part).
      Dieses Bit bestimmt den Pegel des DCF-Eingangspins am Impuls (100/200 mSec-Part).
      dann kann man mit dem obigen Programm erkennen, dass das bit6 mit der Option 'Inverted' zusammen hängt. Steht dort inverted=1, dann ist dcf_status.6 gesetzt, ist invertet=0, dann ist dcf_status.6 nicht gesetzt. Hat man einen Dcf-Empfänger, so wie meiner, der ein nicht invertiertes Signal abgibt, dann kann man durch setzen/zurücksetzen des bit6 eine Korrektur der falschen inverted-Option vornehmen.
      Im Umkehrschluß kann man auch damit eine Dekodierung unmöglich machen.

      fredred schrieb:

      Bezweifle auch das mein Setzen was durcheinander bringen kann. Um dies zu vermeiden hat man ja die Flage erfunden.
      dann probiere es nochmal aus. Ein kurzes toggeln wird nix ausmachen, aber es bewirkt auch nix. Ein dauerhaftes Umschalten kann einfach die Dekodierung unterbinden, wenn es ohne Umschalten gehen würde (also die config richtig ist).
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Pluto25 schrieb:

      bis man drauf kam das da Äpfel mit Birnen verglichen wurden
      hier geht es um die bascom beigefügte DCF77.lib. Es gibt eine weitere, die aber ein anderes config erfordert. Auch die Zitate der Register stammt aus der DCF77.lib
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • genau
      You can read the Status-Bit 7 (DCF_Status.7), to check whether the internal clock was synchronized by the DCF-Part. You can also reset this Bit with RESET DCF_Status.7. The DCF-Part will set this bit again, if a valid time-stamp is received.
      You can read all other bits, but don’t change them.
      übersetzt:
      Sie können das Status-Bit 7 (DCF_Status.7) lesen, um zu prüfen, ob die interne Uhr vom DCF-Part synchronisiert wurde. Sie können dieses Bit auch mit RESET DCF_Status.7 zurücksetzen. Der DCF-Part setzt dieses Bit erneut, wenn ein gültiger Zeitstempel empfangen wird. Sie können alle anderen Bits lesen, aber nicht ändern.
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Oder mit 'mach's blos net!', also mehr wie eine Warnung. a_15_a5ddcf85
      Bei Freds Beispiel wird halt ein empfangenes bit verhundst. Das Telegramm wird damit eigentlich ungültig. Es wird dadurch indirekt eine neue Synchronisation geben, weil es ja eine kurze Zeit nicht ganz genau synchron war.
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • tschoeatsch schrieb:

      Oder mit 'mach's blos net!', also mehr wie eine Warnung.
      Bei Freds Beispiel wird halt ein empfangenes bit verhundst. Das Telegramm wird damit eigentlich ungültig. Es wird dadurch indirekt eine neue Synchronisation geben, weil es ja eine kurze Zeit nicht ganz genau synchron war.


      So noch mal eine Wiederholung für Experten. Das Telegramm kann nicht beeinflusst werden es muss nur sauber empfangen werden, aber die Pegel für den Decoder. Ich invertiere diese und somit werden nur die „alten“Status Bitsnegiert. Ist kein Reset wo alles verloren geht. Der Decoder weiß nur nicht mehr was er vorher decodiert hat und decodiert NEU. Ist für mich kein Totalausfall im Gegenteil nur der Vergleich mit Clock wird auch negiert somit bestimmt Clock was„zu machen“ ist.

      Da du nicht meine Gegenfrage ganz am Anfang beantwortet hast. Bestimmt weil du dein gutes theoretisches Wissen vor einen praktischen Versuch stellst, gebe ich dich Recht so was hast du noch nicht gelesen aber muss es deswegen falsch sein, nur weil ich mal auf so eine Idee kam und du es noch nicht gelesen hast.
      So nun noch speziell für Dich ein kleiner Testcode. Da kannst du alles nachvollziehen. Musst es nur wollen.

      Quellcode

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


      Hatte doch niemals bestritten das Bit6 für Invert gedacht ist. Ich nutze es für Neustart der Decoderinfos. Bedeutet der erste pegelwechsel gleich Startbedingung beginnt mit L-> H.

      Mit Sicherheit kann man es auch anders lösen, wenn man überhaupt so was benötigt.Es gibt doch auch kein Totalausfall wenn die Signalleitung auch mal für längere Zeit trennt wird oder.

      Mit freundlichen Grüßen
    • @fredred was soll ich da jetzt nachvollziehen können? Auch wenn ich es will?
      Ich sehe in deinem Programm, dass bis zu einer Synchronisation gewartet wird (bit7=1).
      Dann verstellst du die Zeit um eine Stunde. Die Zeit stimmt also nicht mehr.
      Dann schaltest du durch bit6 eine weitere Synchronisation ab. Hast du ja gut erkannt.
      Jetzt wird behauptet, die Zeit wäre synchronisiert und es wird aber die inzwischen falsche Zeit gezeigt.
      Jetzt fängt die Hauptschleife an, die 4x in der Sekunde die falsche Zeit anzeigt, bis die auf 16 Uhr steht.
      Genau zu dieser Zeit wird das synchronisieren durch Ändern von bit6 wieder ermöglicht, aber nach einer Sekunde wieder unmöglich gemacht. Das bleibt auch so.
      Jetzt wird weiterhin munter die falsche Zeit angezeigt, weil der if-Fall ja erst wieder in 24 Stunden für eine Sekunde wieder wahr wird und, wie geschrieben, da ja nix vernünftiges passiert.
      Was soll das jetzt? Es entspricht zumindest nicht dem Kommentar, dass zu einer gewünschten Zeit (16 Uhr) eine Synchronisation startet. Das hab' ich ja auch schon bei deinen ersten Programm bemängelt, wobei das wenigstens eine richtige Zeit zeigte, weil bei jedem gültigen Empfang synchronisiert wurde (durch die Voreinstellung in der lib).
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Ich werde schwach. Somit noch ein abschließender Kommentar.

      Und gleich noch ein Hinweis an Administratoren.

      Diese Textformatierungen hier, sind nicht auf mein Misst gewachsen(macht euer Eingemachte). Hatte ja auch mal angeboten die Ursache für so eine Userunfreundliche Formatierung gemeinsam zu beheben. Seit dem bin ich nur ein einfacher Aluhutträger hier im Forum. Nun ist es noch nicht zu spät mir den goldenen Aluhut aufzustülpen.Diese Krönung könnte ich noch bewust erleben. Ach wie lustig ist das Leben.

      1. habe ich dieses Thread bewusst in Metadiskussion eingestellt und so kann es auch jeder betrachten.
      2. es ging mir in erster Linie darum nicht immer die Module die Schuld zuzuweisen wenn die „Uhrzeit“ nicht stimmt Und vor allem darauf Hinzuweisen das erst mal der Emfang also das Telegramm zuverlässig zum decodieren ankommt, bevor man versucht mit exotische Decodierung das modulierte Muster zu verbiegen.
      3. Hinweis das wie überall im Funkbetrieb Störungen auftretenkönnen und mit kleinen Code ein Hilfsmittel eingestellt um mal grob zu sehen wie die Decodierung abläuft und „Bitstörungen“ erkennbar sind.
      4. Kurze Begründung warum z.B. ein Funkwecker nicht so empfindlich ist(was ja nicht stimmt)
      5. Im Code eine Spielerei belassen um zu zeigen das die Libery durchdacht und Anwenderfreundlich ist.
      6. Da ich die Plausibilitätsprüfungdes Endprodukts (Ausgegebene Uhrzeit )als wichtiger einstufe, wie die der Impulsbreite, habe ich in der Spielerei mal die Zeit verstellt, dieeine Störung simuliert, die nicht ständig automatisch korrigiert werden soll, da ich davon ausgehe wie beschrieben, dass solche Störungen nicht der Normalfall sind.
      7. Beitrag war nicht für Experten gedacht. Einfach von Amateur zu Amateur
      NunZeige ich mal den aktuellen HW/SW Test mit Terminalausgabetext Kursiv meine Kommentar:

      Hier Inbetriebnahme.



      DCF: 00:02:34 00.00.00 09:14:58 21.01.19 01000100 00000000 00001110 7 36

      Status 7 0Noch kein Abgleich mit Systemclock

      Status 61demudulation okay, Decodierung starten.

      DCF: 00:02:34 00.00.00 09:14:58 21.01.19 01000100 00000000 00001110 7 36

      Status 7 0

      Status 61

      DCF: 09:14:00 21.01.19 09:14:00 21.01.19 11000001 00000000 00001110 7 73

      S7 1Abgleich mit Systemclock okay

      S61 demudulation okay, Decodierung starten und anschließendh+ h.

      Uhrzeit erfolgreich synchronisiert! 10:14:00 21.01.19

      Status 71

      Status 60 demudulation okay, Decodierung nicht starten.

      Clockzeit bleibt gestört

      Uhrzeit synchronisiert! 10:14:01 21.01.19

      Nun wird „falsche“ Zeit nicht mehr geändert

      Uhrzeit synchronisiert! 10:59:59 21.01.19

      Uhrzeit synchronisiert! 10:59:59 21.01.19

      Uhrzeit synchronisiert! 10:59:59 21.01.19

      Status 61Hat sich gemerkt muss kein neuen Abgleich starten

      Status 71Hat sich entschieden, wir machen es manuell.

      Syn. okay - eine Stunde geschrieben

      Uhrzeit synchronisiert! 11:00:01 21.01.19

      Nun tickt die Uhr wie eine Schweizerwerk solange dahin bis na ?????

      Uhrzeit synchronisiert! 11:00:01 21.01.19

      Uhrzeit synchronisiert! 11:00:01 21.01.19

      Uhrzeit synchronisiert! 11:00:02 21.01.19

      Uhrzeit synchronisiert! 11:00:02 21.01.19

      Uhrzeit synchronisiert! 11:00:02 21.01.19

      Uhrzeit synchronisiert! 11:00:03 21.01.19

      Uhrzeit synchronisiert! 11:00:03 21.01.19

      Uhrzeit synchronisiert! 11:00:03 21.01.19

      Uhrzeit synchronisiert! 11:00:04 21.01.19

      Diegeniale Plausi erkennt unabhänig von Einzelfehler undentscheidet. Wir müssen wieder mal aktiv werden.

      Es gibt keine Sekundenentscheitung für Clockübernahme. Hätte ich nun auch noch die Einzelheiten, in meinen Worten beschrieben, würde aus diese Metadiskusion eine Supermeta werden

      Frage mich nun ernsthaft, warum ich mir/euch dies hier alles antue.Habe leider noch keine Antwort gefunden.Danke vorab für Hilfe.

      Mit freundlichen Grüßen

      Dieser Beitrag wurde bereits 1 mal editiert, zuletzt von fredred () aus folgendem Grund: Und schon wieder wird Korrektur nicht dkzeptiert und noch schlimmer ein seltsames Format erstellt. Kann aber der Beweis sein, dass ich zu blöd bin.

    • fredred schrieb:

      Ich werde schwach.
      Was ist jetzt? Ich hab' doch nur das gemacht, wozu du mich aufgefordert hast

      fredred schrieb:

      So nun noch speziell für Dich ein kleiner Testcode. Da kannst du alles nachvollziehen. Musst es nur wollen.

      Und jetzt schreist du hier so rum? Hast du überhaupt gelesen, was ich an deinem code als falsch moniere? Anscheinend nicht, du schreibst es ja schon wieder. Oder wir sind uns uneins über den Begriff 'Synchronisieren'. Wenn ich schreibe, 'die clock ist synchron', dann meine ich in diesem Zusammenhang hier, 'die clock hat die DCF-Zeit'. Und wenn, warum auch immer, die clock verstellt wird, dann ist sie erst mal nicht synchron. Aber genau das ignorierst du und behauptest, die clock wäre noch synchron. Außerdem schummelst du.

      fredred schrieb:

      Status 71Hat sich entschieden, wir machen es manuell.

      Syn. okay - eine Stunde geschrieben
      Wenn dieses 'Syn. okay' kommt, dann kann Status 7 nicht 1 sein. Wäre es das, dann würde eine richtige Uhrzeit angezeigt werden. Aber du schreibst ja selber 'Nun wird „falsche“ Zeit nicht mehr geändert'.

      Also, bitte behaupte nicht, dass du durch Manipulation von bit6 des dcf_status eine Synchronisation anstoßen kannst, du kannst sie abwürgen (aber wozu?) und wieder möglich machen, aber auch nur wenn der Empfang ok ist.
      Was ich schlimmer finde, gerade, wenn dieser Beitrag nicht für Experten gedacht ist, dass du ohne Überprüfung des bit 7 des dcf_status eine Synchronisation der clock mit DCF behauptest, bzw per print ausgibst.

      Und was der Amateur davon hat

      fredred schrieb:

      Da ich die Plausibilitätsprüfungdes Endprodukts (Ausgegebene Uhrzeit )als wichtiger einstufe, wie die der Impulsbreite, habe ich in der Spielerei mal die Zeit verstellt, dieeine Störung simuliert, die nicht ständig automatisch korrigiert werden soll, da ich davon ausgehe wie beschrieben, dass solche Störungen nicht der Normalfall sind.
      verstehe ich immer noch nicht. Ist es wohl nicht gewollt, dass wenn man einen DCF-Empfänger anschließt, möglichst oft eine genaue Uhrzeit hat?

      Ach, nochwas

      fredred schrieb:

      Diegeniale Plausi erkennt unabhänig von Einzelfehler undentscheidet. Wir müssen wieder mal aktiv werden.
      wie soll das gehen, wenn du das vorsätzlich verhinderst, eben mit Spielereien am bit6?
      Raum für Notizen

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

      -----------------------------------------------------------------------------------------------------
    • Rudi Einstein schrieb:

      Wer sich zu sehr bemüht hinter die Dinge zu sehen, sieht am Ende die Dinge nicht mehr.
      Konfuzius oder Glückskeks? a_27_b277ca12 :D
      Raum für Notizen

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

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