PDA

Archiv verlassen und diese Seite im Standarddesign anzeigen : DCF77 kleiner Bösewicht



Import-Script
13.01.2002, 20:40
Hi Leute <BR>Habe ich doch heute mal versucht DCF77 in Zahlen umzusetzen. Bin fast zum Schwein geworden, immer falsche Werte. Nach reichlichem Suchen habe ich doch eine kleine boshaftigkeit des DCF-Signals entdeckt. <BR>Also jetztmal konkret : <BR>59.Sek.= Daten Ende &#40;kein Impuls&#41; <BR>60.Sek.= Sek 0 <BR>21.Sek.= 1.Zeitbit <BR>Wer jetzt die Sek. nach dem Datenendesignal mitz&auml;hlt und meint bei 21 das <BR>1. Bit einlesen zu m&uuml;ssen, ist auf dem Holzweg! <BR>Der 1. Sekundentakt geh&ouml;rt zur alten Minute! <BR>Also ist bei Takt 22 das erste wichtige Zeitbit zu finden! <BR>Wohl dem der es wuste oder gesehen hat! <BR>Mich hat es jedenfalls locker 2 Stunden gekostet. <BR>Gru&szlig; Uwe

Import-Script
14.01.2002, 00:55
Also ich lese ab dem 21. Bit ein, genau wie im Protokoll beschrieben und es funktioniert: <BR> <BR><A HREF="http://www.specs.de/~danni/appl/soft/c51/thclock/dcf77.c51" TARGET="_top">http://www.specs.de/~danni/appl/soft/c51/thclock/dcf77.c51</A> <BR> <BR>Dein Fehler mu&szlig; also an anderer Stelle liegen. <BR> <BR>Peter

Import-Script
14.01.2002, 01:49
Hi Uwe! <BR> <BR>Du denkst schon daran, dass die Sekunde 0 nicht das 1. Bit ist, sondern die Sekunde 1 das 1. Bit ist? <BR> <BR>Gru&szlig; <BR>Andy

Import-Script
14.01.2002, 01:59
Nochmal ich... <BR> <BR>Dieses Schema hat mir bei meiner Funkuhr gut geholfen: <BR> <BR><IMG SRC="http://progshop.com/elektronik/diskussion/messages/6028/2154.jpg" ALT="Schema-DCF"> <BR> <BR>Gru&szlig; <BR>Andy

Import-Script
14.01.2002, 12:25
Hi Leute <BR>Danke f&uuml;r eure Anteilnahme. Eigentlich wollte ich nur andere davor warnen. Andy du hast recht Sek 0 ist Takt1, nur ich habe in ASM f&uuml;r AT90S1200 geschrieben und in der 59.Sek den Bitz&auml;hler genullt. 1Min hat aber 60 sek bzw. geht bei sek 0 los und das ist halt der 1.Takt der ankommt also habe ich einen Sekundentakt mehr bis zum 1.wichtigen Bit. <BR>Peter, wenn du dir dein Progr. anschaust, nullst du anders. <BR>Glaube ich jedenfalls, denn Takt 59 kommt nicht, du scheinst aber einen zu haben. Leider bin ich eine &#34;C-Null&#34; und kann es noch nicht ganz erkl&auml;ren. <BR>Jedenfalls haut es jetz hin. <BR>Gru&szlig; Uwe

Import-Script
14.01.2002, 17:10
Ich denke, ich nulle richtig: <BR> <BR>Wenn ein Impuls kommt und zum vorhergehenden 1,8...2,2 Sekunden vergangen sind, dann nulle ich. <BR>Wenn das auch der 59. Impuls war und alle Parit&auml;tsbits stimmen, dann &uuml;bernehme ich die Zeit. <BR>Der 59. kommt ja nicht, d.h. wenn ich bis 59 gez&auml;hlt habe, ist es doch schon die 0. Sekunde. <BR> <BR>Warscheinlich hast Du nur einfach das Zeitsignal invertiert und &uuml;bernimmst dann die Datenbits statt am Ende des Impulses erst am Anfang des n&auml;chsten Impulses. <BR> <BR> <BR>Peter

Import-Script
15.01.2002, 19:44
Hollo Peter, <BR>Ich glaube du hast es gerade selbst erkl&auml;rt, bei 59 &#40;60-1&#41; nullst du und der n&auml;chste ist dein 1.Z&auml;hlimp.,welcher dann nat&uuml;rlich Imp.1 ist. <BR>Ich nulle aber wenn das Signal ausbleibt, &uuml;brigens 1,3 sek nach Imp.58, nun kommt Imp.60/0 und inc meinen Z&auml;hler. Da steht nun eine 1 drinn wo es doch Sek 0 ist. Ich mu&szlig; also doch bis 22 z&auml;hlen. <BR>Gru&szlig; Uwe

Import-Script
16.01.2002, 00:37
Dann kannst Du aber DCF77 nicht als B&ouml;sewicht bezeichnen, wenn Du Dich nicht nach dem Schema richtest. <BR> <BR>Zeigst Du dann auch die neue Zeit eine Sekunde zu fr&uuml;h an oder ziehst Du dann wieder eine Sekunde ab ? <BR> <BR> <BR>Peter

Import-Script
16.01.2002, 18:34
Hi Peter, <BR>Die Zeit ist schon richtig, gebe sie ja bei Synchronimp. aus, <BR>allerdings ohne Sek. <BR>Ok. B&ouml;sewicht war m&ouml;glicherweise falscher Ausdruck, aber recht wirksam. &#34;Kleiner Hinterhalt&#34; w&auml;re vermutlich besser gewesen weil am Anfang steht unwichtiges Zeug&#40; ist schnell &uuml;bersehen, glaube es nur&#41;. <BR>&Uuml;brigens ist DCF77 nicht gerade sehr stabil -&#62; Bitfehler, h&auml;tte ich nicht erwartet. Da sollte man wohl doch eine &micro;C-Uhr mitlaufen lassen wenn man es stabil braucht. <BR>Gru&szlig; Uwe

Import-Script
16.01.2002, 19:15
Hi! <BR> <BR>Auf jeden fall eine Uhr mitlaufen lassen. Bei mir lese ich 2 min hintereinander ein, mache jeweils die Parit&auml;tskontrolle und vergleiche die beiden minuten miteinander &#40;nat&uuml;rlich die erste incrementiert!&#41;. Da kann nichts mehr schief gehen. Nat&uuml;rlich gibt&#39;s dann z.B. 10.59 nach 11.00 Uhr einen Vergleichsfehler, aber damit kann ich leben... <BR> <BR>Gru&szlig; <BR>Andy

Import-Script
16.01.2002, 19:42
Hi Andy, <BR>Das Ding soll eine 2Kanal DCF-Wochenschaltuhr werden, und ich habe jetzt schon nicht mehr viele Register frei, und das nur mit Zeit zusammenbauen , &uuml;berwachen und an 2x16 LCD ausgeben. Mist, brauch wohl doch Ram, na mal sehen! <BR>Gru&szlig; Uwe

Import-Script
16.01.2002, 22:47
Stimmt, <BR> <BR>man programmiert einfach eine normale Digitaluhr und nur, wenn die empfangene Zeit korrekt ist, wird sie synchronisiert. <BR>Langwelle ist zwar sehr weitreichend aber auch sehr st&ouml;rempfindlich. <BR>Wenn der PC oder Fernseher an ist, synchronisiert die Uhr &uuml;berhaupt nicht. <BR> <BR>Ich benutze den Conrad-Modul. Gibt es auch bessere Empf&auml;nger ? <BR>Die man am PC anschlie&szlig;en kann kosten ja gleich mehrere hundert Mark. Sind die auch wirklich besser ? <BR> <BR>Ja der AT90S1200 scheint mir auch ziemlich schwach auf der Brust. <BR> <BR>Hier findest Du mein AVR-Programm: <BR> <BR><A HREF="http://www.specs.de/~danni/avr/soft/dcf77/index.htm" TARGET="_top">http://www.specs.de/~danni/avr/soft/dcf77/index.htm</A> <BR> <BR>Aber kauf blo&szlig; nicht den tiny22, der ist immer noch buggy. <BR> <BR> <BR>Peter

Import-Script
17.01.2002, 12:31
Hi Peter, <BR>Habe auch das bl&ouml;de Conradmodul, aber ganz Tod bringe ich es nur wenn ich den Schlepptop auf 20cm ranbringe &#40;Bildschirm&#41;. <BR>Gegen die St&ouml;rungen habe ich jetzt schwere Filter eingebaut, schaue jetzt nur bei 141ms ob PD2=INT0 H oder L hat und wehe es kommt w&auml;rend 141ms <BR>&#43;/-16ms zu einem INT0 dann setze ich f&uuml;r 2 min error und &uuml;berschreibe Minuten Einer&#43;Zehner mit Fragezeichen. Der n&auml;chste Imp. wird erst nach 950ms freigegeben. Es l&auml;uft jetzt seit gestern recht ordentlich, aber ich mu&szlig; es noch ein wenig beobachten. <BR>tiny22 kaufe ich sowiso nicht weil nur schlechte Spr&uuml;che. <BR>Gru&szlig; Uwe

Import-Script
17.01.2002, 16:34
Du bist wohl ein Pessimist, <BR> <BR>immer diese Negativwertung: &#34;bl&ouml;de Conradmodul&#34;. <BR> <BR>Es reicht doch, wenn einmal am Tag das Signal stimmt. Der Quarz von Deinem Micro ist auch ohne Abgleich genau genug, damit Du keinen Unterschied merkst. <BR> <BR>Um die mitlaufende Uhr kommst Du auch bei allerbestem Empfang nicht herum oder gibts dort, wo du wohnst, keine Gewitter. <BR> <BR> <BR>Ein LCD st&ouml;rt kaum, sondern die Ablenkspulen von Bildr&ouml;hren &#40;mindestens 2m weit&#41;. <BR> <BR> <BR>Peter

Import-Script
18.01.2002, 12:38
Hi Peter, <BR>Du hast Recht, das Conr.Modul ist nicht schlechter wie mein DCF-Wecker!&#40;heute getestet&#41; <BR>An Gewitter hatte ich noch garnicht gedacht. Mu&szlig; ich wohl doch umschreiben, obwohl momentan recht stabiel.&#40;innerer Schweinehund!&#41; Es ist ja immer die Frage &#34;brauche ich es so genau?&#34;. Bei Schaltuhr f&uuml;hr Heizung sind 15 min zwar unsch&ouml;n aber nicht kritisch. <BR>Mal sehen. <BR>Gru&szlig; Uwe

elninio
14.01.2011, 19:04
hallo, ich muss für mein studium ein projekt mit ein funkuhr machen. Ich muss das Signal von ein DCF empfänger (der von conrad) auslessen mit mein microcontroller und die Sekunde Marke auslessen. Wie kann ich das machen. Ich darf nur die digitale eingänge. es ist ein s12x . Danke.

guidob
15.01.2011, 01:10
Was meinst du mit Sekundenmarke? Es gibt jede Sekunde eine Marke, die
sich in der Länge unterscheiden. Einlesen ist einfach, Portpin = 0, aus und
umgekehrt.

Oder meinst du die Minutenmarke? Die erkennt man daran, das in der 59ten
Sekunde keine Marke erscheint. Die folgende Marke kennzeichnet also den
Start der nächsten Minute.

elninio
16.01.2011, 10:09
danke fur dein Antwort.
Ich habe mein digitaleingang. portb pin 0. Und jetzt solte ich prufen wie oft ein 0 kommt? Oder wie sollte ich sehen das eine sekunde rum ist. Ich habe so gedacht: Ich abfrage jede 10 ms ob das pin 1 ist. wenn das pin mehr als 180 1 wurde dann habe ich meine 58 secunde. Wenn das pin nur 90 mall 1 war ist eine sekunde.
Ist das genau oder gibt es andere weg.
Danke



(Ich habe keine Deutschetastatur)

guidob
16.01.2011, 21:39
So sollte es gehen. Es gibt natürlich noch andere Möglichkeiten, aber so
wie du es vorhast ist sicher die einfachste. Die Polarität des Empfängers
musst du noch kontrollieren, also wann liefert er eine 1 und wann die 0.