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:
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
Dies sollte 10 Sekunden lang an sein und dann die restliche Zeit des Tages aus.
Gruß
Rolf
Lesezeichen