DCF77 Bits

Logger

Mitglied
25. Feb. 2009
106
2
18
Dinslaken
Sprachen
  1. BascomAVR
Hallo zusammen

Habe jetzt eine weile rum experimentiert mit der DCF77 , auch dein Programm Markus habe ich mir aufgespielt und ausprobiert (ohne DS13XX),und es klappt alles bestens; aber ich verstehe nicht wir ihr an bestimmte Bits kommt. :confused: :confused: :confused:
Zum beispiel Rot markiert:

Code:
Print Time$ ; " " ; Date$ ; " " ; Time(dcf_sec) ; " " ; Date(dcf_day) ; " " ; [COLOR="Red"]Bin(dcf_sec) ; " " ; Bin(dcf_day) ; " " ; Bin(dcf_month) ; " " ; Bdcf_impuls ; " " ; Bdcf_pause ; " " ; Dcf77timezone()[/COLOR]

Habe schon eine ganze weile rum gegoogelt aber nichts dergleichen gefunden.
Auch steht im Datenblatt meines DCF77 empfängers (von Conrad) nichts vergleichbares.:mad:

Woher habt ihr euer wissen, möchte gerne daran teilhaben. :rolleyes: :( :D

lg Ralf :D
 
Hallo Logger!

Hast du schon mal einen Blick in die BASCOM-Hilfe zum Thema DCF77 geworfen? ;)


Da werden Sie geholfen. :D




Wenn du spezielle Infos zu den "60" Bits des Protokolls haben möchtest,
dann schau doch mal auf die Seite des Betreibers..... Die PTB in Braunschweig !


Schöne Grüße,
Cassio


EDIT:
Hier mal ein Überblick......

dcf77kode2007.jpg
 
Hallo Cassio

Danke für die Antwort.
Das sind alles Informationen die ich schon habe , auch die Bascomhilfe habe ich schon durchforstet.
Aber aus diesen infos kann "Ich" keine Bascom befehle ablesen.
Wie z.B.: Time(dcf_sec)= Zeit der DCF77
Date(dcf_day)= Datum der DCF77
Bin(dcf_sec)= Binär wert der Sekunden der DCF77

Diese infos habe ich mir zusammen gedacht aber nirgends lesen können.

Gruß Ralf
 
Hallo Logger!

Also irgendwie verstehe ich deine Frage nicht bzw. komme nicht dahinter, was du nun eigentlich genau wissen möchtest. :hmmmm:

Hier ist mal ein Auszug aus der Hilfe von BASCOM:

Code:
Do

  For I = 1 To 78

    Waitms 10

    If Sec_old <> _sec Then

        Exit For

    End If

    If Dcfsec_old <> Dcf_sec Then

        Exit For

    End If

  Next

  Waitms 220

  Sec_old = _sec

  Dcfsec_old = Dcf_sec

  Print Time$ ; " " ; Date$ ; " " ; [COLOR="Red"][B]Time(dcf_sec) ; " " ; Date(dcf_day) ; " " ; Bin(dcf_status) ; " " ; Bin(dcf_bits) ; " " ; Bdcf_impuls ; " " ; Bdcf_pause[/B][/COLOR]

Loop


Die wichtigen Daten habe ich mal rot makiert. ;)
Ich denke aber, dass du dies schon selbst gefunden und gelesen hast.

Wenn du diese angegebenen Variablen nun in dein Programm einfügst dann kannst du sehen, welche Informationen sich hinter den Variablen verbergen.
Ich denke mal, dann stellt sich der Aha-Effekt von alleine ein. :)


Vielleicht hast du auch eine falsche Vorstellung vom DCF-Prinzip, oder du grübelst an einem Thema, an dem es nichts zu überlegen gibt?
Oder ich verstehe einfach dein Problem nicht.....


Alle relevanten Variablen, die BASCOM durch den Befehl "Config dcf" selbst erzeugt sind doch in der Hilfe beschrieben....
Das sind keine geheimen Aufrufe von Variablenwerten. ;)


Ist deine Frage nun beantwortet, oder stehe ich hier völlig auf dem Schlauch? :hmmmm:

Gruß,
Cassio
 
Hallo zusammen,

Hier ist mal ein Auszug aus der Hilfe von BASCOM:

Code:
  Sec_old = _sec

  Dcfsec_old = Dcf_sec

  Print Time$ ; " " ; Date$ ; " " ; [COLOR="Red"][B]Time(dcf_sec) ; " " ; Date(dcf_day) ; " " ; Bin(dcf_status) ; " " ; Bin(dcf_bits) ; " " ; Bdcf_impuls ; " " ; Bdcf_pause[/B][/COLOR]

Die wichtigen Daten habe ich mal rot makiert. ;)

Alle relevanten Variablen, die BASCOM durch den Befehl "Config dcf" selbst erzeugt sind doch in der Hilfe beschrieben....
Das sind keine geheimen Aufrufe von Variablenwerten. ;)
Ich schätze mal, das es in Bascom so ähnlich abläuft wie bei der Systemzeit bei Unix/Linux.

($Second, $Minute, $Hour, $Day, $Month, $Year, $WD, $DayOfYear, $IsDST) = localtime(time); # Lokale Zeit holen

Der Befehl time liefert die Anzahl der Sekunden ab dem 01.01.1970 .
mit der Funktion localtime() wird diese riesige Zahl in ein Array umgesetzt, was als
Werte dann die Nummer des Wochentages, Jahr, Monat, ... beinhaltet.

Bei BASCOM wird es wohl statt "time" folgende riesen Zahlen geben ...
dcf_sec (?? Anzahl der Sekunden des Tages ??)
dcf_status (?? Status crc-Checks, Schaltsekunden, ... ??)
dcf_day (?? Anzahl der Tage seit ... ??)
dcf_bits (?? Der DCF-Bitstrom einer Minute ??)

und aus diesen Zahlen generieren die Funktionen
Time()
Date()
Bin()

die entsprechenden Informationen, die man haben möchte.
So interpretiere ich das jetzt mal mit den Kenntnissen, die ich aus anderen Programmiersprachen
besitze. Ich könnte mich da aber irren, da ich von BASCOM eigentlich keinen
großen Schimmer habe :rolleyes:

War es das, was Du wissen wolltest ?

Gruß
Dino
 
Hallo Dino!

Vom Prinzip hast du, was die Softclock betrifft, gar nicht so unrecht.
Du kannst dir z.B. auch die Sekunde des Tages anzeigen lassen "Time(1SecOfDay)".


Bei Logger geht es aber um den DCF77-Empfang.

Ich hatte früher immer gedacht dass ein Signal gesendet wird, in der alle Datenbits enthalten sind.
Darum habe ich auch Tage damit verbracht heraus zu finden, wie oft dieses Signal gesendet wird. :rolleyes:

DAS ist natürlich völliger UNSINN! ;)

Innerhalb einer Minute wird JEDE Sekunde das Signal gesendet.....
Die Länge der Impuls- und Pausenzeit bestimmt das Bit.
Wenn du dir nun noch mal oben das Bild ansiehst dann kannst du erkennen, dass z.B. von der 21. Sekunde bis zur 28. Sekunde die Bits für die NEUE Minute übertragen werden. Danach erfolgen die Bits für die Stunde usw.

Du bekommst quasi die einzelnen Daten binar im Sekundentakt geliefert....
Diese Stückchen werden dann zusammen gesetzt und ergeben die gewünschte Information.
Voraussetzung ist natürlich, dass bei Sekunde Null mit dem Zählen der Bits begonnen wird. Sonst werden völlig falsche Informationen berechnet!
Das ist auch der Grund, warum z.B. die DCF-Stunde den Wert 45 annehmen kann, oder die Minute den Wert 85. ;)

Es kann also ein paar Minuten dauern, bis das "Startbit" (die Sekunde Null) erfolgreich empfangen wurde und ab dann die einzelnen Bits auch richtig zusammen gerechnet werden.


Ich hoffe, ich habe das hier nun alles richtig erklärt und ihr habt es ein wenig verstanden. :)

Gruß,
Cassio
 
Hi Cassio,

Innerhalb einer Minute wird JEDE Sekunde das Signal gesendet.....
Die Länge der Impuls- und Pausenzeit bestimmt das Bit.
Genau. Ich glaube 0,1s / 0,2s für High/Low

Wenn du dir nun noch mal oben das Bild ansiehst dann kannst du erkennen, dass z.B. von der 21. Sekunde bis zur 28. Sekunde die Bits für die NEUE Minute übertragen werden. Danach erfolgen die Bits für die Stunde usw.
Genau :D Wird im BCD-Format und nicht im Binärformat übertragen :D

Du bekommst quasi die einzelnen Daten binar im Sekundentakt geliefert....
Diese Stückchen werden dann zusammen gesetzt und ergeben die gewünschte Information.
Voraussetzung ist natürlich, dass bei Sekunde Null mit dem Zählen der Bits begonnen wird. Sonst werden völlig falsche Informationen berechnet!
Das ist auch der Grund, warum z.B. die DCF-Stunde den Wert 45 annehmen kann, oder die Minute den Wert 85. ;)
Die Sekunde 59 fehlt zur Synchronisation. Bei Sekunde 0 gehts dann wieder los ...

Vergleich Binär zu BCD (jeweils 8Bit)
=> 14:32 (Beispiel)

Binär => 0000 1110 : 0010 0000 => Normal mit 8-Bit als Binärwert (Hex => 0x0E : 0x20)
BCD => 0001 0100 : 0011 0010 => Also pro Nibble eine Ziffer (Hex => 0x14 : 0x32)

Na ? Unterschied erkannt ?

Es kann also ein paar Minuten dauern, bis das "Startbit" (die Sekunde Null) erfolgreich empfangen wurde und ab dann die einzelnen Bits auch richtig zusammen gerechnet werden.
Es sollte nach maximal einer Minute die Synchronisation mit dem Datenstrom erfolgt sein
(guter Empfang vorausgesetzt). Manche Algorithmen empfangen danach aber 2 Minuten
lang den vollen Datenstrom und vergleichen die 2 hintereinanderliegenden Minuten auf
Plausibilität. Also nicht nur die Checksummen innerhalb der Minute.

Ich hoffe, ich habe das hier nun alles richtig erklärt und ihr habt es ein wenig verstanden. :)
Ich hab ja noch was dazu gepackt :D

Gruß
Dino
 
Hi Cassio,

Ich wusste doch, du findest etwas. :D ;)
OK, stimmt natürlich....... im BCD-Format! :adore:
<großkotz on>
so nen Kleinkram muß ich nicht finden. Den kenn ich schon ein paar
Jahre
<großkotz off> :eek: :D

In der Ausbildung habe ich mit nem Kumpel zusammen schon mit
Empfänger-ICs für DCF77 rumgebastelt. Da hat man die Spule
um den Ferritstab noch selber gewickelt und den Schwingkreis
mit nem Trimmkondensator abgestimmt ;)

(Ich hoffe mal das sieht jetzt nicht zu Großkotz-mäßig aus :eek: )

Gruß
Dino
 
<großkotz on>
so nen Kleinkram muß ich nicht finden. Den kenn ich schon ein paar
Jahre
<großkotz off> :eek: :D

Hi Dino!

Nein, ich meinte ja auch nur, dass du bestimmt etwas in meiner Ausführung finden würdest. ;)

Das hat auch nichts mit Großkotz zu tun!
Du hast ja Recht gehabt.... Wenn man sich oben das Bild genau ansieht, dann kann man auch erkennen dass dort z.B.: "1, 2, 4, 8, 10, 20, 40" steht!
Also BCD und nicht Binär! ;)




Was mir eben noch eingefallen ist...

Falls Logger wissen möchte, was die einzelnen Bits bei "dcf(bits)" bedeuten.
Dies steht auch in der BASCOM-Hilfe:


0
The last reading of the DCF pin.

1
This bit is reserved.

2
This Bit is set, if after a complete time-stamp at second 58 the time-stamp is checked and it is OK. If after a minute mark (2 sec pause) this bit is set, the time from the DCF-Part is copied to the Clock-Part and this bit reset too. Every second mark also resets this bit. So time is only set, if after second 58 a minute mark follows. Normally this bit is only at value 1 from Second 58 to second 60/00.

3
This Bit indicates, that the DCF-Part should be stopped, if time is set. (at the option of updating once per hour or day).

4
This Bit indicated that the DCF-Part is stopped.

5
This bit indicates, that the CLOCK is configured the way, that during DCF-Clock is stopped, there is only one ISR-Call in one second.

6
This Bit determines the level of the DCF input-pin at the pulse (100/200 mSec part).

7
This bit indicates, that the DCF-Part has set the time of the Clock-part.



Gruß,
Cassio
 
Hallo Cassio, Hallo Dino

Danke für eure Ausführungen. :adore: :adore: :adore:
Das mit dem Sende signal,der Amplituden Modulation, den Bits 0=0,1sec; 1=0,2sec und die absenkung des Trägersignals auf 25%

dcf77_signal.jpg


der DCF77 ist bei Wikipedia und http://www.ptb.de gut und verständlich erklärt.
Ein bischen was wusste ich auch. :eek:
Was mir Kopfzerbrechen gemacht hat , (vor euren Ausführungen) war, das ich nicht wusste wie die Befehle zustande kommen, das ich zum beispiel
Bdcf_pause den Bascom befehlen nicht zuordnen konnte, wird ja nicht mit Dim oder Config erzeugt.:( .
Dino hat mir die Augen geöffnet mit dem vergleich zu Linux und den Befehlen für die Zeit und Cassio hat recht "mann" sollte die Bascomhilfe richtig und in ruhe lesen.
(WER LESEN KANN IST EINDEUTIG IM VORTEIL):close_tema:

lg Ralf :D :cheers:
 
Hi Logger,

und Cassio hat recht "mann" sollte die Bascomhilfe richtig und in ruhe lesen.
Techniker lesen keine Anleitungen :D
1. Alles auspacken
2. Zusammenbauen wie man sich das so denkt
3. Fluchen
4. Alles in die Ecke feuern
5. Wir sehen uns mal die Bilder in der Anleitung an.
6. Fluchen weil bei 4. was kaputt gegangen ist was wir jetzt brauchen
7. Alles mit viel Klebeband und Sekundenkleber hinwerkeln (Spax-Schrauben
helfen auch manchmal).
8. Fluchen weil es jetzt aussieht wie Sau :D :D

:eek: :eek: :eek:

Gruß
Dino
 
Hallo,

wenn wir gerade beim Fluchen sind, mache ich gerne mit !

Wollte gerade eine Wetterstation verpacken und testete sie vorher nochmal. Lief alles perfekt, bis auf, na ihr ahnt schon, den DCF77 !!! Das Scheiß Ding wollte einfach nichts synchronisieren. Also Wetterstation wieder auseinander gepriemelt und das Modul überprüft. Wieder negativ. Hab echt einen dicken Hals bekommen, bis ich bemerkt habe, das meine anderen DCF77-Empfänger auch nichts vor die Antenne bekommen. Muß momentan ein echt Sch... Empfang sein. Obs am Wetter liegt ?

Thomas
 
Hi Thomas!

Hm, also bei mir habe ich heute den ganzen Tag keine Probleme gehabt.

Habe ja heute auch das neue Pollin-Modul in Betrieb genommen (in Juros Thread zu lesen) und auch das läuft hier seit Stunden.


Was mir aber vor ein paar Tagen aufgefallen ist.....
Wenn ich unsere Küchenlampe einschalte, dann ist es aus mit dem Empfang. :eek:
OK, die Lampe hat einen elektronischen Trafo für die Halogenleuchtmittel.... ist aber locker 8 Meter Luftlinie entfernt und in einem anderen Raum. Obendrein ist der Trafo in einem Edelstahlgehäuse untergebracht. :hmmmm:
Es können also nur die Stahlseile sein, die von der Decke zur höhenverstellbaren Einheit über den Tisch hängen. Diese müssen wie eine Antenne wirken, die auch mein DCF-Signal komplett platt macht.
Nun habe ich auch eine Erklärung dafür, dass ich meisten am frühen Abend meine Probleme mit dem Empfang hatte. ;)

Witzig ist aber... das hier auf dem Schreibtisch eine 50W-Halogenlampe mit konventionellen Trafo steht und die ist nur 25cm vom DCF-Modul entfernt....... Verursacht aber absolut keine Störungen. :)

Tja, manchmal muss man tatsächlich etwas durch die eigenen Räume laufen um den Störenfried zu finden...... :D


Gruß,
Cassio
 
Hallo Thomas

Habe mal die Erfahrung gemacht, das bei offenem Wetter (keine Wolken) der DCF77 empfang und das analoge Fernsehen schlechten bis gar keinen empfang hatten.
Heute habe ich allerdings Prima Zeit empfang und Fernsehen kommt vonne schüssel.
Nur die Ruhe deine Wetter Station scheint prima zu funktionieren, habe deine seite in einem Tab laufen und schaue hin und wieder mal nach dem Wetter im Süden. :pleasantry:
Zur zeit :

Temperatur : 1.31 °C
Tau- oder Frostpunkt : -1.29 °C
rel. Luftfeuchte : 82.79 %
Luftdruck : 1011.9 mbar
Wolkentemperatur : -9.82 °C
letzte Aktualisierung : 24.03.09 21:53:31


lg Ralf :D
 
wenn wir gerade beim Fluchen sind, mache ich gerne mit !

Hi !

Zu dem Thema kann ich auch noch schnell etwas beisteuern.... ;)

Als ich heute eines der DCF-Module angeschlossen habe, ging plötzlich die Beleuchtung von meinem LCD aus. :eek:

Habe vor Schreck gleich den Stecker des DCF-Moduls wieder abgezogen und alles war wieder gut.

Ein kurzer Blick auf meine selbsterstellte Platine hat mir meine eigene Unfähigkeit vor Augen geführt.
Ich habe eine 4-Stift-Buchsenleiste auf die Platine gelötet, damit ich die DCF-Module ggf. auswechseln kann....
IMG_0395.JPG

Dummerweise habe ich die kleine Empfängerplatine um einen Stift versetzt in die Buchsenleiste eingesteckt. :rolleyes:

Super, dachte ich...... das erste Modul wäre damit schon mal in dutten. :(


Die Geschichte hat aber ein Happy-End..... Das Dcf-Modul hat es überlebt! :)

Grüße,
Cassio
 
Hallo zusammen,

ich habe bei meinen Experimenten mit dem momentan schlechten Empfang noch was Interessantes heraus gefunden :

Offensichtlich ist das Module (diesmal ein Reichelt, Pollin sind momentan alle verbaut) sehr empfindlich, wenn die Versorgungsspannung nicht absolut sauber ist. Ein dicker Tantal-Elko (>22µF) direkt an den Anschlußpins der Versorgungspannung am Modul brachte den Empfang wieder zurück ;)

Habe auch gleich nochmal die Gegenprobe gemacht. Tantal weg, Empfang weg :eek:

Ich muß das bei Gelegenheit auch mal bei den Pollin-Modulen austesten.

Ralf, ich würde das mit dem Wetter genau entgegengesetzt behaupten. Wenns momentan Niederschlag hat, ist der Empfang schlechter.

Ähmm, meine Wetterstation tut schon seit Monaten, aber hier liegen noch 3 weitere rum, die sollen Morgen den Besitzer wechseln :rolleyes:

Thomas
 
Hi Cassio,

Ein kurzer Blick auf meine selbsterstellte Platine hat mir meine eigene Unfähigkeit vor Augen geführt.
Na, na, na...so etwas passiert doch schon mal, oder?:)
 
Hallo Grandpa !

Tja, es sollte eigentlich nicht..... aber kommt dann doch schon mal vor. ;)
Ich glaube, ich brauche langsam eine Brille. :D


War mal wieder ein Warnschuss vor den Bug.
Ist aber noch mal gut gegangen. Hatte echt gedacht, das Modul ist im Eimer.
Allerdings brauchen die DCF-Module ja zu Beginn immer eine Zeit, bis sie dann Signale zum µC schicken.
Waren bange Minuten. ;)

Gruß,
Cassio
 

Über uns

  • Makerconnect ist ein Forum, welches wir ausschließlich für einen Gedankenaustausch und als Diskussionsplattform für Interessierte bereitstellen, welche sich privat, durch das Studium oder beruflich mit Mikrocontroller- und Kleinstrechnersystemen beschäftigen wollen oder müssen ;-)
  • Dirk
  • Du bist noch kein Mitglied in unserer freundlichen Community? Werde Teil von uns und registriere dich in unserem Forum.
  •  Registriere dich

User Menu

 Kaffeezeit

  • Wir arbeiten hart daran sicherzustellen, dass unser Forum permanent online und schnell erreichbar ist, unsere Forensoftware auf dem aktuellsten Stand ist und der Server regelmäßig gewartet wird. Auch die Themen Datensicherheit und Datenschutz sind uns wichtig und hier sind wir auch ständig aktiv. Alles in allem, sorgen wir uns darum, dass alles Drumherum stimmt :-)

    Dir gefällt das Forum und unsere Arbeit und du möchtest uns unterstützen? Unterstütze uns durch deine Premium-Mitgliedschaft!
    Wir freuen uns auch über eine Spende für unsere Kaffeekasse :-)
    Vielen Dank! :ciao:


     Spende uns! (Paypal)