Danke dir :)
Gruß Tjark
Druckbare Version
Danke dir :)
Gruß Tjark
Hallo,
bitte keine Hilfeanfragen per PN..
Mein Codebeispiel setzt manuell keine Timer. Das macht die "Config dcf" automatisch. Dafür einfach mal in der Bascomhilfe schauen, was die Befehle bedeuten. Bei Config Clock und Config DCF werden die nötigen Variablen automatisch eingebracht. Diese lassen sich dann einzeln (_hour, _min, _sek) oder komplett (time$) lesen und setzen.
Config Clock erwartet entweder eine eigene Uhrroutine oder nutzt Timer2 asynchron, was einen zusätzlichen Quarz (32768 kHz) benötigt. Ich missbrauche für sowas gern Config DCF, da läuft auch eine automatische Uhr, welche sich ohne einen DCF - Empfänger wie eine "normale" Uhr verhält. Der Vorteil ist aber, dass diese mit der Quarzfrequenz synchron läuft. Für eine genaue Uhr sollte dann aber ein externen Quarz genutzt werden. Nachteile gibt es aber auch. So wird die Interrupt-Routine (DCF) mehrmals pro Sekunde aufgerufen.
Willst Du eine komplett eigene Uhr programmieren, bietet sich "config clock = user" an. Da werden dann schonmal die Variablen dimensioniert. Den "Rest" musst du dann zu Fuss erledigen.
Deinen Fragen nach bist Du noch recht neu in der Programmierung. Da du vorhast andere Geräte (Netzspannung?) zu schalten, frage ich jetzt einfach mal nach deinen Kenntnissen in der Elektrotechnik.
Ok Danke. Mit der Elektronik ist das überhaut kein Problem das hab ich alles schon soweit fertig ich muss nur noch das Programm zum laufen bringen :)).. Ich hab mich bist jetzt immer nur soweit damit beschäftigt wie es nötig war um mein Roboter fertig zu stellen den ich über ein Joystick vom Pc aus über RS232 mit einem Xbee Steuere. Mit den Timern usw. hatte ich noch nicht viel zu tun und es ist echt schwer ohne ein bisschen Hilfe so ein Programm zu schreiben wenn man sich damit noch überhaut nicht auskennt :P
Gruß Tjark
Sehe ich das richtig das in deinem Programm die Zeit auf den Ports D.1 - D.3 Ausgegeben wird oder wofür sind die da ?!
Gruß Tjark
Hallo,
nicht ganz. Diese PINs werden geschaltet, wenn die Einschalt-oder Ausschaltzeit mit der aktuellen Zeit des Mikrocontrollers übereinstimmt.
Ok also kann ich denn hier anstatt dem _ vor dem hour die Stunde reinschreiben
Gruß TjarkCode:Schaltuhr:
For B = 1 To 3
If Stundeein(b) = 3 hour Then ' <--- so in etwa ?
If Minuteein(b) = _min Then
Set Portd.b
End If
End If
If Stundeaus(b) = _hour Then
If Minuteaus(b) = _min Then
Reset Portd.b
End If
End If
Next B
Return
Nein. _hour ist eine "Systemvariable", wo die Stunde drin ist. Für mein Beispiel kommen die Schaltzeiten in die Variablen Stunde... und Minute...
Also um Portd.1 um 10:30 Uhr einzuschalten kommt in die Variablen Stundeein(1)=10 ; Minuteein(1)=30
Zum Ausschalten um 11:45 Uhr dann Stundeaus(1)=11; Minuteaus(1)=45.
Für Portd.2 und Portd.3 jeweils die Zahl in den Klammern dementsprechend.
Ok danke :)) Und wie stelle ich die Uhr bzw. läuft sie immer los wenn ich das Board einschalte? Denn als ich Dcf77 in der Bascom Hilfe gesucht habe, habe ich was von zeitzonen usw. gelesen. Außerdem steht am Anfnag "Action
Instruct the compiler to use DCF-77 radio signal to get atom clock precision time" Bekommt der Atmega die Uhrzeit per funk ? .
Gruß Tjark
So hab jetzt ein bisschen rumprobiert wenn ich in dem Programmpunkt Uhranzeigen Print Time$ ; " schreibe bekomme ich etwas raus aber es ist nur 00:00:00 und aktualisiert sich auch nicht sekündlich wie es sollte wenn ich das richtig verstanden habe da Gosub Uhranzeigen ja unter Sectic steht sondern es kommt rasend schnell hintereinander.
Gruß Tjark
Hab es mit der Zeit hinbekommen und versuch die LED so zu steuern:
Sie geht auch um 23:14:00 an aber nicht mehr aus... Was kann das sein ?Code:$regfile = "m32def.dat"
$crystal = 16000000
Config Dcf77 = Pind.7 , Timer = 1 , Gosub = Sectic 'DCF-Uhr Routine, lässt sich auch mit einem xMHZ Quarz ohne DCF-Empfänger nutzen
Config Porta.1 = Output
Enable Interrupts
Ddrd = &B00001110 'Ausgänge für Zeituhr auf PortD.1-Portd.3
Date$ = "09/04/00"
Time$ = "23:13:55"
Do 'übersichtliche Hauptschleife...
Gosub Temperaturregeln
Gosub Tastatur
Gosub Sonstiges
Loop
End
Sectic: 'wird sekündlich aufgerufen
Gosub Uhranzeigen
Gosub Temperaturanzeigen
If _sec = 0then
Gosub Schaltuhr
End If
Return
Schaltuhr:
If Time$ = "23:14:00" Then
Set Porta.1
End If
If Time$ = "23:14:05" Then
Reset Porta.1
End If
Return
Temperaturregeln:
'hier dein Code für die Temperaturregelung rein
Return
Tastatur:
'hier dein Code für die Tastatur / Drehencoder rein
Return
Sonstiges:
'hier dein Code für Anderes rein
Return
Uhranzeigen:
'hier dein Code für die Uhrzeitanzeige rein
Print Time$ ; ""
Return
Temperaturanzeigen:
'hier dein Code für die Temperaturanzeige rein
Return
Gruß Tjark