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
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.
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
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?
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.
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.
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
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.
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
Mit Google-Account einloggen
Noch kein Account? Hier anmelden.