Re: Uso De La Instrucción Wait En Raspberry
Pues tenéis razón, debería haber puesto código o pseudo código. Pero lo tenía muy ponzoñoso... , soy un poco bruto.
Pero ya he llegado a una solución y conclusiones, que espero puedan ayudar en algo.
Usando el Wait creo que lo que hago es poner el programa al servicio de los eventos que sucedan. Por eso, cuando lo usaba y movía el ratón en la aplicación me salia del bucle infinito y me enviaba algunos datos. Sino hay eventos se queda pillado en ese bucle infinito, se acababa colgado la raspberry. Creo que con tiempos muy bajos no va bien.
Así que he cambiado el wait en un bucle while por un temporizador. Los timer1 tienen una unidad mínima de 1 milisegundo (osea en 1 segundo tenemos mil de estas unidades).
Cuando arranco la lectura que me interesa, con un botón, lo que hago en realidad es encender ese timer1 ( con delay = 1 , osea 1 milisegundo) para que ejecute mi rutina (rutina que contendrá en su respuesta al evento timer1) con tiempos de espera entre ejecuciones de 1 milisegundo.
Después de ejecutar la rutina lo vuelvo activar, para que así siga en bucle hasta que pare el timer1 con otro botón de aplicación, que suponga la parada de lectura.
Para comprobar mi condición crítica de tiempo de ejecución uso variable_tiposingle=Timer(). Con ella tomo diversos puntos de tiempo en mi código y hallando la diferencia de estos valores consigo tiempos de ejecución. Este tiempo que me da es variable pues la raspberry no deja de ser un único procesador que se apaña para atender el sistema operativo y la interfaz gráfica. Pero lo limito a un máximo de 10 milisegundos.
En mi aplicación quiero tomar unos valores de corriente alterna desde que pasa por cero la onda hasta que vuelve a pasar. Nuestra corriente en Europa es de 50 Hz (osea hace un ciclo entero=1/50 = 20 milisegundos). Cada ciclo pasa 2 veces por cero, teniendo un tiempo limitante de 20/2= 10 milisegundos.
Mis resultados es que con todo esto consigo ver los datos en como mucho 4 milisegundos, me sobrán 6 milisegundos del tiempo natural de la semionda.
Vamos, es fantástico. Con
gambas en la rasberry he conseguido tiempos pequeños sin tener que definir otra función en C.
Decir que le voy a tener que montar un disipador por que sino se me a churruscar el procesador, pero funciona y no se queda colgada.
Muchas gracias a todos por echarle un vistazo a mi problema. En bastante tiempo me he visto solo. Mejoraré mis formas. Espero y deseo servirle de ayuda a alguien. Bicos desde Galicia.