Hallo
Also warum die Uhr mit 32768Khz (das sind ja mehr als 32MHz!) so genau sein soll ist mir unklar. Auch mit 32768Hz wird es nicht wirklich besser: 8000000/32768 sind 244,140625. Dein Timer läuft aber offensichtlich im Overflow-Mode, also mit 8000000/256=31250Hz.
Könnte einer mal den Code überprüfen, bin noch ziemlich grün hinter den Ohren was C angeht :/.
Ist das die Umschreibung für "Macht euch mal die Mühe und checkt mein Timersetup. Kommentare habe ich nicht eingefügt, weil ich nicht weiß, wie das funktioniert?"
Code:
ISR(TIMER2_OVF_vect) {
sek++;
ks0108Init();
...
So etwas sollte man nicht tun! Wenn man Funktionen in einer ISR aufruft provoziert man geradezu einen Überlauf der Interrupts. Und dann ist das Timing auf jeden Fall gestorben.
volatile int sek/min/std: Hier würde vielleicht auch ein Char ausreichen ;)
PORTC = 0xff;
PORTC |= (1<<PC1);
Alle Pins des Port C werden gesetzt, dann wird nur der Pin PC1 gesetzt? Das bedeutet letztlich: Alle PullUps an Port C sind eingeschaltet?
Aber deine Signatur macht ja vieles wieder gut. Bei mir ist sie unter den Top10 ;)
Gruß
mic
Lesezeichen