Forum: Mikrocontroller und Digitale Elektronik DCF Decodierung


von Dcf 7. (dcf77-5)


Lesenswert?

Hallo zusammen,

ich weis es kommt nie gut an wenn man nach fertigen Programmen fragt 
aber mit brennt die Zeit unter den Nägeln und trotz zahlreichen 
Versuchen und stundenlangem lesen im Internet hatte ich bisher keinen 
Erfolg.

Muss dazu sagen das ich mich in Sachen µC nicht gut auskenne, deshalb 
auch der Hilferuf!!!

Ich brauche dringend ein Programm für einen ATMega16 der mir aus den 
einsen und nullen, die ich über das DCF-Modul bekomme, das Datum und die 
Uhrzeit berechnet. Ich habe das AVR Studio 4.12 ServicePack 4. Der 
Mega16 ist im STK500 eingebaut.

Ich muss per Buttonclick in dem von mir geschriebenen C# Prog. die 
Systemzeit nach DCF stellen. Verbindung zum STK und Systemzeit stellen 
ist soweit alles klar nur das Decodieren will nicht.

Also falls irgendjemand von euch ein Auge zudrücken könnte und mir die 
fertige Decodierung für Zeit und Datum zu Verfügung stellen würde, wäre 
ich sehr dankbar!

Noch zu erwähnen. Das ganze soll nicht kommerziell genutzt werden sonder 
für ein Schulprojekt!

Ich hoffe es kann sich jemand überwinden und sag schon mal vielen Dank!

Gruß
dcf77-5

von gast (Gast)


Angehängte Dateien:

Lesenswert?

> sondern für ein Schulprojekt!
hmmm... Hausaufgaben
Google genutzt?
> die fertige Decodierung für Zeit und
> Datum zu Verfügung stellen würde
Im Anhang ein sehr berühmtes Bild...

von gast (Gast)


Lesenswert?

nebenbei: auch in der Codesammlung findet sich so einiges dazu...

von Surr (Gast)


Angehängte Dateien:

Lesenswert?

Ich hab noch nix mit Atmel erledigt, aber mit Pics..

Timers haben beide, und einen Interrupt on Edge wahrscheinlich auch..

So ganz auf die schnelle :

Flankengetriggert die Länge des Signals messen.

Kurzer Blibb 100ms -> Ist eine 0

Langer Blibb 200ms -> Ist eine 1

Kann je nach Anschluss (Normal High, normal Low)
auch andersherum sein..


Am Ende gibts ein seeehr langes Nichts von 1800-1900ms-Länge :
Minute startet, Bit 0 wird beim nächsten Blibb aquriert..

Dann füllst du einen Buffer ab (Array mit 60bits Länge),
und dann wird dekodiert.. Angehängt ein Excel-Sheet,
mit welchem auf Richtigkeit geprüft werden kann. Einfach
Die empfangenen Bits in die violette Zeile eintragen..


So ganz billig könnte die Dekodierung dann so aussehen :
1
if(dcf_buffer[21]) t_dcf_new.minute+=1;
2
if(dcf_buffer[22]) t_dcf_new.minute+=2;
3
if(dcf_buffer[23]) t_dcf_new.minute+=4;
4
if(dcf_buffer[24]) t_dcf_new.minute+=8;
5
if(dcf_buffer[25]) t_dcf_new.minute+=10;
6
if(dcf_buffer[26]) t_dcf_new.minute+=20;
7
if(dcf_buffer[27]) t_dcf_new.minute+=40;
8
// dcf_stunden
9
if(dcf_buffer[29]) t_dcf_new.hour+=1;
10
if(dcf_buffer[30]) t_dcf_new.hour+=2;
11
if(dcf_buffer[31]) t_dcf_new.hour+=4;
12
if(dcf_buffer[32]) t_dcf_new.hour+=8;
13
if(dcf_buffer[33]) t_dcf_new.hour+=10;
14
if(dcf_buffer[34]) t_dcf_new.hour+=20;
15
// dcf_kalendertag
16
if(dcf_buffer[36]) d_dcf_new.day+=1;
17
if(dcf_buffer[37]) d_dcf_new.day+=2;
18
if(dcf_buffer[38]) d_dcf_new.day+=4;
19
if(dcf_buffer[39]) d_dcf_new.day+=8;
20
if(dcf_buffer[40]) d_dcf_new.day+=10;
21
if(dcf_buffer[41]) d_dcf_new.day+=20;
22
// dcf_wochentag
23
if(dcf_buffer[42]) d_dcf_new.weekday+=1 ;
24
if(dcf_buffer[43]) d_dcf_new.weekday+=2 ;
25
if(dcf_buffer[44]) d_dcf_new.weekday+=4 ;
26
// dcf_monat
27
if(dcf_buffer[45]) d_dcf_new.month+=1 ;
28
if(dcf_buffer[46]) d_dcf_new.month+=2 ;
29
if(dcf_buffer[47]) d_dcf_new.month+=4 ;
30
if(dcf_buffer[48]) d_dcf_new.month+=8 ;
31
if(dcf_buffer[49]) d_dcf_new.month+=10 ;
32
// dcf_jahr
33
if(dcf_buffer[50]) d_dcf_new.year+=1 ;
34
if(dcf_buffer[51]) d_dcf_new.year+=2 ;
35
if(dcf_buffer[52]) d_dcf_new.year+=4 ;
36
if(dcf_buffer[53]) d_dcf_new.year+=8 ;
37
if(dcf_buffer[54]) d_dcf_new.year+=10 ;
38
if(dcf_buffer[55]) d_dcf_new.year+=20 ;
39
if(dcf_buffer[56]) d_dcf_new.year+=40 ;
40
if(dcf_buffer[57]) d_dcf_new.year+=80 ;


Viel Spass..

von Dcf 7. (dcf77-5)


Lesenswert?

Danke das Bild kenn ich bereits. Ist nicht so das ich mich nicht schon 
länger mit der Sache beschäftige. Aber ich komm hier nicht weiter. Wie 
gesagt ich hab ein Prog. in C# geschrieben das ist auch eher meine Welt. 
Bei den µC muss ich mich schon von Ast zu Ast hangeln.
Hab mir aber schon gedacht das ich mit der plumpen Bitte nach einem 
Laufenden Prog. nicht weit komm.

Gruß
dcf77-5

von Dcf 7. (dcf77-5)


Lesenswert?

@ surr
Danke für deinen Beitrag. Leider hab ich außer AVR noch nie was mit µC 
zu tun gehabt und weis nicht mal was "Pics" bedeutet. Ich sag ja bin 
echt ein blutiger Anfänger der Hilfe sucht.

Trotzdem Danke

von Ede (Gast)


Lesenswert?

das ist die spritze beim arzt

Ede

von AVRFan (Gast)


Lesenswert?

Blos nicht mit Code drauflostippen anfangen - das bringt statt Erfolg 
nur Verdruss.  Zuerst den Programmflussplan für den Decoder erstellen. 
Dabei gründlich überlegen, sorgfältig vorgehen und sich vor Augen 
halten, dass das der wesentliche Teil der Arbeit ist (Code tippen kann 
jeder). Das Ding muss einwandfrei sein - sonst tuts nicht. Wenn Du 
sicher bist, dass es funktionieren kann, diesen Plan in ein C- oder 
Pascal-Programm umsetzen.  Zusätzlich natürlich einen Encoder für das 
Signal schreiben (ist viel einfacher als der Decoder und in ein paar 
Zeilen erledigt).  Dann die Chose am PC simulieren und testen, testen 
und nochmals teste.  Wenn alles läuft, weißt Du, dass Du es geschafft 
hast. Die Routinen nach dem Assembler für Deinen µC zu portieren, ist 
dann schließlich nur noch ein Klacks.

Viel Glück! :-)

von Surr (Gast)


Lesenswert?

Ist ein anderer Controller, welcher auch sehr gerne von Atmel-Usern
verwendet wird..

Aber Spass beiseite, C ist so unähnlich zu C++ auch wieder
nicht. Was hast du denn schon beisammen ?

von Dcf 7. (dcf77-5)


Lesenswert?

Was ich habe? Viel Arbeit hinter mit und ein großen Problem vor mir. Die 
Sache mit dem DCF decodieren sollte erst durch ein fertiges Modul 
erledigt werden aber da nun schon das STK zum Einsatz kommt soll auch 
hier die Decodierung statt finden. Ich bin ganz ehrlich, µC mag ich 
nicht besonder und ich hab mir gedacht ich muss das Rad ja nicht neu 
erfinden. Also hab ich mich auf die Suchen nach Programmen gemacht. 
Leider sind es meist sehr umfangreiche mit vielen zusätzlichen 
Funktionen. Tue mir das schwer durch zu steigen. Jetzt hab  ich eben 
versucht hier weiter zu kommen, aber ich denke das ich wohl doch ein 
paar Nachtschichten einlegen werd und mich in die Sache reinarbeiten 
muss.

Gruß
dcf77-5

von Surr (Gast)


Lesenswert?

Easy, das wird schon..

Kanst du :

Input (auf Flanke) auf uC empfangen ?
Sprich, ein Variable setzen per Input ?

Timer laufen lassen ?

Wie kommt das ganze auf den PC ? RS232 ?

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.