Hola ecfisa,
Lamento haberme ido "al punto" sin explicar mucho el problema... el retardo lo quiero para generar una secuencia de pulsos por puerto paralelo para un motor del tipo "stepper"; estuve probando con la funcion Delay que puse en el anterior mensaje, pero me di cuenta que no es muy precisa; Luego pase por usar QueryPerformanceCounter() de la siguiente manera:
Código:
LARGE_INTEGER pcFreq; //ENTERO_LARGO de muchos bits.. :D
QueryPerformanceFrequency(&pcFreq); //captura la frecuencia de la CPU
int MicroSec=(pcFreq.QuadPart/1000)*1.3;// 1.3 Microsegundos
void TForm1::miDelay(int MicroSec)
{
LARGE_INTEGER freqIni; //Variable frecuencia inicial
LARGE_INTEGER freqFin; //Variable frecuencia final
QueryPerformanceCounter(&freqFin); //Captura Frecuencia Actual
freqIni=freqFin; //Igualando Frecuencia Inicial y final
while(freqIni.QuadPart/1000<freqFin.QuadPart/1000+MicroSec) //While consume mucho CPU
QueryPerformanceCounter(&freqIni);
}
y aunque esta funcion es bastante precisa me deja el problema de consumirme muchos ciclos de cpu
...
Lo de la función Sleep, ya la habia probado pero tiene tambien el problema de no ser tan precisa para mover motores stepper...
Fue por eso que me habia planteado como una opción la posibilidad de usar WaitForSingleObject(), que hasta donde entiendo puede generar un retardo sin consumir tantos ciclos de cpu... pero aun no encuentro un ejemplo claro de como usarlo..
PD: El motor stepper requiere aún pulsos por debajo del 1 milisegundo.