Hallo ihr! ich hätte da mal ne frage ich bin gerade an nem abschluss projekt dran (auswerten eines dcf signals auf einem 8051 controller und ausgabe auf nem lcd display). habe nun das problem das er mir die display ausgabe nicht macht! ich erkenne die minutenlücke und dann schreibt er mir auch auf dem display die einzelnen ausgaben hin. die sekunden zählt er auch richtig aber es passiert nichts mit den minuten, stunden etc. die hab ich angelegt : char lcd_zeit[21]= {"Zeit: 00:00:00 "}; char lcd_date[21]= {"Datum: Mo 17.01.2000"}; aber ausgabe kommt dann char lcd_zeit[21]= {"Zeit: 3?:7?:00 "}; char lcd_date[21]= {"Datum: So 3?.1?.20??"}; ich bin jetzt schon 3tage dran und komm einfach nicht weiter! da ich es am mittwoch abgeben muss wende ich mich an euch. da ich erst seit nem knappen halben jahr mit µC zu tun habe (das projekt mir von meinem proff vorgeschrieben wurde) hoffe ich dass ihr mir helfen könnt! ich hänge mal den code ran!! zum aufbau noch folgendes: 12mhz takt dcf reichelt controller 8051 mit timer ausgewertet danke euch für eure hilfe. gruß frank
Hast du berücksichtigt das beim Reichelt-Modul die Ausgabe invertiert ist.
moin leute hab gestern abend noch den code von nem anderen hier mir geladen und angeschaut!! sieht recht gut aus!! er findet mir das signal auch aber warum zum teufel macht berechtnet er mir keine uhrzeit1!! die funktion uc_TimeOut(); wofür ist den die da? wär super wenn mir jemand helfen könnte!! langsam wirds echt eng!! grüße
Kleiner Tipp: Auch wenn 'rar' ein noch so tolles Packformat ist - es gibt Leute hier, die nur Windows und Winzip benutzen, und wenig Lust haben, sich nur deswegen Linux aufzuziehen oder ne extra Software zu installieren. Bei 'zip' kannst Du davon ausgehen, dass niemand hier ein Problem damit hat.
Winzip kann doch rar oder verwechselst Du das mit tar? Mir ist der Code zu wüst. Schau mal bei http://www.elektor.de/jahrgang/2006/mai/mini-mega-board.64106.lynkx?tab=3 vorbei. Bei den Beispielcodes ist was zu DCF77, was mit dem Reicheltmodul bei mir geklappt hat. Das sieht irgendwie eleganter aus.
>Winzip kann doch rar Hm, mein Winzip 9.0 kennt es nicht - keine Treffer zu "RAR" im Index der Hilfe. Aber zugegeben, ist auch nicht mehr die neueste Version. >Mir ist der Code zu wüst. Wüster Code? Nix wie weg hier... ;-)
@Frank: > TR1=1; //Timer 1 starten > TIM_TICK=0; //Timerstand auf Null setzen > > while(PULS_EING==1); //Warten auf nächsten Puls > TR1=0; //Timer stoppen Ohje... Dein armer µC muss wirklich auf steigende oder fallende Flanken warten? Und wenn der Puls erst in vier Stunden kommt, weil der Empfang gestört ist, und das Modul solange konstant "L" ausgibt, dann willst Du vier Stunden irgendwo mitten im Code in einer While-Schleife verharren, und währenddessen den Timer 95706 mal überlaufen lassen? Vielleicht solltest Du Dich mal mit der Alternative auseinandersetzen. Die besteht darin, das DFC77-Signal vom Modul schlicht in einem festen Zeitraster, z. B. 10 ms, zu sampeln, und mit dem dadurch generierten Bitstrom eine sog. Zustandsmaschine zu füttern. Diese Zustandsmaschine muss dann nichts weiter tun, als alle 10 ms ihren Zustand passend zu aktualisieren. Sie prüft, ob ein Signalflanke vorliegt, ob es eine steigende oder fallende ist, stellt fest, wie lange die vorherige Flanke zeitlich zurückliegt, und verarbeitet diese Daten in geeigneter Weise zu dem codierten Zeitwert. Nachdem sie mit ihrem Geschäft fertig ist, wird zum Hauptprogramm zurückgekehrt, wo der nächste Prozess mit seiner Zustandsmaschine an die Reihe genommen wird. Tasten einlesen, StatusLED ansteuern, LC-Display bedienen... für jede Aufgabe gibt es einen Prozess mit je einer eigenen Zustandsmaschine - Du verstehst? In der Main werden sie einfach alle immer reihum alle 10 ms aufgerufen. Irgendwelche Warteschleifen innerhalb der Prozesse sind dann natürlich tabu. Wenn gewartet werden soll, setzt man eine Variable z. B. auf 30 und zählt sie mit jedem 10 ms Tick herunter. Ist sie bei Null angekommen, sind genau 300 ms Wartezeit um und es kann weitergehen.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.