<div dir="ltr"><div><br></div>El comportamiento que se busca (al mensaje original me remito) es repetir ciclos de duración T0 + T1, de la siguiente manera:<div><br></div><div> - generar un pulso (salida a 1) durante un periodo de tiempo T1, bastante corto</div><div> - mantener la salida a 0 durante el resto del periodo (T1 + T0)</div><div><br></div><div>Es obvio que el programa original no hace eso. En su lugar, hace lo que expliqué.</div><div><br></div><div>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)</div><div><br></div><div>Saludos,</div><div>Ricardo</div></div><div class="gmail_extra"><br><div class="gmail_quote">2017-03-23 22:50 GMT-10:00 Narcis Garcia <span dir="ltr"><<a href="mailto:informatica@actiu.net" target="_blank">informatica@actiu.net</a>></span>:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Para un comportamiento regular, es decir, que imprima el mismo número de<br>
ceros y unos por el mismo tiempo, no debería imprimir por cada bucle<br>
sinó por cada tiempo detectado del reloj. Con ello ya andaría sincronizado.<br>
<br>
<br>
El 24/03/17 a les 00:07, Ricardo Cárdenes ha escrit:<br>
<span class="">> El programa duerme durante 0.01 segundo e imprime (en rápida sucesión) 0<br>
> 1 0 1. Y repite esa secuencia durante 10 segundos. No parece ser lo que<br>
> Rolando quiere hacer.<br>
><br>
> Y da igual que estés leyendo el reloj hardware, -que depende de muchos<br>
> factores, como el sistema operativo, pero no tiene por qué,- el resto<br>
> del programa añade retrasos que posiblemente no sean deseables en una<br>
> aplicación como esta.<br>
><br>
> 2017-03-22 21:39 GMT-10:00 Narcis Garcia <<a href="mailto:informatica@actiu.net">informatica@actiu.net</a><br>
</span>> <mailto:<a href="mailto:informatica@actiu.net">informatica@actiu.net</a>><wbr>>:<br>
<span class="">><br>
> No entiendo el porqué el primer código fuente propuesto no debe<br>
> funcionar, ya que se supone que la lectura de tiempo es del reloj de<br>
> hardware.<br>
><br>
><br>
> El 23/03/17 a les 03:05, Ricardo Cárdenes ha escrit:<br>
> > Hola Rolando,<br>
> ><br>
> > Creo que es lo mejor para lo que estás haciendo. Si lo quieres hacer<br>
> > programable, busca algún microcontrolador. Un simple Arduino te basta<br>
> > para una tarea como esta.<br>
> ><br>
> > 2017-03-22 5:42 GMT-10:00 Rolando Paz <<a href="mailto:flxpaz@gmail.com">flxpaz@gmail.com</a> <mailto:<a href="mailto:flxpaz@gmail.com">flxpaz@gmail.com</a>><br>
</span>> > <mailto:<a href="mailto:flxpaz@gmail.com">flxpaz@gmail.com</a> <mailto:<a href="mailto:flxpaz@gmail.com">flxpaz@gmail.com</a>>>>:<br>
<span class="">> ><br>
> > Hola a todos.<br>
> ><br>
> > En efecto Ricardo lo que necesito hacer es controlar los tiempos T0<br>
> > y T1.<br>
> ><br>
> > La acción para pruebas fue imprimir los valores 0 y 1, sin embargo,<br>
> > de acuerdo al hardware que estoy programando, estos valores 0 y 1<br>
> > los debo ajustar dentro de un registro de software que habilita o<br>
> > deshabilita la generación de una señal senoidal.<br>
> ><br>
> > Sin embargo, luego de buscar varias formas de hacerlo con software,<br>
> > creo que lo más facil sera hacerlo con hardware. Con algun generador<br>
> > de señales :)<br>
> ><br>
> ><br>
> ><br>
> ><br>
> > El 21 de marzo de 2017, 22:30, Ricardo Cárdenes<br>
> > <<a href="mailto:ricardo.cardenes@gmail.com">ricardo.cardenes@gmail.com</a><br>
> <mailto:<a href="mailto:ricardo.cardenes@gmail.com">ricardo.cardenes@<wbr>gmail.com</a>><br>
</span>> <mailto:<a href="mailto:ricardo.cardenes@gmail.com">ricardo.cardenes@<wbr>gmail.com</a> <mailto:<a href="mailto:ricardo.cardenes@gmail.com">ricardo.cardenes@<wbr>gmail.com</a>>>><br>
<span class="">> > escribió:<br>
> ><br>
> > Según la presentación del problema, es un ciclo de: "imprimir<br>
> > 0", "esperar T0 segundos", "imprimir 1", "esperar T1 segundos"<br>
> ><br>
> > 2017-03-21 10:07 GMT-10:00 Carlos Zuniga <<a href="mailto:carlos.zun@gmail.com">carlos.zun@gmail.com</a> <mailto:<a href="mailto:carlos.zun@gmail.com">carlos.zun@gmail.com</a>><br>
</span>> > <mailto:<a href="mailto:carlos.zun@gmail.com">carlos.zun@gmail.com</a> <mailto:<a href="mailto:carlos.zun@gmail.com">carlos.zun@gmail.com</a>>><wbr>>:<br>
<span class="">> ><br>
> > 2017-03-20 23:05 GMT-05:00 Rolando Paz <<a href="mailto:flxpaz@gmail.com">flxpaz@gmail.com</a> <mailto:<a href="mailto:flxpaz@gmail.com">flxpaz@gmail.com</a>><br>
</span>> > <mailto:<a href="mailto:flxpaz@gmail.com">flxpaz@gmail.com</a> <mailto:<a href="mailto:flxpaz@gmail.com">flxpaz@gmail.com</a>>>>:<br>
<div><div class="h5">> > > Hola a todos de nuevo...<br>
> > ><br>
> > > Ahora regreso con un pequeño código:<br>
> > ><br>
> > > import time<br>
> > ><br>
> > > start_time = time.time()<br>
> > > #tiempo total en segundos, como ejemplo 10.<br>
> > > tiempo_total = 10<br>
> > > #numero de conmutaciones generadas, como ejemplo 4.<br>
> > > conmutaciones = 4<br>
> > > for offset in range(tiempo_total):<br>
> > > while (time.time() - start_time) < offset:<br>
> > > time.sleep(0.01)<br>
> > > #lo siguiente realiza una conmutacion entre<br>
> 0 y 1.<br>
> > > count = 0<br>
> > > for i in range(conmutaciones):<br>
> > > count = (count + 1) % 2<br>
> > > print count<br>
> > ><br>
> > > Lo que hace este código es conmutar entre 0 y 1, tantas<br>
> > veces como se defina<br>
> > > en "conmutaciones", durante el tiempo establecido en<br>
> > "tiempo_total".<br>
> > ><br>
> > > La salida es la siguiente.<br>
> > ><br>
> > > 0<br>
> > > 1<br>
> > > 0<br>
> > > 1<br>
> > ><br>
> > > Estoy tratando de entender cómo usar este código para<br>
> > controlar los tiempos<br>
> > > que se definen en la imagen adjunta, es decir:<br>
> > ><br>
> > > T1 = tiempo durante el cual la conmutacion es 1<br>
> > > T0 = tiempo durante el cual la conmutacion es 0<br>
> > > Tiempo Total = tiempo total de las conmutaciones<br>
> > ><br>
> > > Agradecería cualquier comentario sobre como poder<br>
> > controlar los tiempos<br>
> > > anteriores.<br>
> > ><br>
> ><br>
> > Tu intención es que espere un tiempo tras cada print<br>
> de 0 o<br>
> > 1? o que<br>
> > imprima 0/1 4 veces y luego esperar?<br>
> ><br>
> > import time<br>
> > from itertools import cycle<br>
> > conmutador = cycle((0,1))<br>
> ><br>
> > tiempo_total = 10<br>
> > conmutaciones = 4<br>
> ><br>
> > start = time.time()<br>
> > end = start + tiempo_total<br>
> > time_per_pulse = tiempo_total / conmutaciones<br>
> > while end > time.time():<br>
> > pulse_start = time.time()<br>
> > print(next(conmutador))<br>
> > pulse_end = time.time()<br>
> > time.sleep(time_per_pulse - (pulse_end -<br>
> pulse_start))<br>
> ><br>
> ><br>
> > Ahora, time.sleep no es exacto, el tiempo va a ser<br>
> > normalmente mayor<br>
> > al que especificas, depende del sistema. También hay<br>
> > threading.Event.wait que puede ser más exacto.<br>
> ><br>
> ><br>
> > Saludos<br>
> > ______________________________<wbr>_________________<br>
> > Python-es mailing list<br>
> > <a href="mailto:Python-es@python.org">Python-es@python.org</a> <mailto:<a href="mailto:Python-es@python.org">Python-es@python.org</a>><br>
</div></div>> <mailto:<a href="mailto:Python-es@python.org">Python-es@python.org</a> <mailto:<a href="mailto:Python-es@python.org">Python-es@python.org</a>>><br>
<span class="">> > <a href="https://mail.python.org/mailman/listinfo/python-es" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/python-es</a><br>
> <<a href="https://mail.python.org/mailman/listinfo/python-es" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/python-es</a>><br>
> > <<a href="https://mail.python.org/mailman/listinfo/python-es" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/python-es</a><br>
> <<a href="https://mail.python.org/mailman/listinfo/python-es" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/python-es</a>>><br>
> ><br>
> ><br>
> ><br>
> > ______________________________<wbr>_________________<br>
> > Python-es mailing list<br>
> > <a href="mailto:Python-es@python.org">Python-es@python.org</a> <mailto:<a href="mailto:Python-es@python.org">Python-es@python.org</a>><br>
</span>> <mailto:<a href="mailto:Python-es@python.org">Python-es@python.org</a> <mailto:<a href="mailto:Python-es@python.org">Python-es@python.org</a>>><br>
<span class="">> > <a href="https://mail.python.org/mailman/listinfo/python-es" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/python-es</a><br>
> <<a href="https://mail.python.org/mailman/listinfo/python-es" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/python-es</a>><br>
> > <<a href="https://mail.python.org/mailman/listinfo/python-es" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/python-es</a><br>
> <<a href="https://mail.python.org/mailman/listinfo/python-es" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/python-es</a>>><br>
> ><br>
> ><br>
> ><br>
> > ______________________________<wbr>_________________<br>
> > Python-es mailing list<br>
> > <a href="mailto:Python-es@python.org">Python-es@python.org</a> <mailto:<a href="mailto:Python-es@python.org">Python-es@python.org</a>><br>
</span>> <mailto:<a href="mailto:Python-es@python.org">Python-es@python.org</a> <mailto:<a href="mailto:Python-es@python.org">Python-es@python.org</a>>><br>
<div class="HOEnZb"><div class="h5">> > <a href="https://mail.python.org/mailman/listinfo/python-es" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/python-es</a><br>
> <<a href="https://mail.python.org/mailman/listinfo/python-es" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/python-es</a>><br>
> > <<a href="https://mail.python.org/mailman/listinfo/python-es" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/python-es</a><br>
> <<a href="https://mail.python.org/mailman/listinfo/python-es" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/python-es</a>>><br>
> ><br>
> ><br>
> ><br>
> ><br>
> > ______________________________<wbr>_________________<br>
> > Python-es mailing list<br>
> > <a href="mailto:Python-es@python.org">Python-es@python.org</a> <mailto:<a href="mailto:Python-es@python.org">Python-es@python.org</a>><br>
> > <a href="https://mail.python.org/mailman/listinfo/python-es" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/python-es</a><br>
> <<a href="https://mail.python.org/mailman/listinfo/python-es" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/python-es</a>><br>
> ><br>
> ______________________________<wbr>_________________<br>
> Python-es mailing list<br>
> <a href="mailto:Python-es@python.org">Python-es@python.org</a> <mailto:<a href="mailto:Python-es@python.org">Python-es@python.org</a>><br>
> <a href="https://mail.python.org/mailman/listinfo/python-es" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/python-es</a><br>
> <<a href="https://mail.python.org/mailman/listinfo/python-es" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/python-es</a>><br>
><br>
><br>
><br>
><br>
> ______________________________<wbr>_________________<br>
> Python-es mailing list<br>
> <a href="mailto:Python-es@python.org">Python-es@python.org</a><br>
> <a href="https://mail.python.org/mailman/listinfo/python-es" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/python-es</a><br>
><br>
______________________________<wbr>_________________<br>
Python-es mailing list<br>
<a href="mailto:Python-es@python.org">Python-es@python.org</a><br>
<a href="https://mail.python.org/mailman/listinfo/python-es" rel="noreferrer" target="_blank">https://mail.python.org/<wbr>mailman/listinfo/python-es</a><br>
</div></div></blockquote></div><br></div>