Hallo, Leute!
Nachdem ich mit dem Display klar gekommen bin, habe ich das nächste
Problem auf dem Tisch, und zwar: die Zeit von einem DCF77-Modul
(Reichelt) zu lesen.
Ich habe die PIN "Signal" an PB1 und VDD an PB0 eines ATMega32
verbunden.
Nun schalte ich das Ding ein:
1
#define DCF77_SIGNAL_PORT PORTB
2
#define DCF77_SIGNAL_DDR DDRB
3
#define DCF77_SIGNAL_PIN PINB
4
#define DCF77_SIGNAL 1
5
6
#define DCF77_UB_PORT PORTB
7
#define DCF77_UB_DDR DDRB
8
#define DCF77_UB_PIN PINB
9
#define DCF77_UB 0
10
11
DCF77_UB_DDR|=_BV(DCF77_UB);
12
DCF77_SIGNAL_DDR&=~_BV(DCF77_SIGNAL);
13
DCF77_UB_PORT|=_BV(DCF77_UB);
Und in einer Schleife werde ich die Daten lesen...
Laut Doku wenn ein Signal 100ms lang ist, ist eine 0, wenn 200ms lang
ist, eine 1.
Hier meine Schleife:
Versuch mal das DCF-Signal ungeändert auf einer LED auszugeben. Du
müsstest lange und kurze Impulse sehen. Schreib eine Minute mit und
berechne die Zeit daraus.
Ich schrieb:> Versuch mal das DCF-Signal ungeändert auf einer LED auszugeben. Du> müsstest lange und kurze Impulse sehen. Schreib eine Minute mit und> berechne die Zeit daraus.
Ich habe kein LED...
Ich habe schon probiert die Hintergrundbeleuchtung des Displays an- und
auszuschalten, aber flackert SO schnell, daß man nur beim sehr
aufmerksam gucken verstehen kann, daß es doch flackert...
Das war mein Code:
Ich schrieb:> Versuch mal das DCF-Signal ungeändert auf einer LED auszugeben. Du> müsstest lange und kurze Impulse sehen. Schreib eine Minute mit und> berechne die Zeit daraus.
Korrektur: jetzt blinkt, aber immer sind die Impulse gleich lang...
Kaputtes Ding oder was?
Grüße
Luca Bertoncello
Irgendeine 5mm 20mA 2V rote LED (mit Vorwiderstand natürlich).
Es sollte genau einmal pro Sekunde blinken,
entweder 100ms (Binäre 0) oder 200ms (Binäre 1).
Den Unterschied sieht man (kurz oder lang).
Ich schrieb:> Irgendeine 5mm 20mA 2V rote LED (mit Vorwiderstand natürlich).> Es sollte genau einmal pro Sekunde blinken,> entweder 100ms (Binäre 0) oder 200ms (Binäre 1).> Den Unterschied sieht man (kurz oder lang).
Na gut, die Hintergrundbeleuchtung des Displays ist nix anderes als ein
LED.
Aber eine Sache (sehr komisch!) was ich gerade gesehen habe...
Wenn ich den DCF77 AUSSchalte, geht alles weiter wie vorher... Ist es
normal?
Ich denke, das Ding kriegt sein Strom über ein PIN des ATMegas, aber
sieht nicht so aus...
Einschalten tue ich mit:
1
DCF77_UB_PORT|=_BV(DCF77_UB);
Ausschalten mit:
1
DCF77_UB_PORT|=_BV(DCF77_UB);
In beide Fälle passiert das gleiche (LED flackert immer gleich lang).
Warum denn?
Danke
Luca Bertoncello
Lass das Ganze mal 10 Minuten laufen, vielleicht empfängt es dann erst
das Signal. Das mit dem Ausschalten kann ich nicht erklären, schalt VCC
über einen Schalter und nicht über den AVR.
Wie ist denn das Modul von Reichelt angeschlossen? Wenn ich mich recht
entsinne konnten die nur 5 µA am Ausgang treiben...
Ausserdem reagieren DCF-77-Empfänger, egal welcher Lieferant,
empfindlich auf Störquellen, kann also sein das du einfach keinen
Empfang hast. Nachts ist besserer Empfang als Tagsüber.
Andreas K. schrieb:> Wie ist denn das Modul von Reichelt angeschlossen? Wenn ich mich recht> entsinne konnten die nur 5 µA am Ausgang treiben...
PIN Signal an PB1, PIN UB an PB0 (mit einem Widerstand 1K), die andere
zwei an GND.
Ein Kerko 100n zwischen GND und UB.
Was ich noch nicht verstanden habe ist: was ist UB?!? Ist es ein
Eingang? Oder Ausgang? Bekomme ich Daten von dort? Oder muß ich was
geben?
> Ausserdem reagieren DCF-77-Empfänger, egal welcher Lieferant,> empfindlich auf Störquellen, kann also sein das du einfach keinen> Empfang hast. Nachts ist besserer Empfang als Tagsüber.
Naja, 1 und 0 empfange ich jetzt, aber die lange Pause nach dem 59.
Sekunde immer nicht...
Ideen?
Wie kann ich prüfen, ob das Problem bei meinem Programm ist, und nicht
bei dem Modul?
Danke
Luca Bertoncello
Bei dem Modul von Reichelt oder Pollin gibt es häufiger
Empfangsprobleme. Suche am besten mal hier im Forum. Die besten
Ergebnisse habe ich selbst mit dem Modul von Conrad gemacht. Allerdings
ist auch das empfindlich gegenüber einer unsauberen Versorgungsspannung.
Also ordentlich filtern.
Also wenn du kurze und lange Impulse siehst, dann muss es auch eine
Pause in der 59. Sekunde geben. Es ist keine lange Pause, es fehlt eben
nur ein Impuls. Versuch mal die Impulse aufzuschreiben (ja ich weiß, das
ist schwierig, am besten mit 2 Personen -> einer schaut, einer schreibt)
und dann herauszufinden, ob du daraus Datum und Uhrzeit lesen kannst.