Herzlich Willkommen, lieber Gast!
  Sie befinden sich hier:

  Forum » VC++ / MFC » Pulsbreite minimieren?? howto?

Forum | Hilfe | Team | Links | Impressum | > Suche < | Mitglieder | Registrieren | Einloggen
  Quicklinks: MSDN-Online || STL || clib Reference Grundlagen || Literatur || E-Books || Zubehör || > F.A.Q. < || Downloads   

Autor Thread - Seiten: > 1 < [ 2 ]
000
29.06.2004, 12:47 Uhr
Heraklea



servus leute hab mal ne frage mit der Funktion Slepp() habe ich doch die möglichkeit das system schlafen gehen zu lassen aber man bekommt nur maximal ne frequenz von 50 hs bei einer pulsbreite von 10 ms. ich hingegen brauche aber 80 hz was ner pulsbreite von 6,25 ms entsprich. das argument von Sleep kann das zwar aufnehmen aber bei windows ist die kleinste zur vefügung zu stellende zeiteinheit minimal 10ms

habt ihr ne ahnung wie das gehen könnte?
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
001
29.06.2004, 13:06 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


such mal im Forum nach QueryPerformanceCounter... damit geht das...
--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
002
29.06.2004, 13:23 Uhr
Heraklea



Hallo windalf

danke für deine antwort aber die suche ergibt nichts hast du zufällig ein beispiel dazu

mfg Heraklea
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
003
29.06.2004, 13:26 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)



C++:
LONGLONG Frequency, CurrentTime, LastTime;
double TimeElapsed, TimeScale;
QueryPerformanceFrequency( (LARGE_INTEGER*) &Frequency);
TimeScale = 1.0/Frequency;
QueryPerformanceCounter( (LARGE_INTEGER*) &LastTime);
for(int i=0;i<100000;++i);  //do something
QueryPerformanceCounter( (LARGE_INTEGER*) &CurrentTime);
TimeElapsed = (CurrentTime - LastTime) * TimeScale;
printf("\nTime elapsedt%f\n",TimeElapsed);


--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
004
29.06.2004, 13:31 Uhr
ao

(Operator)



Zitat:
Heraklea postete
servus leute hab mal ne frage mit der Funktion Slepp() habe ich doch die möglichkeit das system schlafen gehen zu lassen aber man bekommt nur maximal ne frequenz von 50 hs bei einer pulsbreite von 10 ms. ich hingegen brauche aber 80 hz was ner pulsbreite von 6,25 ms entsprich. das argument von Sleep kann das zwar aufnehmen aber bei windows ist die kleinste zur vefügung zu stellende zeiteinheit minimal 10ms

habt ihr ne ahnung wie das gehen könnte?

Das ist nicht ganz richtig. Nicht das System geht schlafen, sondern nur der betreffende Thread des betreffenden Prozesses.

Und das mit den 10 ms hast du auch ein bisschen missverstanden.

10 ms ist bei Windows NT (und 2000 und XP und 2003-Server) die Zeitscheibe, d.h. nach jeweils 10 ms schaut Windows von sich aus nach, ob ein Threadwechsel stattfinden muss, und es kann passieren, dass der Prozessor dem laufenden Thread entzogen und einem anderen zugeordnet wird.

Bei Windows 95, 98 und ME ist die Zeitscheibe nicht 10, sondern etwa 55 ms.

Darüberhinaus kann jeder Thread von sich aus seine Zeitscheibe vorzeitig beenden (z.B. indem er Sleep() macht). Der Rest der Zeitscheibe verfällt dann, und Windows lässt einen anderen Thread weiterlaufen.

Das heißt, wenn dein Pulsgenerator immer Sleep (6) macht, und die Belastung des Systems durch andere Threads ist gering, dann kriegst du tatsächlich etwa 80 Hz Pulsfrequenz raus.

Du kannst dich nur nicht drauf verlassen, dass die Frequenz konstant ist; je nachdem, was du noch mit dem PC machst, kann es einen erheblichen Jitter geben.
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
005
29.06.2004, 14:19 Uhr
Heraklea



danke windalf und ao
für eure hilfe aber ne frage hätte ich da noch

wenn ich dein code nehme windalf bzw. den den du mir gepostet hast(und er ist ok also fehlerfrei bei mir)

wie setze ich zum beispiel ein flag mit eins oder 0 sodas meine varible mit der frequenz von 80 hz hin und hergeschaltet wird

vielen vielen dank gott möge eurer seele gnädig sein
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
006
29.06.2004, 15:23 Uhr
ao

(Operator)



Zitat:
Heraklea postete
gott möge eurer seele gnädig sein

Das hat aber hoffentlich noch ein bisschen Zeit. ;-)
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
007
29.06.2004, 15:46 Uhr
Heraklea



ich hoffe es vergehen noch 100 jahre bis zu dem zeitpunkt

folgendes:

also ich kann mein problem jetzt gnauer spezifizieren.

also ich brauche ein signal 80 hz das ein softwareinterrupt auslöst. das problem war ja das das mit Sleep() nicht machbar war wegen der zeitscheibe von 10 ms. und es muss keine prozessorleistung verbrauchen sleep macht das ja auch nicht aber wie gesagt zeitscheibe.

wie sollte ich eurer meinung nach vorgehen??
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
008
29.06.2004, 17:43 Uhr
Windalf
Der wo fast so viele Posts wie FloSoft...
(Operator)


ungetestet so ins forum gehackt so

C++:
LONGLONG Frequency, CurrentTime, LastTime;
double TimeElapsed, TimeScale;
QueryPerformanceFrequency( (LARGE_INTEGER*) &Frequency);
TimeScale = 1.0/Frequency;
int flag=0;
QueryPerformanceCounter( (LARGE_INTEGER*) &CurrentTime);

while(true){
    flag=!flag;
    LastTime=CurrentTime;
    //hier ausgang auf flag setzen
     while((CurrentTime - LastTime) * TimeScale*1000<6.25)
        QueryPerformanceCounter( (LARGE_INTEGER*) &CurrentTime);
}


--
...fleißig wie zwei Weißbrote
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
009
29.06.2004, 23:12 Uhr
~heraklea
Gast


hallo windalf danke für deine mühen ich weiss das echt zu schätzen
ich habe den code mal getestet und mal aus jucks mit get systemtime() die zeit ausgeben lassen auch wenn ich dort ne 6.25 stehen habe ist die differenz nie kleiner als 16ms

????????

mfg heraklea
 
Profil || Private Message || Suche Download || Zitatantwort || Editieren || Löschen || IP
Seiten: > 1 < [ 2 ]     [ VC++ / MFC ]  


ThWBoard 2.73 FloSoft-Edition
© by Paul Baecher & Felix Gonschorek (www.thwboard.de)

Anpassungen des Forums
© by Flo-Soft (www.flo-soft.de)

Sie sind Besucher: