Hallo!
Im Rahmen eines größeren Bastelprojekts (Langzeitbetrieb einer Kamera mit PC über Jahre) habe ich ständig Probleme mit der (eingebauten) Wochenzeitschaltuhr.
Diese ist ja leider nicht mit DCF77 ausgerüstet (hab ich noch nie gesehen) und darum muß ich ständig auf der Lauer sein.
Jeden Monat einmal die Zeit korrigieren und jedes Halbjahr die Umstellung Sommer/Winterzeit. Und bei Stromausfall korrigieren.
Das wurde mir jetzt zuviel und deshalb muß jetzt eine "richtige" Uhr her.
Das Programm für die Uhr selbst ist schon fertig und läuft tadellos. Ich habe sie - als Anfänger - aus verschiedenen Codeschnipseln
und etwas eigenem dazu zusammengesetzt. Ein I2C-RTC-Modul steuert die BASCOM-Softclock und wird von einem ELV-DFC77-Modul
genau gehalten.
Ohne Schaltausgang nützt sie mir allerdings garnichts, denn die Uhr soll ja täglich einmal den PC aufwecken, nach 5 Minuten ein
Programm starten und den PC wieder schlafen legen.
Also hab ich versucht, das mal selbst zu entwickeln. Der jetzige Stand ist:
Die Umschaltung Stellen - Alarm EIN funktioniert.
Beim Stellen kann ich auch Stunde und Minute erhöhen.
Beim Zurückschalten auf Alarm Ein geht aber die Anzeige wieder auf Null.
Das sagt mir: die Zahlen im LCD bleiben nicht erhalten. Warum? Keine Ahnung...
Hier noch der Code:
Wie schon ober geschrieben, ist das nur ein Teil einer ganzen Uhrsteuerung.Code:Locate 4 , 1 : Lcd "Alarm" '--------------- Taster - Schleife -------------------------------- Do If Ta_stellen = 0 Then Waitms 10 While Ta_stellen = 0 NOP ' Debouncing Nop Wend Goto Set_alarm End If Locate 4 , 13 : Lcd " Ein " Loop '-------------- Stellen - Schleife ------------------------------------------ Set_alarm: Do If Ta_min = 0 Then Al_min = Al_min + 1 'Minute stellen If Al_min = 60 Then Al_min = 0 Waitms 200 End If If Ta_std = 0 Then Al_std = Al_std + 1 'Stunde stellen If Al_std = 24 Then Al_std = 0 Waitms 200 End If '----------------------------------------------------------------------------------------- If Ta_stellen = 0 Then Exit Do '----------------------------------------------------------------------------------------- Locate 4 , 13 : Lcd "Stellen" Locate 4 , 7 : Lcd Al_std ; ":" ; Al_min Loop Return End
Es sollte möglichst keinen Timer oder Interrupt brauchen.
Das muß doch gehen!
Den Rest, also den Uhrzeit-Vergleich und den Ausgang zum Pc kann ich wieder selbst.
Vielleicht ist es nur eine Kleinigkeit, die ich mangels Erfahrung übersehe.
Joachim







Zitieren

Lesezeichen