Lowlevel
Lowlevel => Lowlevel-Coding => Thema gestartet von: sp am 08. January 2005, 12:25
-
Hallo
Ich habe zwei Fragen zum Thema Zeitmessung. Für einen Treiber benötige ich gerade eine Art Delay-Funktion, nur leider weiß ich nicht wie ich das realisieren soll. Und wo wir gerade schon einmal beim Thema sind, wie funktioniert eigentlich die kleine Uhr im Betriebssystem? Ist das die CMOS-Uhr?
sp
-
Ich mach das ganze über den Timerinterrupt, der Updated jedesmal eine Variable, schliesslich weiß ich ja wie viel zeit dazwischen lag.
Dann hab ich die Zeit und anhand dessen kann man ja einen delay machen.
Und CMOS kann man sicherlich verwenden um die aktuelle Zeit zu finden
-
Naja ich hab meinen Rechner bisher nie 42 Tage durchlaufen lassen^^
Das Problem besteht aber immer, wenns hilft kannste ja 64Bit nehmen^^
-
man koennte auch ganz einfach eine 'gettickcount'-funktion mit einer parameteruebergabe des anfangswertes bereitstellen (zb GetTickCount(64400)) mal angenommen der zaehlt dann ueber 32bit drueber und beginnt wieder bei null kann man hier trotzdem die differenz unter beruecksichtigung des zuruecksetztens berechnen.
-
Wie wärs wenn du in regelmäßigen (1x am Tag oder so) abständen die CMOS-Zeit ausliest und die Differenz zur Systemzeit zwischen speicherst. Wenn dann am 49. Tag der Überlauf kommt, liest du dann nochmal die CMOS-Zeit aus, addierst die Differenz und speicherst das als neue Systemzeit ab.