Hallo,
wichtig zu wissen wäre noch, wie du den Mega8 antreibst, über einen externen Quarz oder die interne Zeitbasis.
Der Quarz ist normalerweise so genau, dass du die Abweichung über einige Tage kaum merkst. Beim internen Oszillator sieht das schon anders aus. Der kann an einem Tag schon eine halbe Stunde abweichen.
Das DCF Modul würde die Abweichung auch über einen längeren Zeitraum verhindern.
Ansonsten lässt du einen Timer laufen und zählst du die Überläufe. Nach der geeigneten Anzahl gibst du den Ausgang für 10 Sekunden frei.
Z.B. so:
Dies sollte 10 Sekunden lang an sein und dann die restliche Zeit des Tages aus.Code:$regfile = "m8def.dat" $crystal = 1000000 Dim Ovfl_count As Long Dim Giessen As Byte Config Timer0 = Timer , Prescale = 1024 On Timer0 Timer0_isr Timer0_startwert Alias 8 '1.000.000/1024/(256-8=244) '~ 0,25 x pro Sekunde, entspricht waitms 250 Timer0 = Timer0_startwert Enable Timer0 Enable Interrupts Do If Giessen = 1 Then Portc.1 = 1 'bzw =0, je nachdem, wie der Ausgang funktionieren soll, deinen Port angeben End If Loop End Timer0_isr: Timer0 = Timer0_startwert Incr ovfl_count If Ovfl_count = 40 Then '4 mal pro Sekunde Mal 10 Sekunden = 40 Giessen = 0 End If If Ovfl_count = 345600 Then '4 mal pro Sekunde mal 86400 Sekunden in 24 Stunden = 346600 Ovfl_count=0 Giessen = 1 End If Return
Gruß
Rolf







Zitieren

Lesezeichen