| Autor |
Beitrag |
mister_x
      
Beiträge: 85
Win 98, WIN 2000, WIN XP PRO
Delphi 2006
|
Verfasst: Mo 08.10.07 15:50
sers leute
ich brauch einen timer taktung<<1ms
also im µs oder ns bereich....
mit den standard timern kommt man ja nur auf 1ms runter
im net hab ich was über den Mutlimedia Timer von windows gelesen der soll um einiges schneller sein....
nur hab ich bis jetzt noch kein tut gefunden...
also meine frage kennt sich jemand damit aus oder kann mir jemand was anderes vorschlagen
Gruß Mister_X
_________________ Der Computer ist das genialste Produkt der menschlichen Faulheit
|
|
Kroko
      
Beiträge: 1284
W98 W2k WXP
Turbo D
|
Verfasst: Mo 08.10.07 15:52
(a) brauchen kannst Du
(b) bekommen wirst du nicht
(c) nicht mal Windows kommt auf 1ms
(d) suche mal hier, die Frage gab es schon öfters
_________________ Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Mo 08.10.07 15:56
wenn mir die frage erlaubt ist: wozu brauchst du überhaupt nen timer mit unter 1 ms??
lg elundril
|
|
mister_x 
      
Beiträge: 85
Win 98, WIN 2000, WIN XP PRO
Delphi 2006
|
Verfasst: Mo 08.10.07 15:59
elundril hat folgendes geschrieben: | wenn mir die frage erlaubt ist: wozu brauchst du überhaupt nen timer mit unter 1 ms??
lg elundril |
zur datenübertragung an einem IO-Port
_________________ Der Computer ist das genialste Produkt der menschlichen Faulheit
|
|
covel
      
Beiträge: 131
Win XP PRo
Borland D7/C#
|
Verfasst: Mo 08.10.07 16:29
Hi,
ich brauchte sowas ähnliches für eine oszilloskop-funktion, habe eine "Endloss-Schleife" benutzt. Vielleicht hilft dir das ja weiter...
|
|
Sidorion
      
Beiträge: 63
|
Verfasst: Mo 08.10.07 17:22
Versuchs mal mit QueryPerformanceFrequency im FormCreate und im Application.OnIdle mit QueryPerformanceCounter. Mit ersterem kriegst Du Ticks/sekunde, mit letzterem aktuelle Tickzahl. Jetzt kannst Du nach einer bestimmten Tickzahl ein Signal senden. Aber Vorsicht: im OnIdle musst Dudann Done auf false setzten und deine CPU-Last springt auf 100% (andere Prozesse kommen trotzdem dran).
p.s. Bei Mehrprozessor(Kern) Systemen musst Du Deine Anwendung auf einen Prozessor festnageln, da die einen unterschiedlichen tickcount haben.
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Mo 08.10.07 17:30
Wegen eines Hinweises meines Infp-Professors:
www.torry.net/quicks...=hires&Title=Yes
ein timer mit unter 1 ms! viel spass damit!
lg elundril
|
|
Reinhard Kern
      
Beiträge: 591
Erhaltene Danke: 14
|
Verfasst: Mo 08.10.07 19:13
mister_x hat folgendes geschrieben: | sers leute
ich brauch einen timer taktung<<1ms
also im µs oder ns bereich....
mit den standard timern kommt man ja nur auf 1ms runter
im net hab ich was über den Mutlimedia Timer von windows gelesen der soll um einiges schneller sein....
nur hab ich bis jetzt noch kein tut gefunden...
also meine frage kennt sich jemand damit aus oder kann mir jemand was anderes vorschlagen
Gruß Mister_X |
Dazu braucht man professionelle Hardware, z.B. einen Universalzähler. Für ein Softwaresystem nicht realisierbar, und mit Windows noch weniger als garnicht, da können schon die Sekunden unzuverlässig sein (ist bei Linux nicht anders).
Gruss Reinhard
|
|
elundril
      
Beiträge: 3747
Erhaltene Danke: 123
Windows Vista, Ubuntu
Delphi 7 PE "Codename: Aurora", Eclipse Ganymede
|
Verfasst: Mo 08.10.07 22:50
HAALLLLLOOO! Guckts ihr vielleicht mal auf den link. da steht doch eindeutig was anderes oder??
lg elundril
|
|
Kroko
      
Beiträge: 1284
W98 W2k WXP
Turbo D
|
Verfasst: Di 09.10.07 04:20
elundril hat folgendes geschrieben: | HAALLLLLOOO! Guckts ihr vielleicht mal auf den link. da steht doch eindeutig was anderes oder??
lg elundril |
Gucken schon, nur fehlt mir der Glaube daran!
_________________ Die F1-Taste steht nicht unter Naturschutz und darf somit regelmäßig und oft benutzt werden! oder Wer lesen kann, ist klar im Vorteil!
|
|
OlafSt
      
Beiträge: 486
Erhaltene Danke: 99
Win7, Win81, Win10
Tokyo, VS2017
|
Verfasst: Di 09.10.07 13:07
Dieser "HRTimer" ist noch immer dem Scheduler von Windows unterworfen. Findet also eine Nanosekunde vor Ablauf der Wartezeit ein Taskwechsel statt, dann gibts eben keinen Event, bis der Scheduler wieder dem Prozess ein neues Stück von der Zeitscheibe zuweist - wann immer das sein mag. Der Timer ist also ebenso ungenau wie jeder andere auch.
Windows ist KEIN RT-Betriebssystem, derartige Timerauflösungen sind nur mit Tricks zu machen (Realtime-Prio's und so weiter), die den Rest des Systems schier unbenutzbar machen. Besser ist es, das Timern einem Stück Hardware zu überlassen (Einsteckkarte, µC oder ähnliches) und Windows nur die Anzeige zu überlassen.
_________________ Lies, was da steht. Denk dann drüber nach. Dann erst fragen.
|
|
Carla
      
Beiträge: 111
Erhaltene Danke: 2
|
Verfasst: Di 09.10.07 13:20
OlafSt hat folgendes geschrieben: | | Besser ist es, das Timern einem Stück Hardware zu überlassen (Einsteckkarte, µC oder ähnliches) und Windows nur die Anzeige zu überlassen. |
Na ganz stimmt das so auch nicht.
Es gibt schon Software, welche einen hochgenauen Timer und Echtzeitbetrieb auch unter Windows zuläßt.
Nur ist das nicht ganz billig.
Ich habe in einer Anwendung unter anderen einen 1 ms Task laufen. Dieser arbeitet hochgenau. Läuft unter Windows (XP) in der SoftSPS von Beckhoff.
Für Bastelzwecke kann man sich die Demo der SoftSPS laden, die läuft 30 Tage.
Programmierbar in Strukturierten Text - das ist ein Pascaldialekt.
Ein weiteres Tool wird von Kitiara-Software oder so ähnlich angeboten.
Hier wird, ebenfalls unterhalb von Windows ein Timer getaktet, welcher in vorgegebenen Zyklen die eigene Software ruft.
Mit Windows-API sollte man in dieser Software dann aber tunlichst nicht arbeiten.
Gruß
Carla
|
|
Reinhard Kern
      
Beiträge: 591
Erhaltene Danke: 14
|
Verfasst: Di 09.10.07 18:15
Carla hat folgendes geschrieben: |
...
Ich habe in einer Anwendung unter anderen einen 1 ms Task laufen. Dieser arbeitet hochgenau. Läuft unter Windows (XP) in der SoftSPS von Beckhoff.
...
Gruß
Carla |
Hallo Carla,
bist du wirklich sicher, dass das so ist wie du es beschreibst? Normalerweise ist es bei industriellen Lösungen umgekehrt: Windows läuft als Task unter einem Echtzeitsystem, und zwar mit niedriger Priorität - so kann Windows nicht die Interrupt-Routinen des Echtzeitsystems behindern.
Ein Echtzeitsystem kann schon Zeitauflösungen im Bereich µsec erreichen, für nsec braucht man aber doch Hardware.
Gruss Reinhard
|
|
Carla
      
Beiträge: 111
Erhaltene Danke: 2
|
Verfasst: Mi 10.10.07 08:58
Reinhard Kern hat folgendes geschrieben: |
bist du wirklich sicher, dass das so ist wie du es beschreibst? Normalerweise ist es bei industriellen Lösungen umgekehrt: Windows läuft als Task unter einem Echtzeitsystem, und zwar mit niedriger Priorität - so kann Windows nicht die Interrupt-Routinen des Echtzeitsystems behindern.
Ein Echtzeitsystem kann schon Zeitauflösungen im Bereich µsec erreichen, für nsec braucht man aber doch Hardware.
Gruss Reinhard |
Ja eine SoftSPS liegt unterhalb von Windows und wird von einem Hardwaretimer getriggert.
Die Jitterzeiten sind garantiert konstant.
Wie bei einer SPS üblich, können Task mit unterschiedlichen Zykluszeiten definiert werden.
Die kürzest mögliche Zeit liegt unter 10 µsec.
Interessant ist, das bei einer relativ ausgelasteten SPS (das Teil steuert einen Prüfstand) kaum Performance-Einbrüche in
Windows zu bemerken sind.
Heute verwende ich diese Technik jedoch nicht mehr. Zum gleichen Preis wie die SoftSPS - Software, erhält man heute bereits
eine Hardware Mini-SPS. Das vereinfacht die Entwicklung erheblich und macht die Anwendung sicherer.
Gruß
Carla
|
|