1ms herausfinden



  • Hi,
    weiß jemand eine Möglichkeit mit ASM eine Funktion zu schreiben die die Prozessor-Ticks in 1ms zählt und dann in einer Variable speichert. (für 80386'er oder höher). Ich möchte dann die Ticks in einer Variable speichern und dann eine Funktion programmieren die eine bel. Anzahl von ms das Programm anhält.



  • AFAIK gibt der Timerbaustein nur alle 10ms ein Signal, deshalb, kannst du nur mit 10ms Bereichen arbeiten



  • warum is der timer denn so lahm eigtl.?



  • @kingruedi: Könnte er dann nicht einfach 10ms messen, und dann durch 10 teilen?



  • @jantoware
    was soll das bringen. Gehen wir mal von dem Fall aus, ein User will, dass das Programm genau bei 21ms reagiert

    10 ms  --> erstes Signal
    20 ms  --> zweites Signal
    30 ms  --> drittes Signal
    

    Wie soll man da mit 30/10 bei 21 ms reagieren?

    @MrN
    weil PC Hardware scheisse ist und PCs nicht für Echtzeit Arbeit ausgelegt sind



  • Bei kindruedi ist wohl alles scheisse! 😞



  • Nana 😃 So mistig ist der Standard-PC nun auch wieder nicht... (Auch, wenn MS und co. mit Nachdruck daran arbeiten moegen, dieses System vollends zu versauen)

    AFAIK laeuft der PIT mit einer Frequenz von 1193181Hz. Damit sollte sich eigentlich auch 1ms abpassen lassen 😉

    Hierzu waere nochmals die PCGPE zu empfehlen...



  • mistig? willst du damit wieder auf Mis2com anspielen? 😞



  • Wenn Du trollen willst, kann ich diesen Thread auch gern etwas umgestalten und nach Neuhigkeiten verschieben, also bitte beim Thema bleiben. 😉



  • Ich will überhaupt nicht trollen, aber ich dachte du hättest das gerade vor!

    Sorry falls ich dich falsch in Verdacht hatte... 🙂



  • Original erstellt von Mr. N:
    warum is der timer denn so lahm eigtl.?

    Ich schätze mal dieser 10ms-Timer ist so lahm aus historischen Gründen. Den gabs doch garantiert weieder seit dem 8086 und Intel hat sich nicht getraut das Ding umzudesignen :>

    Aber ich hab mal die WINAPI-Funktion QueryPerformanceFrequency abgecheckt, die ergibt bei mir, dass ca. alle 0,279 Mikrosekunden dieser PerformanceCounter Inkrementiert wird, also MUSS zwangsläufig etwas existieren, dass eine höhere Auflösung hat



  • Mensch kann diesen Timer auch umprogrammieren.
    und wenn es dir ums anhalten geht, könntest du mit auch mit einem 10ms Ergebnis etwas anfangen.
    Mit ein wenig SMC könntest du rausfinden wieviele NOPs der Rechner in 10ms schafft, und dann durch 10 teilen, und du weißt in etwa wieviel NOPs du brauchst, um das system 1ms anzuhalten.
    Aber VORSICHT bei Multitasking is das was für'n Ar***, und auch bei modernen CPUs ist das auch unsicher wegen dem ganzen Optimierungskram.

    mfg
    -bg-


Anmelden zum Antworten