004
29.06.2004, 13:31 Uhr
ao
(Operator)
|
Zitat: |
Heraklea postete servus leute hab mal ne frage mit der Funktion Slepp() habe ich doch die möglichkeit das system schlafen gehen zu lassen aber man bekommt nur maximal ne frequenz von 50 hs bei einer pulsbreite von 10 ms. ich hingegen brauche aber 80 hz was ner pulsbreite von 6,25 ms entsprich. das argument von Sleep kann das zwar aufnehmen aber bei windows ist die kleinste zur vefügung zu stellende zeiteinheit minimal 10ms
habt ihr ne ahnung wie das gehen könnte?
|
Das ist nicht ganz richtig. Nicht das System geht schlafen, sondern nur der betreffende Thread des betreffenden Prozesses.
Und das mit den 10 ms hast du auch ein bisschen missverstanden.
10 ms ist bei Windows NT (und 2000 und XP und 2003-Server) die Zeitscheibe, d.h. nach jeweils 10 ms schaut Windows von sich aus nach, ob ein Threadwechsel stattfinden muss, und es kann passieren, dass der Prozessor dem laufenden Thread entzogen und einem anderen zugeordnet wird.
Bei Windows 95, 98 und ME ist die Zeitscheibe nicht 10, sondern etwa 55 ms.
Darüberhinaus kann jeder Thread von sich aus seine Zeitscheibe vorzeitig beenden (z.B. indem er Sleep() macht). Der Rest der Zeitscheibe verfällt dann, und Windows lässt einen anderen Thread weiterlaufen.
Das heißt, wenn dein Pulsgenerator immer Sleep (6) macht, und die Belastung des Systems durch andere Threads ist gering, dann kriegst du tatsächlich etwa 80 Hz Pulsfrequenz raus.
Du kannst dich nur nicht drauf verlassen, dass die Frequenz konstant ist; je nachdem, was du noch mit dem PC machst, kann es einen erheblichen Jitter geben. |