Forum: Mikrocontroller und Digitale Elektronik Pollin DCF77 an ATMega8 will nicht wie ich


von Stefan F. (kpy3ep) Benutzerseite



Lesenswert?

Hi ihr Lieben,

Hab ein kleines Problem bei einem Projekt mit DCF77 Empfänger von 
Pollin.

Angeschlossen ist das Modul mit dem Data-Ausgang an den PD2 (Int 0) und 
der PON an einen anderen Pin zum kontrolliert an/ausschalten.

Versorgungsspannung ist sauber (6V Bleiakku und 78L03) und zusätzlich 
wurde der Data-Out des DCF77 mit 100nF gegen VCC gezogen, damit die 
Impulse sauberer Kommen.

Laut OSZI schickt das DCF-Modul auch sauber die Impulse raus (vgl. 
DCF_high_bit und DCF_low_bit Bilder).

Ich nutze die Firmware von Michael S. 
(Beitrag "Re: DCF-Uhr ohne Sonnenstand etc. in C"), welche ich nur an 
den Atmega8 angepasst habe (siehe dazu dcf77_mini1.c)

Laut RS232 Debug empfängt der AVR auch etwas, allerdings interpretiert 
er jedes Bit als Low-Bit außer die neue Minute (da dort das Bit 
anscheinend länger gesendet wird).

Ich vermute ich habe irgend etwas mit den Timern verrissen, komme aber 
nicht drauf wo der Fehler liegt, daher bitte ich um ein Prüfendes 
Augenpaar von euch.

In der Main (bzw. der Initialisierung) wird das DCF-Modul und der 
Interrupt so initialisiert:

  // Port D für Interrupts Initialisieren

  DDRD &= ~(1<<PD2) | ~(1<< REED_OBEN);      // INTs als Eingänge
  DDRD &= ~(1<<REED_UNTEN);            // untere Endlage
  DDRC &= ~(1<<LIGHT_SWITCH);          // Lichtschalter
  PORTD |= (1<<REED_OBEN) | (1<< REED_UNTEN);  // INT1 und untere Enlage 
mit PullUp

  MCUCR |= 0b00001001;        // INT1 bei fallender Flanke, INT0 any 
logical change
  GICR |= 0b11000000;        // INTs aktiv

  _delay_ms(1000);
  PORTC |= (1<<DCF77_PON);      // DCF77 off
  _delay_ms(1000);
  PORTC &= ~(1<<DCF77_PON);      // DCF77 Restart

  DCF_Init();            // Timer Init, Interrupts

  #if USART == TRUE
  RS232_Init();      // Serielle Schnittstelle Initialisieren
  #endif

  sei ();            // Enable Interrupts

von Wolfgang (Gast)


Lesenswert?

Steve F. schrieb:
> Laut OSZI schickt das DCF-Modul auch sauber die Impulse raus (vgl.
> DCF_high_bit und DCF_low_bit Bilder).

Was ist dadran sauber?
Sauber wäre ein Wechsel von L auf H am Anfang des Sekundenpulses und 
ein Wechsel von H auf L am Ende.

von Stefan F. (kpy3ep) Benutzerseite


Lesenswert?

Ich dachte das muss so?

Nutze das erste mal das Pollin-Modul, und hatte gelesen, dass es eine 
reihe von Impulsen raus schickt. Hmm...sollte dem nicht so sein, was 
könnte dann die Ursache dafür sein?

von Wusel D. (stefanfrings_de)


Lesenswert?

Dein Oszilloskop Bild zeigt sehr unsaubere Impulse. Ich hatte mal eine 
Uhr mit  einem DCF77 Modul gebaut und da kamen top-saubere TTL Signale 
raus.

von Stefan F. (kpy3ep) Benutzerseite


Lesenswert?

hmm...na gut, würde zumindest erklären warum es nicht so funktioniert 
wie es soll.

Aber woran kann es liegen, dass die Impulse so zerstückelt kommen? Das 
Signal sieht auch bei offenem Ausgang so aus...kommt also vom DCF-Modul.

von Falk B. (falk)


Lesenswert?


von Stefan F. (kpy3ep) Benutzerseite


Angehängte Dateien:

Lesenswert?

ähhmm..sorry. Ich hatte wohl was verwechselt. Habe soeben den 100nF 
Kerko zwischen Data und Vdd entfern und siehe da die Impulse kommen 
sauber und zusammenhängend entweder 100ms oder 200ms lang.

Dennoch erkennt meine Firmware das nicht (siehe Screenshot).

Die Impulslänge wird zwar ordentlich berechnet, aber irgendwie wertet 
das Ding die Bits nicht aus...

von Stefan F. (kpy3ep) Benutzerseite


Angehängte Dateien:

Lesenswert?

Ok, wollte mich nur hier zurückmelden falls jemand auf das Thema stoßen 
sollte. Die Uhr läuft jetzt.

Grund für den Fehler war zum einen genannter 100nF Kondi und die 
Unfähigkeit meiner Person den genutzten Quelltext ordentlich zu lesen.

// --- DCF-Empfänger 
----------------------------------------------------------
// erwartet wird vom DCF-Empfänger:
// DCF-Ruhe-Level: HIGH, bei Signal: LOW !!!!!!!!!!!!!!!!!!!!!!!!!

...habe das Signal vom DCF-Empfänger nun über einen kleinen Mosfet 
invertriert. Läuft 1A.

Danke trotzdem allen ;)

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.