El comportamiento que se busca (al mensaje original me remito) es repetir ciclos de duración T0 + T1, de la siguiente manera:
- generar un pulso (salida a 1) durante un periodo de tiempo T1, bastante corto - mantener la salida a 0 durante el resto del periodo (T1 + T0) Es obvio que el programa original no hace eso. En su lugar, hace lo que expliqué. Aparte de eso, tengo la impresión de que Rolando, para el uso que va a hacer (si no recuerdo mal, trabaja en algo relacionado con radioastronomía), va a tener unas tolerancias bastante bajas. Si obviamos que estamos usando Python y la incertidumbre que introduce la máquina virtual, si queremos tener un control mínimamente riguroso de los tiempos, habría que usar, por ejemplo, el módulo signal y programar una alarma. Eso sin hablar del sistema operativo que estemos usando: por lo general, en un SO multitarea, la conmutación con otras tareas te puede fastidar completamente el asunto, a menos que estés usando un SO para tiempo real, o uno generalista extensiones RT (eg. Linux) Saludos, Ricardo 2017-03-23 22:50 GMT-10:00 Narcis Garcia <informat...@actiu.net>: > Para un comportamiento regular, es decir, que imprima el mismo número de > ceros y unos por el mismo tiempo, no debería imprimir por cada bucle > sinó por cada tiempo detectado del reloj. Con ello ya andaría sincronizado. > > > El 24/03/17 a les 00:07, Ricardo Cárdenes ha escrit: > > El programa duerme durante 0.01 segundo e imprime (en rápida sucesión) 0 > > 1 0 1. Y repite esa secuencia durante 10 segundos. No parece ser lo que > > Rolando quiere hacer. > > > > Y da igual que estés leyendo el reloj hardware, -que depende de muchos > > factores, como el sistema operativo, pero no tiene por qué,- el resto > > del programa añade retrasos que posiblemente no sean deseables en una > > aplicación como esta. > > > > 2017-03-22 21:39 GMT-10:00 Narcis Garcia <informat...@actiu.net > > <mailto:informat...@actiu.net>>: > > > > No entiendo el porqué el primer código fuente propuesto no debe > > funcionar, ya que se supone que la lectura de tiempo es del reloj de > > hardware. > > > > > > El 23/03/17 a les 03:05, Ricardo Cárdenes ha escrit: > > > Hola Rolando, > > > > > > Creo que es lo mejor para lo que estás haciendo. Si lo quieres > hacer > > > programable, busca algún microcontrolador. Un simple Arduino te > basta > > > para una tarea como esta. > > > > > > 2017-03-22 5:42 GMT-10:00 Rolando Paz <flx...@gmail.com <mailto: > flx...@gmail.com> > > > <mailto:flx...@gmail.com <mailto:flx...@gmail.com>>>: > > > > > > Hola a todos. > > > > > > En efecto Ricardo lo que necesito hacer es controlar los > tiempos T0 > > > y T1. > > > > > > La acción para pruebas fue imprimir los valores 0 y 1, sin > embargo, > > > de acuerdo al hardware que estoy programando, estos valores 0 > y 1 > > > los debo ajustar dentro de un registro de software que > habilita o > > > deshabilita la generación de una señal senoidal. > > > > > > Sin embargo, luego de buscar varias formas de hacerlo con > software, > > > creo que lo más facil sera hacerlo con hardware. Con algun > generador > > > de señales :) > > > > > > > > > > > > > > > El 21 de marzo de 2017, 22:30, Ricardo Cárdenes > > > <ricardo.carde...@gmail.com > > <mailto:ricardo.carde...@gmail.com> > > <mailto:ricardo.carde...@gmail.com <mailto:ricardo.cardenes@ > gmail.com>>> > > > escribió: > > > > > > Según la presentación del problema, es un ciclo de: > "imprimir > > > 0", "esperar T0 segundos", "imprimir 1", "esperar T1 > segundos" > > > > > > 2017-03-21 10:07 GMT-10:00 Carlos Zuniga < > carlos....@gmail.com <mailto:carlos....@gmail.com> > > > <mailto:carlos....@gmail.com <mailto:carlos....@gmail.com > >>>: > > > > > > 2017-03-20 23:05 GMT-05:00 Rolando Paz < > flx...@gmail.com <mailto:flx...@gmail.com> > > > <mailto:flx...@gmail.com <mailto:flx...@gmail.com>>>: > > > > Hola a todos de nuevo... > > > > > > > > Ahora regreso con un pequeño código: > > > > > > > > import time > > > > > > > > start_time = time.time() > > > > #tiempo total en segundos, como ejemplo 10. > > > > tiempo_total = 10 > > > > #numero de conmutaciones generadas, como ejemplo 4. > > > > conmutaciones = 4 > > > > for offset in range(tiempo_total): > > > > while (time.time() - start_time) < offset: > > > > time.sleep(0.01) > > > > #lo siguiente realiza una conmutacion entre > > 0 y 1. > > > > count = 0 > > > > for i in range(conmutaciones): > > > > count = (count + 1) % 2 > > > > print count > > > > > > > > Lo que hace este código es conmutar entre 0 y 1, > tantas > > > veces como se defina > > > > en "conmutaciones", durante el tiempo establecido en > > > "tiempo_total". > > > > > > > > La salida es la siguiente. > > > > > > > > 0 > > > > 1 > > > > 0 > > > > 1 > > > > > > > > Estoy tratando de entender cómo usar este código para > > > controlar los tiempos > > > > que se definen en la imagen adjunta, es decir: > > > > > > > > T1 = tiempo durante el cual la conmutacion es 1 > > > > T0 = tiempo durante el cual la conmutacion es 0 > > > > Tiempo Total = tiempo total de las conmutaciones > > > > > > > > Agradecería cualquier comentario sobre como poder > > > controlar los tiempos > > > > anteriores. > > > > > > > > > > Tu intención es que espere un tiempo tras cada print > > de 0 o > > > 1? o que > > > imprima 0/1 4 veces y luego esperar? > > > > > > import time > > > from itertools import cycle > > > conmutador = cycle((0,1)) > > > > > > tiempo_total = 10 > > > conmutaciones = 4 > > > > > > start = time.time() > > > end = start + tiempo_total > > > time_per_pulse = tiempo_total / conmutaciones > > > while end > time.time(): > > > pulse_start = time.time() > > > print(next(conmutador)) > > > pulse_end = time.time() > > > time.sleep(time_per_pulse - (pulse_end - > > pulse_start)) > > > > > > > > > Ahora, time.sleep no es exacto, el tiempo va a ser > > > normalmente mayor > > > al que especificas, depende del sistema. También hay > > > threading.Event.wait que puede ser más exacto. > > > > > > > > > Saludos > > > _______________________________________________ > > > Python-es mailing list > > > Python-es@python.org <mailto:Python-es@python.org> > > <mailto:Python-es@python.org <mailto:Python-es@python.org>> > > > https://mail.python.org/mailman/listinfo/python-es > > <https://mail.python.org/mailman/listinfo/python-es> > > > <https://mail.python.org/mailman/listinfo/python-es > > <https://mail.python.org/mailman/listinfo/python-es>> > > > > > > > > > > > > _______________________________________________ > > > Python-es mailing list > > > Python-es@python.org <mailto:Python-es@python.org> > > <mailto:Python-es@python.org <mailto:Python-es@python.org>> > > > https://mail.python.org/mailman/listinfo/python-es > > <https://mail.python.org/mailman/listinfo/python-es> > > > <https://mail.python.org/mailman/listinfo/python-es > > <https://mail.python.org/mailman/listinfo/python-es>> > > > > > > > > > > > > _______________________________________________ > > > Python-es mailing list > > > Python-es@python.org <mailto:Python-es@python.org> > > <mailto:Python-es@python.org <mailto:Python-es@python.org>> > > > https://mail.python.org/mailman/listinfo/python-es > > <https://mail.python.org/mailman/listinfo/python-es> > > > <https://mail.python.org/mailman/listinfo/python-es > > <https://mail.python.org/mailman/listinfo/python-es>> > > > > > > > > > > > > > > > _______________________________________________ > > > Python-es mailing list > > > Python-es@python.org <mailto:Python-es@python.org> > > > https://mail.python.org/mailman/listinfo/python-es > > <https://mail.python.org/mailman/listinfo/python-es> > > > > > _______________________________________________ > > Python-es mailing list > > Python-es@python.org <mailto:Python-es@python.org> > > https://mail.python.org/mailman/listinfo/python-es > > <https://mail.python.org/mailman/listinfo/python-es> > > > > > > > > > > _______________________________________________ > > Python-es mailing list > > Python-es@python.org > > https://mail.python.org/mailman/listinfo/python-es > > > _______________________________________________ > Python-es mailing list > Python-es@python.org > https://mail.python.org/mailman/listinfo/python-es >
_______________________________________________ Python-es mailing list Python-es@python.org https://mail.python.org/mailman/listinfo/python-es