mikrocontroller.net

Forum: Mikrocontroller und Digitale Elektronik DCF Decodierung


Autor: Dcf 77-5 (dcf77-5)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: gast (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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...

Autor: gast (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
nebenbei: auch in der Codesammlung findet sich so einiges dazu...

Autor: Surr (Gast)
Datum:
Angehängte Dateien:

Bewertung
0 lesenswert
nicht 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 :
if(dcf_buffer[21]) t_dcf_new.minute+=1;
if(dcf_buffer[22]) t_dcf_new.minute+=2;
if(dcf_buffer[23]) t_dcf_new.minute+=4;
if(dcf_buffer[24]) t_dcf_new.minute+=8;
if(dcf_buffer[25]) t_dcf_new.minute+=10;
if(dcf_buffer[26]) t_dcf_new.minute+=20;
if(dcf_buffer[27]) t_dcf_new.minute+=40;
// dcf_stunden
if(dcf_buffer[29]) t_dcf_new.hour+=1;
if(dcf_buffer[30]) t_dcf_new.hour+=2;
if(dcf_buffer[31]) t_dcf_new.hour+=4;
if(dcf_buffer[32]) t_dcf_new.hour+=8;
if(dcf_buffer[33]) t_dcf_new.hour+=10;
if(dcf_buffer[34]) t_dcf_new.hour+=20;
// dcf_kalendertag
if(dcf_buffer[36]) d_dcf_new.day+=1;
if(dcf_buffer[37]) d_dcf_new.day+=2;
if(dcf_buffer[38]) d_dcf_new.day+=4;
if(dcf_buffer[39]) d_dcf_new.day+=8;
if(dcf_buffer[40]) d_dcf_new.day+=10;
if(dcf_buffer[41]) d_dcf_new.day+=20;
// dcf_wochentag
if(dcf_buffer[42]) d_dcf_new.weekday+=1 ;
if(dcf_buffer[43]) d_dcf_new.weekday+=2 ;
if(dcf_buffer[44]) d_dcf_new.weekday+=4 ;
// dcf_monat
if(dcf_buffer[45]) d_dcf_new.month+=1 ;
if(dcf_buffer[46]) d_dcf_new.month+=2 ;
if(dcf_buffer[47]) d_dcf_new.month+=4 ;
if(dcf_buffer[48]) d_dcf_new.month+=8 ;
if(dcf_buffer[49]) d_dcf_new.month+=10 ;
// dcf_jahr
if(dcf_buffer[50]) d_dcf_new.year+=1 ;
if(dcf_buffer[51]) d_dcf_new.year+=2 ;
if(dcf_buffer[52]) d_dcf_new.year+=4 ;
if(dcf_buffer[53]) d_dcf_new.year+=8 ;
if(dcf_buffer[54]) d_dcf_new.year+=10 ;
if(dcf_buffer[55]) d_dcf_new.year+=20 ;
if(dcf_buffer[56]) d_dcf_new.year+=40 ;
if(dcf_buffer[57]) d_dcf_new.year+=80 ;


Viel Spass..

Autor: Dcf 77-5 (dcf77-5)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Dcf 77-5 (dcf77-5)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Ede (Gast)
Datum:

Bewertung
0 lesenswert
nicht lesenswert
das ist die spritze beim arzt

Ede

Autor: AVRFan (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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! :-)

Autor: Surr (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Autor: Dcf 77-5 (dcf77-5)
Datum:

Bewertung
0 lesenswert
nicht 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

Autor: Surr (Gast)
Datum:

Bewertung
0 lesenswert
nicht 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 ?

Antwort schreiben

Die Angabe einer E-Mail-Adresse ist freiwillig. Wenn Sie automatisch per E-Mail über Antworten auf Ihren Beitrag informiert werden möchten, melden Sie sich bitte an.

Wichtige Regeln - erst lesen, dann posten!

  • Groß- und Kleinschreibung verwenden
  • Längeren Sourcecode nicht im Text einfügen, sondern als Dateianhang

Formatierung (mehr Informationen...)

  • [c]C-Code[/c]
  • [avrasm]AVR-Assembler-Code[/avrasm]
  • [code]Code in anderen Sprachen, ASCII-Zeichnungen[/code]
  • [math]Formel in LaTeX-Syntax[/math]
  • [[Titel]] - Link zu Artikel
  • Verweis auf anderen Beitrag einfügen: Rechtsklick auf Beitragstitel,
    "Adresse kopieren", und in den Text einfügen




Bild automatisch verkleinern, falls nötig
Bitte das JPG-Format nur für Fotos und Scans verwenden!
Zeichnungen und Screenshots im PNG- oder
GIF-Format hochladen. Siehe Bildformate.
Hinweis: der ursprüngliche Beitrag ist mehr als 6 Monate alt.
Bitte hier nur auf die ursprüngliche Frage antworten,
für neue Fragen einen neuen Beitrag erstellen.

Mit dem Abschicken bestätigst du, die Nutzungsbedingungen anzuerkennen.