Hallo Zusammen,
ich brauche für ein neues Projekt eine Uhr auf meinem Mega32.
Timer 1 ist leider schon belegt, bzw. wird später für ne andere Funktion gebraucht, wozu ich einen 16 Bit Timer brauche.

Daher kommt eigentlich nur Timer 2 in Frage. Der Mega32 ist auf der RN-Control und hat nen 16000000Hz Quarz.

Nun habe ich mir überlegt, ich teile 16000000 erstmal durch 256 (Prescale). Dann komme ich auf 62500.
Ich lasse meinen 8 Bit Timer von 5 an zählen, so komme ich auf 250 Schritte, also 62500/250= 250.

Jetzt erstelle ich eine Variable die ich in der ISR von Timer 2 um 1 erhöhe.
Zusätzlich wird hier der Timer wieder auf 5 gestellt.

In meiner normalen Do Loop schleife lasse ich jetzt sobald die Variable auf 250 ist sie zurück auf 0 setzen und erhöhe meine Sekunden um 1.

Dann noch über ein paar If Than befehle bei 60s zurück auf 0 und die Minuten +1.

Das läuft alles soweit gut, nur bekomme ich extreme Abweichungen. Der Mega32 hängt pro Minute mehrere Sekunden hinter der Zeit. Woran kann das liegen?

Ich programmiere auf nem alten 95 Rechner ohne Internet, daher ist es schwer den Code hier rein zubekommen, werde ihn aber versuchen morgen auf cd zu brennen und dann hier reinzustellen


Ich hoffe ihr versteht mein Probelem und könnt mir helfen

Viele Grüße
Dominik