Forum: Mikrocontroller und Digitale Elektronik Funk-uhr über AVR Programmieren mit DCF01


von Mathias K (Gast)



Lesenswert?

Hallo zusammen,

Im moment bin ich an einem Schulprojekt beschäftigt und zurzeit an der 
programierung der funk-uhr am knabbern.
Folgendes:
ich verwende das DCF01-Modul um die Uhrzeit von Frankfurt zu empfangen 
und
möchte diese auf einem LCD-Display wiedergeben.
Kann sich jemand den Code mal näher unter die Lupe nehmen und mir bitte 
bescheid geben woran es scheitert dass die Uhr nicht zählt...
wäre euch sehr dankbar;)

Mit freundlichen Grüßen
Mathias K

von NobbyH (Gast)


Lesenswert?

Hi,

bist Du sicher, dass die Hardware überhaupt sauber arbeitet?
Du verwendest Spannungsregler ohne Kondensatoren.
Gibt das Empfängermodul denn überhaupt ein Signal aus?
Diese Dinge solltest du erst einmal testen und danach die Software 
stückweise testen.

von Hubert G. (hubertg)


Lesenswert?

Wo ist die Timerinitialisierung versteckt?
Sollte ein DCF-Takt kommen, wo wertest du ihn aus?

von Mathias K (Gast)


Lesenswert?

Mit der Hardware hast du wohl recht bezüglich den Kondensatoren aber 
dieser Aufbau verwende ich bloß zuhause für die Heimarbeit
Da ich eigentlich in der Schule mit dem STK500 arbeite und dort das 
selbe resultat habe
Vom Empfangsmodul habe ich mittels einem Oszi schon ein binäres signal 
gemoßen.
Mir speziell hängt es bloß am Programm weil der Timer nicht sauber 
arbeitet und der controller mitten im CODE stehen bleibt...
weil eigentlich sollte die Uhr auch ohne Empfangsteil selbstständig 
zählen da die Uhrzeit nur durch das Signal "aktualisiert" wird
MfG
Mathias

von holger (Gast)


Lesenswert?

>Wo ist die Timerinitialisierung versteckt?

Wenns nur das wäre;)

usart.h
    #define SYSCLK 12000000UL

Uhr_Program.c
#define F_CPU 1000000UL    //CPU-Takt im MHz

lcd-routines.h
#ifndef F_CPU
#define F_CPU 3686400
#endif

Ja, was denn nun? Mit welchem Takt läuft der uC.

ISR(TIMER1_OVF_vect)      //Interruptroutine für Uhrzeit
{
....
    _delay_ms(1000);


Ein _delay_ms im Timerinterrupt. Pfui Deibel.
Mal abgesehen davon das CTC für eine Uhr besser ist als Overflow.

von Mathias K (Gast)


Lesenswert?

Hallo Hubert
werde mich morgen wieder melden wenn es dann noch ein Problem gibt da 
ich momentan keinen ISP-Programmer bei mir habe um es zu testen
Die Auswertung findest du im clock.h
und die initialisierung hat mir allerdings gefehlt...
Vielen Dank;)
Mfg
Mathias

von Mathias K (Gast)


Lesenswert?

Hallo Hr Holger

Habe mir die CTC-Funktion durchgelesen
Muss dazu sagen dass ich diese funktion gar nicht gekannt habe und jetzt 
doch von ihr überzeugt bin
Man stoßt ja immer wieder auf neue Dinge....
Danke;)
MfG
Mathias

von Hubert G. (hubertg)


Lesenswert?

Mathias K schrieb:
> Die Auswertung findest du im clock.h

Du solltest nicht vergessen die clock.c auch zu integrieren.

von Mathias K (Gast)


Lesenswert?

Muss ich auch bei diesem programm den int0 als eingang definieren?
Wenn ja, "wie"?

MfG
Mathias

von Mathias K (Gast)


Angehängte Dateien:

Lesenswert?

Hallo zusammen,

Kann mir bitte jmd weiterhelfen?
habe jz das ganze nochmal komplett zusammengestellt
Aber wie ich gesehen habe, funktioniert dies immer noch nicht richtig
Hardware
ATMEGA32
DCF-Empfangsmodul DCF1 -> aud PD2
LCD 1602
Ich benötige diese temperaturfunktion nicht da ich nur die Zeit 
benötige.
Darum habe ich diese funktion deaktiviert und den I2c-bus weggelassen
Das mit der Frequenz ist mir noch nicht ganz klar...
Wäre euch sehr dankbar

mfg
Mathias

von as (Gast)


Lesenswert?

Ich habe mir dur kurz die "dcfm8.c" Angeschaut.

Die ISR ist Kurz, ok, nur ein Funktionsaufruf.
Aber diese Funktion ist zu lange.

Da gehen bestimmt einige INTs verloren?

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.