Forum: PC-Programmierung Win32 API Timer 20ms


von Marc (Gast)


Lesenswert?

Hallo !
Für ein Projekt benötige ich einen Timer mit einer exakten Auflösung von 
20ms. Ich habe ein Windows CE 5.0 Betriebssystem (XScale 320PXA 
Prozessor)

Kennt einer von Euch eine API die mir die Auflösung von 20ms bietet?
Ich habe mit SetTimer() eine zu ungenaue Zeit bzw. die Abweichung ist 
mir zu groß. Kann mir jemand von Euch weiter helfen ?

Mfg Marc

von Rufus Τ. F. (rufus) Benutzerseite


Lesenswert?

Irreführender Betreff, meinst Du nicht auch?

Was hat CE auf einem XScale mit Win32 zu tun?

Ansonsten kannst Du mal nachsehen, ob die von mir im Thread 
Beitrag "Harte Echtzeit mit Windows" erwähnten Funktionen zur 
Veränderung der Schedulergranularität auch unter CE existieren.

von Gast (Gast)


Lesenswert?

Der multimedia Timer von Windows über timeSetEvent() ist wenns um 
Genauigkeit geht bessere Wahl.
Ist allerdings für CE 'unsupportet'
Vielleicht kannst du aber mit der info  mmtimer, winmm.lib was 
äquivalentes für Windows ce finden, aber wegen der mannigfaltigen 
Zielhardware weiß ich nicht, ob auf ce performance timer unterstützt 
sein werden.
Halt uns mal auf dem Laufenden

von Marc (Gast)


Lesenswert?

Na gut...dann stellen wir die Frage mal anders rum...

Ich habe ein Windows CE 5.0 Betriebssystem und suche nach einer 
Möglichkeit einen Timer mit einer Auflösung von 20ms zu programmieren. 
Ich muss einen String in einem Takt von 20ms über die serielle 
Schnittstelle senden.

Ist das so etwas verständlicher ?

Mit welchen Möglichkeiten der Programmierung kann ich diesen Timer 
umsetzen?

von Gast (Gast)


Lesenswert?

Ich habs mal selber in google getippt und auf der msdn Seite steht, daß 
für ce in der Mmtimer.lib eben timeSetEvent() event vorhanden ist.
Der header steht in Mmsystem.h, damit solltest du was finden.

Über die mm Timer ist theoretisch eine 1ms Auflösung des Timers möglich 
und win xp lieferte früher mal bei einem test auch ganz erfreulich 
geringen jitter.

von Wolfgang Mües (Gast)


Lesenswert?

Gestatte bitte, dass ich die Sinnfrage stelle.

Dein Kommunikationspartner kann nur alle 20ms ein Zeichen einlesen, und 
wenn die Zeichen schneller hintereinander folgen, dann geht es nicht?

Sowas ist aber sehr ungewöhnlich...

Normalerweise muß man sich nur mit der Sendehardware der V24 
synchronisieren, und das erledigt in der Regel das Betriebssystem schon 
für Dich.

von Marc (Gast)


Lesenswert?

Hallo !
Da ich doch eine Win CE 5.0 Echtzeit Betriebssystem habe, muss es doch 
auch möglich sein einen Timer mit einer exakten Zeit zu programmieren, 
oder ?

Mal als Beispiel, wenn ich jede 100ms einen String über die serielle 
Schnittstelle senden will, was für einen Timer muss ich dann nehmen?

Ich muss exakt die Zeit haben, das ist doch unter CE möglich, oder ?

timeSetEvent() ist etwas zu ungenau bzw. die Abweichungen sind zu groß.

Hat jemand ne Idee oder sogar praktische Erfahrung, einen Weblink wie 
ich eine Lösung finde!!??


Besten Dank! Gruss Marco

von Jojo S. (Gast)


Lesenswert?

WinCE ist aber nicht gleich WinCE. Für Realtime kann man in den Kernel 
eine ISR einbauen die mit hoher Priorität aufgerufen wird und so einen 
eigenen Scheduler bauen oder feste Aufgaben per ISR erledigen lassen. 
Aber das liegt nicht im Bereich der Anwendungsprogrammierung für CE, da 
braucht schon detailierte Infos zu der Gerätehardware und am Besten noch 
ein 'Board support package'. Wenn das CE in einem PDA steckt bezweifle 
ich das da wirklich Realtime mit möglich ist. Wir benutzen sowas mit X86 
Hardware und da wird ein eigener Scheduler für eine Soft SPS aufgerufen.

von Marc (Gast)


Lesenswert?

Hallo Johannes..

Alles kein Thema was die Info´s betrifft. Die Hardware kenne ich (kein 
PDA, sondern Marvell XScale PXA 320), das BSP habe ich auch...mit der 
System-Programmierung von CE habe ich schon gute Erfahrungen. Wie 
realisiere ich den eine feste Aufgabe via ISR ? Hast Du ein Software 
Beispiel?

Bitte melde dich an um einen Beitrag zu schreiben. Anmeldung ist kostenlos und dauert nur eine Minute.
Bestehender Account
Schon ein Account bei Google/GoogleMail? Keine Anmeldung erforderlich!
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.