Forum: Mikrocontroller und Digitale Elektronik Dcf77 Funkuhr - Hilfe bei der Programmierung


von Klaus P. (klaus_p700)



Lesenswert?

Hallo,
ich habe mein altes Schulprojekt ausgekramt und habe festgestellt, dass 
der Code nicht funktioniert und wollte die Uhr nun zum Laufen bringen.
Leider kenne ich mich mit der Programmierung sehr schlecht aus. Ich habe 
mich mehr mit dem Gehäuse und der Platine beschäftigt, dazu auch ein 
paar Bilder.

Kann mir jemand helfen ?

Vielen Dank im Voraus
Klaus

von Hubert G. (hubertg)


Lesenswert?

Schon mal in Projekt und Code die Suche benutzt? Da ist sicher was 
dabei.

von Fred R. (fredylich)


Lesenswert?

Hallo Klaus,

schöne Bilder. Nehme auch an die Hardware ist okay. Die wichtige Antwort 
fehlt.
Mit welcher Hard- Software möchtest Du den Atmega8 programmieren.
Ohne diesen Hinweis ist eine Hilfe nicht möglich.

Gruß
fredred.

von Klaus P. (klaus_p700)


Lesenswert?

Hallo Fred,
ich verwende als Software das Atmel Studio 6 und dazu den USBasp.

Grüße
Klaus

von Mark S. (voltwide)


Lesenswert?

hübsch gemacht, gefällt. Es könnte allerdings passieren, dass das 
Steckernetzteil Deinen DCF-77 Empfang empfindlich stört.

von Fred R. (fredylich)


Lesenswert?

Hallo Klaus,

kann leider nicht helfen. Programmiere mit BASCOM.

Viel Erfolg
Fred

von Joachim B. (jar)


Lesenswert?

Klaus P. schrieb:
> Hallo Fred,
> ich verwende als Software das Atmel Studio 6

du sagst doch nur die IDE

welche Sprache willst du nutzen? ASM C C++

Ich denke mit etwas Hilfe ist es so nicht getan wenn du nicht mal weisst 
was eine Programmiersprache ist und du deine bevorzugste nicht nennst.

DCF77 Code gibt es wie Sand am Meer, die IMHO beste ist von Dannegger 
ist verdammt schwer für Programmiereinäugige sich einzuarbeiten aber man 
lernt viel.

Für Programmierblinde empfehle ich den Code slebr nach Wahl zu 
erstellen.

So schwer ist das ja nicht verbal umszusetzen in jeder gewünschten 
Sprache.

DCF beginn nach 2s Lücke, kann 1,8s oder 1,9s sein je nach letzem Bit
dann folgen 20 Statusbits 100-200ms die ich nicht beachten brauche.
Nun wirds interessant es folgen die wichtigen Bits die ich einsammle und 
entsprechend einsortiere. Die BCD zu Int Umwandlung bei Bedarf noch 
Plausibilitätsprüfung und/oder CRC für Fortgeschrittene.

Jeder weiss doch das Minuten und Sekunden >=0 und <60,
Stunden <24 sind

usw.

So habe ich mal am PC und Joyport die Bits eingesammelt, eine gute Übung 
um es für den µC umzusetzen.

von Paul B. (paul_baumann)


Lesenswert?

Fred R. schrieb:
> kann leider nicht helfen. Programmiere mit BASCOM.


In Bascom ist eine DCF-77 "Unterstützung" in Form von "Config DCF77" und
"DCF77TIMEZONE" eingebaut. Das macht die Programmierung einer Uhr 
ziemlich einfach.

MfG Paul

von Joachim B. (jar)


Lesenswert?

Paul B. schrieb:
> In Bascom ist eine DCF-77 "Unterstützung" in Form von "Config DCF77" und
> "DCF77TIMEZONE" eingebaut. Das macht die Programmierung einer Uhr
> ziemlich einfach.

kommt halt drauf an ob es perfekte Impulse sind.

Hier ist der Empfang so dünne das ich mit der Betrachtung der aktiven 
100ms 200ms nie zurecht kam, als abgesetztes Modul waren bei meinen 
ersten Versuchen die Impulse so verschliffen und verkürzt das die 
Grenzen bis 60ms runtergingen und nach oben bis 250ms.

Bei neueren Versuchen waren die 100m/200ms stellenweise unterbrochen mit 
einige µs Lücken so das eine Pulsbewertung nicht möglich war.

Ich behalf mir mit einer besseren Lückenerkennung Lücke 800ms oder 
900ms, die immer sauber erkannt wurde, aber dann ist halt meine Sekunde 
immer eine zu spät und ich muss natürlich auch beobachten ob davor alles 
OK war. Nur die Lücke feststellen reicht halt nicht. Die Lücke muss für 
58 Sekunden ins Raster passen.

Wenn du das ziemlich einfach nennst, na OK

Ich habe hier etliche Module, etliche Standorte und den Oszi angehangen 
und genug Zeit damit verbracht den passenden Algorithmus zu finden, der 
hier zumindest für eine Uhr schon läuft. Was fehlt ist natürlich 
Langzeitbetrachtung, die steht bei meinem Bruder.

Es gibt perfekten Code Dannegger, leider gibt es nicht überall perfekten 
Empfang oder bessere DFC Module und da hilft guter Code wenig, nur gute 
Strategien wie statt Pulserkennung eben Lückenerkennung.

Am Dannegger Code stört mich die fehlende Unterdrückung von 
Störimpulsen, alles was nicht ins Schema passt wird verworfen wobei 1µs 
Störung im sonst perfektem Telegramm auch gefiltert werden könnte und 
sollte.

Wird bei Tastenentprellung ja auch gemacht, das Bit was nicht 4x 
innerhalb der Entprellzeit aktiv ist wird verworfen, das für den DCF 
Impuls angewendet würde kurze Störer ausblenden.

von Fred R. (fredylich)


Lesenswert?

Hallo,

gerate im Thema [DCF77 (Sekunden Synchronisieren)]

ein BASCOM Beispiel eingestellt.

Gruß
Fred

von Paul B. (paul_baumann)


Lesenswert?

Joachim B. schrieb:
> Wenn du das ziemlich einfach nennst, na OK

Nein, DEINE Methode nenne ich nicht "ziemlich einfach".

MfG Paul

von Joachim B. (jar)


Lesenswert?

Paul B. schrieb:
> Nein, DEINE Methode nenne ich nicht "ziemlich einfach".

und wie kann man das ändern?

Wie bekomme ich hier bessere Pegel und Module und störungsfreien 
Empfang?

Ich lade dich gerne ein mir hierbei zu helfen wenn du schon nicht 
fernreisen willst.

von Fred R. (fredylich)


Lesenswert?

Hallo Joachim B,

meine Erfahrungen mit DCF77 zeigen eindeutig, sind die Impulse nicht 
„sauber“, kann die Software nicht viel verbessern. Ist halt so in der 
Digitaltechnik. Um „perfekte Impulse“ zu bekommen muss schon die 
Hardware stimmen. Aus diesem Grund schalte ich direkt am DCF- Chip 
(Signalausgang) eine Transistorstufe nach. Vorteil ist ist Feldstärke 
noch ausreichend werden saubere Daten übermittelt, wenn nicht kommt 
nichts. Ob Daten okay sind zeigt eine LED an. Ist hilfreich beim 
ausrichten.

Gruß
Fred

von Paul B. (paul_baumann)


Lesenswert?

Joachim B. schrieb:
> und wie kann man das ändern?

>
> Wie bekomme ich hier bessere Pegel und Module und störungsfreien
> Empfang?
so:
Beitrag "Re: Dcf77 Funkuhr - Hilfe bei der Programmierung"

> Ich lade dich gerne ein mir hierbei zu helfen wenn du schon nicht
> fernreisen willst.

Ich habe 2 tadellos funktionierende Eigenbauuhren mit selbstgebauten 
Empfängern. Die Schaltung hatte ich hier auch veröffentlicht, finde sie 
aber nicht mehr wieder.

mfG Paul

von Joachim B. (jar)


Lesenswert?

Paul B. schrieb:
> Ich habe 2 tadellos funktionierende Eigenbauuhren mit selbstgebauten
> Empfängern.

hilft aber nix weil DU nicht HIER wohnst und ich nicht zu DIR umziehe.
Was HIER nur helfen könnte wären wohl nur bessere Empfänger so ein Mist, 
hat man nicht schon mit dem Proggerkram genug zu tun?

von Paul B. (paul_baumann)


Lesenswert?

Joachim B. schrieb:
> Was HIER nur helfen könnte wären wohl nur bessere Empfänger....

Jetzt hat er 's!

MfG Paul

von Joachim B. (jar)


Lesenswert?


von Paul B. (paul_baumann)


Lesenswert?

Joachim B. schrieb:
> welcher ist deiner?

Dabei habe ích es nicht gefunden, aber hier ist der Beitrag:

Beitrag "Re: DCF77 Empfänger Schaltung - keine Funktion"

MfG Paul

von Klaus P. (klaus_p700)


Lesenswert?

Um mal auf die ursprüngliche Frage zurückzukommen:
Ich habe mit Assembler programmiert.

Wie gesagt, es ist schon eine Weile her und wirklich gut ausgekannt habe 
ich mich damals ohnehin nicht.

Wie ich das bis hierher verstanden habe ist es selbst für erfahrene 
Programmierer nicht einfach mit dem DFC Signal umzugehen und wird daher 
für mich wenig Sinn haben mich damit außeinaderzusetzen.

Dennoch vielen Dank für die Antworten

von Joachim B. (jar)


Lesenswert?

Klaus P. schrieb:
> Wie ich das bis hierher verstanden habe ist es selbst für erfahrene
> Programmierer nicht einfach mit dem DFC Signal umzugehen

ich glaube das hast du falsch verstanden, zu keiner Zeit war ich ein 
erfahrener Programmierer, aber mit einem sauberen Signal ist es doch 
relativ einfach das auszuwerten, verbal beschrieb ich es ja hier schon.
Beitrag "Re: Dcf77 Funkuhr - Hilfe bei der Programmierung"

Schwierig wird es wenn die Signale unsauber sind, also nicht nur 
bekannte Impulsbreiten und Lücken kommen. Dann muss man entweder für 
bessere Signal sorgen oder bessere sprich klügere Software erzeugen.

Mir gefällt die Idee mit dem FPGA und digitaler Filterung die µs Impulse 
oder Lücken genauso digital filtert.
Evtl. ginge auch eine FFT die nur auf die Grundwelle und deren Amplitude 
schaut, aber das sieht selbst mir 2much aus.

Vielleicht fehlt mir einfach nur die Geduld PeDas Software einfach nur 
laufen zu lassen und nicht gebannt aufs Display zu schauen sondern nach 
3 Tagen mal zu gucken ob nicht was erkannt wurde.

Auch müsste ich mich noch mal explizit um die VCC Filter kümmern.
Saubere Impulse wären natürlich traumhaft.

von Lurchi (Gast)


Lesenswert?

Die Decodierung ds DCF77 SIgnals ist ein realtiv langsame Aufgabe, also 
genau passend für einen µC. Das Programm kann schon recht kompliziert 
werden, ist aber nicht besonders zeitkritisch. Ein FPGA is da viel zu 
energiehungrig und umständlich zu programmieren.

Für die Auswertung gibt es verschiedene Möglichkeiten, die 
unterschiedlich empfindlich auf Störungen sind. Wenn man sich anstrengt 
kann man auch ein schlechtes Signal noch auswerten, einfache Formen 
bringt schon eine kleine Störung aus den Takt. Mal ein Link zum lesen:
https://www.google.de/url?sa=t&rct=j&q=&esrc=s&source=web&cd=3&cad=rja&uact=8&ved=0CDAQFjACahUKEwjF1tuzyOzGAhWFxnIKHekeB9o&url=http%3A%2F%2Fwww.uni-stuttgart.de%2Fwechselwirkungen%2Fww2000%2Fmohr.pdf&ei=ymiuVcXJCoWNywPpvZzQDQ&usg=AFQjCNEZnu1VnjD-z476EtKacg_WbHoL-g&bvm=bv.98197061,d.bGQ

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.