Moin.
Also zur Uhr selbst mach ich das immer so :
Ich erstelle einen Interrupt, z.B. mit Timer0, noch besser mit dem 16bit-Timer und einem Quarz an dessen eigenem Eingang, der 32,768kHZ hat. Letzten würde ich dann am Anfang des Interrupts mit 0x8000 laden. Wenn du es mit dem Systemtakt machst, musst du dir mal ausrechnen, wie du den Prescaler und Startwert einstellen musst. Sollte der Prescaler nicht reichen, kannst du einen weiteren in Software erstellen, indem du in der Routine folgendes machst:
Code:
if(Prescaler_10x == 10)
{
//code der alle 10x ausgeführt wird
Prescaler_10x = 0;
}
else
Prescaler_10x++;
Mit diesem Code in der Interrupt-Routine, die alle 1ms überläuft, hast du einen 10x Prescaler in Software eingebaut.
Wenn du also eine Routine hast, die einmal pro Sekunde ausgeführt wird, machst du folgendes:
Code:
Sekunden++;
if(Sekunden>=60)
{
Sekunden=0;
Minuten++;
}
Lesezeichen