TTimer zu ungenau - wie funktioniert der EpikTimer?

Für Fragen von Einsteigern und Programmieranfängern...
Bora4d
Beiträge: 290
Registriert: Mo 24. Dez 2007, 13:14
OS, Lazarus, FPC: WinXP-Pro-Sp3, Xubuntu 12.04, (Laz 1.1-SVN Mai2012, FPC 2.6.1 / 2.6.0-Linux)
CPU-Target: AMD64X2

Re: TTimer zu ungenau - wie funktioniert der EpikTimer?

Beitrag von Bora4d »

.
Zuletzt geändert von Bora4d am Do 16. Aug 2012, 15:37, insgesamt 1-mal geändert.

mschnell
Beiträge: 3418
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: TTimer zu ungenau - wie funktioniert der EpikTimer?

Beitrag von mschnell »

Bora4d hat geschrieben:Der Fragensteller will ja nicht während des Programmlaufs Festplatte defragmentieren, spiele starten oder musik konvertieren?

Es nützt nichts wenn der User nicht anschmeißt. Das Betriebssystem und seine Hintergrund-Prozesse sind durchaus in der Lage ohne Auftrag irgendwelche internen Vorgänge zu machen ohne dass man ihm das sagt. Schau Dir mal an was alles für Dämonen / Service in Windows und Linux laufen, ohne dass man das jemals in Auftrag gegeben hat.

Wenn die Messung irgendeine Relevanz haben soll (also wenn das kein Spielzeug-Programm ist) Geht sowas in normalem Windows und Linux nicht.

Nochmal sage ich das nicht.

-Michael :evil:
Zuletzt geändert von mschnell am Di 7. Aug 2012, 15:02, insgesamt 1-mal geändert.

Bora4d
Beiträge: 290
Registriert: Mo 24. Dez 2007, 13:14
OS, Lazarus, FPC: WinXP-Pro-Sp3, Xubuntu 12.04, (Laz 1.1-SVN Mai2012, FPC 2.6.1 / 2.6.0-Linux)
CPU-Target: AMD64X2

Re: TTimer zu ungenau - wie funktioniert der EpikTimer?

Beitrag von Bora4d »

.
Zuletzt geändert von Bora4d am Do 16. Aug 2012, 15:38, insgesamt 1-mal geändert.

mschnell
Beiträge: 3418
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: TTimer zu ungenau - wie funktioniert der EpikTimer?

Beitrag von mschnell »

Bora4d hat geschrieben:es läuft bei mir Wunderbar.


Na klar !.... bis auf manchmal :twisted:

Nur keiner kann vorhersagen wann es völligen Blödsinn misst.

-Michael

Bora4d
Beiträge: 290
Registriert: Mo 24. Dez 2007, 13:14
OS, Lazarus, FPC: WinXP-Pro-Sp3, Xubuntu 12.04, (Laz 1.1-SVN Mai2012, FPC 2.6.1 / 2.6.0-Linux)
CPU-Target: AMD64X2

Re: TTimer zu ungenau - wie funktioniert der EpikTimer?

Beitrag von Bora4d »

.
Zuletzt geändert von Bora4d am Do 16. Aug 2012, 15:38, insgesamt 1-mal geändert.

Eva
Beiträge: 11
Registriert: Di 7. Aug 2012, 10:17

Re: TTimer zu ungenau - wie funktioniert der EpikTimer?

Beitrag von Eva »

Also nochmal zum Verständnis: Ich meine das schon ernst, dass ich eine genaue Zeitmessung brauche.

Da, wie gesagt, dies ein kognitionspsychologisches Experiment werden soll und die Effekte sehr klein sein werden, kann ich keine Varianz in den Intervallen und den Zeitmessungen gebrauchen.

Interessant ist, dass dies ja wirklich ein Problem zu sein scheint und dass meine bisher erfolglose Suche nach einer einfachen Lösung nicht nicht nur damit zusammen hängt, dass ich eben Programmieranfängerin bin.

Ich würd mich trotzdem freuen, wenn sich noch jemand meldet, der den EpikTimer kennt ...

mschnell
Beiträge: 3418
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: TTimer zu ungenau - wie funktioniert der EpikTimer?

Beitrag von mschnell »

Eva hat geschrieben:, dass ich eine genaue Zeitmessung brauche.


Genau ist gar nicht mal das Problem. Das Problem ist zuverlässig.

Wenn es Dir egal ist, dass ab und zu mal (manchmal vielleicht dauernd, manchmal sporadisch, und ohne dass man das irgwndwie erkennen könnte) Werte rauskommen, die ein bisschen oder auch beliebig falsch sind, kannst Du das mit einem normalen PC versuchen. Wenn Du die Messergebnissen tatsächlich für etwas sinnvolles verwenden willst, brauchst Du zusätzliche Hardware.

-Michael

Eva
Beiträge: 11
Registriert: Di 7. Aug 2012, 10:17

Re: TTimer zu ungenau - wie funktioniert der EpikTimer?

Beitrag von Eva »

Hi Michael,

nee, nee, soll auf jeden Fall sinvoll sein. Ist für mein Studium!

Danke schonmal!
Eva

Jochen
Beiträge: 35
Registriert: So 30. Nov 2008, 23:35

Re: TTimer zu ungenau - wie funktioniert der EpikTimer?

Beitrag von Jochen »

Um das Problem eines nicht realtime-fähigen Betriebssystems zu umgehen, könnte man ja ein realtime-fähiges nehmen. In der Wikipedia sind unter 'Echtzeitbetriebssysteme' einige aufgeführt.
Eine einfach Lösung könnte linuxcnc sein. Dort wird zur Maschinensteuerung ein Ubuntu-Derivat verwendet, welches echtzeitfähig ist.

Scotty
Beiträge: 770
Registriert: Mo 4. Mai 2009, 13:24
OS, Lazarus, FPC: Arch Linux, Lazarus 1.3 r44426M FPC 2.6.4
CPU-Target: x86_64-linux-qt/gtk2
Kontaktdaten:

Re: TTimer zu ungenau - wie funktioniert der EpikTimer?

Beitrag von Scotty »

Unter DOS [1] hat man früher die Datenverarbeitung an die Refreshrate des Bildschirms angepasst. Dadurch kommt es bei 60Hz zu einer auf 17ms genauen Darstellung. Wenn der Bildschirmtreiber mitspielt, sicher auch mehr. Allerdings kenne ich keinen Weg, die Abfragehäufigkeit der Tastatur zu ändern. Die wird mit 20Hz (der Wert ist eher geraten) abgefragt.
Ich würde aber eher die 20ms hinterfragen. Das ist typischerweise eine (eher niedrige) Varianz bei Reaktionszeiten um 200ms (je nach Aufgabe). Da gibt es dann auch Reaktionen über 500ms und unter 100ms. Ansonsten würdest du erwarten, dass deine Probanden die Aufgabe a mit sagen wir 90-110ms beantworten und Aufgabe b mit 140-160ms. Wozu bräuchtest du dann noch Statistik? :mrgreen:

[1] Mit Freepascal kann man sicher auch für FreeDos kompilieren.

Bora4d
Beiträge: 290
Registriert: Mo 24. Dez 2007, 13:14
OS, Lazarus, FPC: WinXP-Pro-Sp3, Xubuntu 12.04, (Laz 1.1-SVN Mai2012, FPC 2.6.1 / 2.6.0-Linux)
CPU-Target: AMD64X2

Re: TTimer zu ungenau - wie funktioniert der EpikTimer?

Beitrag von Bora4d »

.
Zuletzt geändert von Bora4d am Do 16. Aug 2012, 15:38, insgesamt 1-mal geändert.

mschnell
Beiträge: 3418
Registriert: Mo 11. Sep 2006, 10:24
OS, Lazarus, FPC: svn (Window32, Linux x64, Linux ARM (QNAP) (cross+nativ)
CPU-Target: X32 / X64 / ARMv5
Wohnort: Krefeld

Re: TTimer zu ungenau - wie funktioniert der EpikTimer?

Beitrag von mschnell »

Jochen hat geschrieben:Eine einfach Lösung könnte linuxcnc sein. Dort wird zur Maschinensteuerung ein Ubuntu-Derivat verwendet, welches echtzeitfähig ist.

Ein "Realtime-linux" hört sich wie eine gute Idee an, wenn man Pascal programmieren will (linuxcnc kenne ich nicht, die Website sagt auf den ersten Blick nichts über realtime). Ich kenne da z.B,. das "Realtime Patch", habe es aber nicht ausprobiert.

In Linux gibt es neben den normalen Proioritäten (die mit dynamischen Zeitscheiben arbeiten) "SCHED-REALTIME" Prioritäten, die eine echte Priorisierung vornehmen (Zeitscheiben werden nur für Programme mit exakt derselben Priorität verwendet).

Das ist dann zwar immer noch keine harte Realtime (weil die Interrupt-Handler noch unvorhersehbare und sich addierende Latenzen verursachen können), könnte aber in vielen Fällen in Verbindung mit einem Realtime-Linux reichen.

Gruß,
-Michael

Jochen
Beiträge: 35
Registriert: So 30. Nov 2008, 23:35

Re: TTimer zu ungenau - wie funktioniert der EpikTimer?

Beitrag von Jochen »

mschnell hat geschrieben:Ein "Realtime-linux" hört sich wie eine gute Idee an, wenn man Pascal programmieren will (linuxcnc kenne ich nicht, die Website sagt auf den ersten Blick nichts über realtime). Ich kenne da z.B,. das "Realtime Patch", habe es aber nicht ausprobiert.


Das sagt das wiki dazu: http://wiki.linuxcnc.org/cgi-bin/wiki.pl?RealTime

Dort steht auch, dass es ein Patch für den Kernel ist. Zudem werden ein paar Tipps zur Verbesserung der 'RealTime performance' gegeben.

MmVisual
Beiträge: 1127
Registriert: Fr 10. Okt 2008, 23:54
OS, Lazarus, FPC: Winux (L 1.6 FPC 3)
CPU-Target: 32/64Bit

Re: TTimer zu ungenau - wie funktioniert der EpikTimer?

Beitrag von MmVisual »

Ich habe jetzt nicht den ganzen Thread gelesen, aber bei Windows gibt es dem QueryPerformanceCounter() damit kann man exakt die ms vom Betriebssystem auslesen. Zurück gegeben wird eine Integer-Zahl ab Einschalten vom Computer und zählt einfach immer weiter hoch.

Messe einfach mit QueryPerformanceCounter() die Zeit zwischen den Timer-Aufrufen und starten den Timer jedes mal mit der Differenz zum Soll neu.

BeniBela
Beiträge: 272
Registriert: Sa 21. Mär 2009, 17:31
OS, Lazarus, FPC: Linux (Lazarus SVN, FPC 2.4)
CPU-Target: 64 Bit

Re: TTimer zu ungenau - wie funktioniert der EpikTimer?

Beitrag von BeniBela »

Auf einem modernen Computer läuft einfach zu viel, um das wirklich akurat zu bekommen.

Ich denke, am besten wäre das mit einem Mikrokontroller (z.B.: Arduinoboard) zu machen...

Antworten