DCF77 library

OP #3621223
Lesenswert?

Ich möchte keinen Wecker, eine "World Clock" oder einen Heliostat.

Einfach nur eine ganz normale Anzeige der Uhrzeit auf einem LCD in 
folgendem Format:

Uhrzeit: hh:mm
Datum: dd.mm.yyyy

Dafür eine Library, welche mir die Minuten, Stunden, etc.. in Variablen 
speichert.

Es wäre ja möglich, sogar sehr wahrscheinlich, dass jemand vor mir auf 
diese Idee gekommen ist. ^^

Würde mir echt viel helfen, weil ich langsam unter Zeitdruck stehe :S
#3621227
Lesenswert?

Ryan Polster schrieb:
> Ich möchte keinen Wecker, eine "World Clock" oder einen Heliostat.
>

Und was hindert dich jetzt daran, dir die Projekte durchzusehen und in 
jeweiligen Projekt den DCF Teil auszubauen?

Der ist normalerweise sowieso nur in einer FUnktion enthalten, die zb 
von einem Timer INterrupt regelmässig aufgerufen wird. D.h. was du 
brauchst ist die ISR (bzw. die Funktionalität in der ISR) und die Timer 
INitialisierung.

Timer haben aber die unangenehme Eigenschaft, dass sie in jedem Projekt 
anders vergeben bzw. benutzt werden. D.h. für den Teil mit dem Timer 
wirst du dich nach deinem bereits vorhandenem Code richten müssen und 
überlegen zu welchem Timer du die DCF Funktionalität dazupacken kannst.

Und der Rest ist der Code in der ISR, der die Zeitanalyse des Signals 
macht und die Bits da rauspfriemelt. Wahrlich nichts aufregendes. Wenn 
du um 16 Uhr angefangen hättest, wärst du schon längst fertig.


> Würde mir echt viel helfen, weil ich langsam unter Zeitdruck stehe :S

Dann hau rein.
Immerhin ist das DEINE Matura, die dir eigentlich bescheinigt, dass du 
einen Beruf erlernt hast, dir in 3 Jahren das Recht gibt den Titel 
'Ing.' zu führen und dir Zugang zur Hochschule verschafft.
(Firma: Brainit GmbH) #3621238
Lesenswert?

es gibt hier irgendwo DCF77-Decodier-Routinen von mir, die stammen aus 
meiner Anfangszeit mit uC, die würd ich eher nicht nehmen :-(

Dagegen gibt es hier irgendwo (mags jetzt nicht raussuchen) einnen Code 
vom Peter Danegger, der ist genial (wie alles vom Peter)
Gast #3621318
Lesenswert?

Ryan Polster schrieb:
> Ich möchte keinen Wecker, eine "World Clock" oder einen Heliostat.
>
> Einfach nur eine ganz normale Anzeige der Uhrzeit auf einem LCD in
> folgendem Format:
>
> Uhrzeit: hh:mm
> Datum: dd.mm.yyyy
>
> Dafür eine Library, welche mir die Minuten, Stunden, etc.. in Variablen
> speichert.
>
> Es wäre ja möglich, sogar sehr wahrscheinlich, dass jemand vor mir auf
> diese Idee gekommen ist. ^^
>

Entschuldigung, daß ich mit DCF77-Projekten helfen wollte. Ich konnte 
doch nicht ahnen, daß der Herr alles fix und fertig auf dem 
Silbertablett präsentiert haben möchte. Darf es auch ein programmierter 
Controller sein? Oder vielleicht noch eine Platine dazu? Ach, und löten 
sollte man sie auch noch. Sag bitte, welche Farbe das LCD haben soll, 
damit ich auch das richtige Display kaufe. Vielleicht noch ein Gehäuse 
gefällig?
[sarkasmus aus]

> [..] weil ich langsam unter Zeitdruck stehe :S
Keinen Finger selber krumm machen, aber die Leute, die helfen sollen, 
noch antreiben. Da kommt mir langsam die Galle hoch.
Gast #3621451
Lesenswert?

Langsam wird die Frage aktuell, für welchen Prozessor es denn sein darf.

Obwohl - wenn alles fertig im Gehäuse sitzt, kommt es darauf eigentlich 
nicht an ;-)

Michael Reinelt schrieb:
> Gerald B. schrieb:
>
>> http://blog.blinkenlight.net/experiments/dcf77/dcf77-library/
>
> Keine Ahnung was das Teil alles kann, aber 2700++ lines of code für
> DCF77-Empfang ist schon heftig...

Was hindert dich daran, dich mal ein bisschen in die verwendete 
Signalauswertung einzulesen, bevor du über die Codelänge herziehst. Lies 
dir z.B. einfach mal die Sache mit dem Korrelator zur Phasendetektion 
durch. Vielleicht begreifst du dann eher, woher die Codelänge kommt.
(Firma: Brainit GmbH) #3621704
Lesenswert?

Mike schrieb:
> Was hindert dich daran, dich mal ein bisschen in die verwendete
> Signalauswertung einzulesen, bevor du über die Codelänge herziehst. Lies
> dir z.B. einfach mal die Sache mit dem Korrelator zur Phasendetektion
> durch. Vielleicht begreifst du dann eher, woher die Codelänge kommt.

Hey, ich bin nicht "darüber hergezogen". ich habe lediglich festgestellt 
dass der Code im Vergleich zu anderen DCF77-Implementierungen doch 
ziemlich umfangreich ist, und wollte wissen warum. Du hast das mit der 
Phasendetektion eh beantwortet.

Nur interessehalber: was braucht das Teil am Ram und Flash?
OP #3624048
Lesenswert?

Hallo Leute :)

Ich verwende jetzt die DCF-Library 
http://pic-projekte.de/wordpress/?p=572#more-572 von Nicolas Meyertöns.
Habe alle Schritte die in der Erklärung aufgelistet sind gemacht, nur 
kommen bei mir trotzdem nur irgendwelche Zeichen raus.

Wenn ich das richtig verstanden habe soll ich einen Timer machen der 
alle 1ms tickt und den Zustand des DCF-Pins abfragt. (F_CPU = 1000000)
1
void Timer_Initialize(void)
2
{
3
  TCCR1B = (1<<WGM12);          // enter CTC-mode
4
  TCCR1B |= (1<<CS10);          // set prescaler to 1
5
  //OCR1A = 31250;              // compare value = 31250 (counts to "create" a second)
6
  OCR1A = 1000;              // compare value = 1000 (counts to "create" a millisecond)
7
  TIMSK = (1<<OCIE1A);          // enable compare interrupt
8
}
9

10
ISR(TIMER1_COMPA_vect)
11
{
12
  checkDCF = true;
13
}

und in die while-Schleife der main Funktion kommt die Funktion 
dcf_check()

Letztendlich greife ich dann über die time-Struktur darauf zu, sprich:
time.Min oder time.Year

ich habe mir dazu einen Funktion geschaffen welche mit Variablen auf den 
LCD druckt.
1
void lcd_putvar(uint8_t variable)
2
{
3
  uint8_t var_lenght;
4
  if(variable == time.Year)  var_lenght=4;
5
  else            var_lenght=2;
6
  
7
  char c[var_lenght];
8
  itoa(variable,c,10);
9
  uint8_t i;
10
  
11
  for(i=0;i<var_lenght;i++)
12
  {
13
    lcd_putc(c[i]);
14
  }
15
  
16
}

Ausgabe sieht dann so aus:
lcd_putvar(time.Min);

Ich bitte um Hilfe.
#3624575
Lesenswert?

PON statisch auf Masse legen bringt nix! Du brauchst eine fallende 
Flanke. Controller arbeitet ebenfalls mit 3,3V oder kommt mit dem 
Eingangspegel klar, oder es hängt ein Levelshifter dazwischen?
Eventuell muß das empfangene Signal invertiert werden?
Ist das Empfangsmodul weit weg von allen Störquellen, wie 
Schaltnetzteilen etc.? Ist die 3,3V Ub sauber? Wenn die zu stark 
rauscht, empfängst du nichts.
OP #3625438
Lesenswert?

ok dann lege ich PON auf den µC und per Software liefere ich die 
fallende Flanke.

Bei mir bekommt er im Moment 3,1V durch einen Spannungsteiler mit 3k3 & 
2k2 von 5,18V. Die Eingangsspannung kommt von einem Netzteil - einfach 
abgeschnitten und Krokos draufgelötet.

Habs auf dem Schreibtisch und auf dem Fensterbrett im Erdgeschoss 
getestet - beides erfolglos.

Ob die Spannung rauscht weiß ich leider nicht.
Weißt du welche Zusatzbeschaltung nötig ist damit ein "schönes" Signal 
zum µC kommt?
OP #3625827
Lesenswert?

Ich habe den PON-Pin des DCF-Empfängers auf PC6 des µC geschlossen und 
folgendes im Programm hinzugefügt:

im Header:
#define DCF77_PON PC6

im Hauptprogramm:
PORTC |= (1<<DCF77_PON);
PORTC &= ~(1<<DCF77_PON);

damit gebe ich ihm doch eine fallende Flanke - oder?

Ich habe diese Schaltung in einem Forum gefunden von jemandem mit einem 
ähnlichen Problem wie meinem:
http://www.mikrocontroller.net/attachment/90257/Reichelt-DCF77.GIF

Kann ich die verwenden?
Und was sind Elkos und Kerkos? Kerkos sind höchstwahrscheinlich 
Keramik-Kondensatoren aber ich weiß nicht was ein Elko ist.
Welcher Transistor ist das?
Letztendlich würde mich noch interessieren was die zwei Kondensatoren 
voneinander unterscheidet?

Wenn sich jemand findet der mir diese Fragen beantworten kann wäre ich 
sehr dankbar :)
OP #3628402
Lesenswert?

Jetzt habe ich eine Low-Current LED mit DATA verbunden und die Kathode 
gegen Masse. Die blinkt im Sekundentakt. Also habe ich offensichtlich 
Empfang. Es muss also an der Library oder an meiner (DCF)DATA-->(µC)PC7 
Schaltung liegen.

Ich habe folgende Schaltung verwendet:
http://www.mikrocontroller.net/attachment/90257/Reichelt-DCF77.GIF

oder wäre eine von diesen besser geeignet?
http://www.mikrocontroller.net/mc-project/Pages/Projekte/Funkuhr/dcf77.GIF

http://www.google.at/imgres?imgurl=http%3A%2F%2Fwww.mikrocontroller.net%2Fattachment%2F113620%2FPollin_DCF.png&imgrefurl=http%3A%2F%2Fwww.mikrocontroller.net%2Ftopic%2F97295&h=560&w=843&tbnid=iYGN3uBbNrrTvM%3A&zoom=1&docid=LLcgKa9R-P1aMM&ei=8mlWU9usN4XJ4ATA7oGgAQ&tbm=isch&ved=0CHgQMygaMBo&iact=rc&uact=3&dur=1005&page=2&start=15&ndsp=21

letztendlich noch eine Frage: kennt jemand eine funktionierende 
DCF-Library?

Ich danke schonmal im Vorraus :)
Gast #3628423
Lesenswert?

>Jetzt habe ich eine Low-Current LED mit DATA verbunden und die Kathode
>gegen Masse. Die blinkt im Sekundentakt. Also habe ich offensichtlich
>Empfang.

Sehr schön. Die machst du besser gleich wieder ab weil
dein Modul nur 5uA liefern kann.
OP #3628543
Lesenswert?

Ich hatte sie ohnehin nur zum Testen des Empfangs.
Ich werde evtl. eine LED an einen anderen Portpin hängen und das Signal 
dorthin übertragen, falls ich den Empfang "sehen" möchte.

Kann jemand der mehr Erfahrung hat als ich mal durch die oben 
eingebundene Library sehen und diese auf Richtigkeit prüfen?
Ich finde den Fehler leider nicht, aber ich weiß dass er in der Lib 
steckt.
Angehängte Dateien:
OP #3636238
Lesenswert?

Hallo erstmal an alle :)

Ich habe jetzt Ulrich Radigs Lib auf meinem mega16. Mein Problem ist 
nun, dass mein LCD nichts mehr anzeigt sobald ich auf INT0 etwas anlege, 
in diesem Fall der DCF-Datenpin. Weiß jemand woran das liegen kann?

Falls sich jemand meinem Problem widmet kann ich gerne die hierfür 
erforderlichen Dateien anhängen.

need help :/

Antwort schreiben

Bitte melde dich an, um einen Beitrag zu schreiben.

oder

Mit Google-Account einloggen

Die Registrierung ist kostenlos und dauert nur eine Minute.

Jetzt registrieren