Hallo Leute poste hier mal eins meiner ersten Projekte. Habe mir U. Radig seinen Code genommen die Uart entfernt und versucht eine Binary Clock zu bauen. Ulrich Radig möge mir vergeben aber meine C-Kenntnisse sind noch sehr gering. Will dein Programm nicht verunstallten. Nach einigen kleinen Problemen dem DCF Empfang und die Spannungsversorgung denke ich sollte es vom Aufbau her passen. Den DCF Empfänger habe ich vom Pollin und funktioniert soweit auch Sekundensignal ist da und aktiviert wird das Modul über ein RC-Glied. (so getestet: http://www.b-redemann.de/dcf77.shtml) Kurz zum Aufbau: Empfänger Pollin (hatten wir ja schon) Signal am INT0 Sekunden, Minuten und Stunden werden an PORT C, A und B Atmega 16 mit ner Taqtfrequenz von 16 MHz Ein Problem das mir noch den letzten nerv kostet habe. Die Funkruhr synchronisiert sich nicht immer bzw sie empfängt die zeit eher nicht als das sie sie empfängt. Schaltung anschalten Zeit wird empfangen und angezeigt ich mache eine Reset und die Zeit kommt nicht die Schaltung kann ne Stunde oder zwei laufen interessiert se aber net habe dabei das Steckbrett nicht von der Stelle bewegt. Es gibt Tage da klappt der Empfang ohne Probs und dann klappts wieder drei Tage garnicht :-( Ah nochwas habe jetzt gerade ein DCF Modul vom grossen C dran sieht genauso aus Wenn jemand eine Idee hat würd ich micht echt über eure Vorschläge freuen. Aber bitte nicht vergessen ich bin Änfänger also zieht nicht über mich her das ist mein erstes richtiges Projekt. Gruß Daniel
Das die Uhr keinen Empfang hat kann an ihr selbst liegen, ich habe die Erfahrung gemacht das sich diese Empfänger sehr leicht stören lassen. Zum Beispiel von einer gemultiplexten Anzeige, einem Netzteil oder Metallteilen, auch von der Platine oder dem AVR selbst. Daher das Modul am besten so weit wie möglich von anderen Teilen anbringen. Nachts ist der Empfang übrigens bedeutend besser als Tagsüber. Am Rande noch was zur DCF-77-Bibliothek von Ulrich Radig: Vorweg, die ließ sich hervorragend Integrieren, nichts was man erst kompliziert in den Eigenen Quellcode verschachteln müsste. Aber da war noch ein interessantes Problem, wenn der Funkuhrempfänger Murks empfängt lässt sich diese Uhr leicht aus der Fassung bringen. Die Bibliothek zählt Sekundenweise, wenn aber aus welchem Grund auch immer, ein falsches Signal empfangen wird wird die Sekunde, die er grade runterzählt, vorzeigig abgebrochen und von vorne begonnen. Das ist gut wenn man die Sekunden auch synchron nach dem DCF-77-Signal beginnen will, aber sehr schlecht wenn der Empfang gestört ist. Zum Beispiel von einer großen, PWM-gedimmten 7-Segment-Anzeige. So kommt man pro Stunde schnell auf fünf Minuten Gangfehler, sollte das Signal nicht für eine korrekte Synchronisation reichen. Ich hab damals die Uhr in einen extra Timer gepackt und die Bibliothek nur dazu benutzt die Aktuelle Uhrzeit aus dem DCF-77-Signal zu dekodieren.
Servus, wieso meinen die Leute eigentlich immer, den DCF an einen Interrupt Eingang haengen zu muessen? Das ist murks. So versaut wie das Signal ist kann man nicht vernunftig darauf triggern. Man tastet das Signal in einem Timerinterrupt ab und gut ist. Schau mal in die Codesammlung. Da gibt es einen schoenen Code vom Peter.
Voll deiner Meinung, Robert Weber! Samplen statt Triggern! Wer anderer Meinung ist, sollte das DCF-Signal einfach über einen anderen Portpin ausgeben und dort eine LED dran hängen, alle Empfänger die ich bisher hatte kommen ab und zu ganz schön ins flackern ;-)
>Wer anderer Meinung ist, sollte das DCF-Signal einfach über einen >anderen Portpin ausgeben und dort eine LED dran hängen Hab ich auch schon gemacht, aber nur um den Empfänger nicht per Oszi auf die Finger schauen zu müssen. Ergebnis war, das bei schlechtem Empfang, das Modul beim Abgesenkt-Pegel maximal 1-2 kurze Schlenker reinreisst. Der Abgesenkte-Pegel dauert aber nie länger als 0,2 Sekunden, der Nicht-abgesenkte Pegel bleibt praktischerweise Clean. Ich bleib auch dabei, das der Interrupt dafür gut geeignet ist. Steigende Flanke löst den Interrupt aus und setzt den Startpunkt, fallende Flanke löst erneut aus und notiert die Impulslänge. Jetzt kann man in aller Ruhe in der Main-Routine die Zeit auswerten und das Bit übernehmen/verwerfen. Das alles spielt sich in maximal 0,2 Sekunden ab, die restlichen 0,8 Sekunden wartet man ja aufs nächste Bit. Die Zeit kann man den ganzen Controller bis auf den Uhrentimer auch gleich schlafen schicken, aufwecken dank Interrupt ja kein Problem.
Andreas Klepmeir wrote:
> Ich bleib auch dabei, das der Interrupt dafür gut geeignet ist.
Genau. Deshalb gibts auch pro Woche mind. einen Thread wo jemand
Probleme mit DCF oder auch Schaltern oder Tastern am IRQ Pin hat.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.