habe die uhr jetzt ne weile laufen lassen und rausbekommen das die ca nach 7 stunden ( da ist die nacht vorbei *grins*) 20sekunden falsch geht.
das ist ne ganz schön große Abweichung. woran kann das liegen?
ich würde ja mal vermuten, das der interrupt zwar korekt funktioniert aber ebend ne mini sekunde ungenau geht und dadurch bei hoch rechnen und zählen sich fehler einschleichen. weil die ganzen werte habe ich mit dem tool rnavr berechnet. danke also mal das es stimmt 
mir würde am ende adann nur einfallen das ich die stunden anders hochrechne und dort ebend so 2-3 sekunden unter den tisch fallen lasse damit die zeit wieder stimmt, nur wäre das für mich keine richtige lösung.
achja, das programm soll einfach eine zeit zählen, es läuft bis 9999h und so. deswegen sind halt bei 7h 20 sekunden fehler schon ne menge.
hier mein Programm:
Code:
'********************************
'* Atmega8 mit 8MHz *
'* Uhrenbeispiel *
'********************************
$regfile "m8def.dat"
$crystal = 8000000
Config Lcdpin = Pin , Db4 = Portd.3 , Db5 = Portd.4 , Db6 = Portd.5 , Db7 = Portd.6 , E = Portd.2 , Rs = Portd.0
Config Lcdbus = 4
Config Lcd = 16 * 2
Dim S As Byte , M As Byte , H As Byte , G As Byte 'Zeit definieren
S = 0
M = 0
H = 0
G = 0
Config Timer1 = Timer , Prescale = 256
Const Timervorgabe = 34286
On Timer1 Ontimer1
Enable Timer1
Enable Interrupts
Cls
Do
Waitms 200
Locate 1 , 1
Lcd "UHR-Zeit"
Locate 2 , 2
Lcd ; G ;
Locate 2 , 4
Lcd ; H ;
Locate 2 , 7
Lcd ; M ;
Locate 2 , 10
Lcd ; S ;
Loop
'*******************************************************************************
Ontimer1:
Timer1 = Timervorgabe
S = S + 1
If S = 60 Then 'Sekunde
S = 0
M = M + 1
If M = 60 Then 'Minute
M = 0
H = H + 1
If H = 100 Then 'Zehner Stunde
G = G + 1
If G = 99 Then 'hunderter stunden
End If
End If
End If
End If
Return
'*******************************************************************************
thx für eure hilfe
Lesezeichen