<div dir="ltr">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.<div><br></div><div>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.</div></div><div class="gmail_extra"><br><div class="gmail_quote">2017-03-22 21:39 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">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>
<span class="">> 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><br>
</span>> <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>
</span>> <<a href="mailto:ricardo.cardenes@gmail.com">ricardo.cardenes@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><br>
</span>> <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><br>
</span>> <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 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 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 - 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>
</div></div>> <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>
<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>
><br>
><br>
><br>
> ______________________________<wbr>_________________<br>
> Python-es mailing list<br>
</span>> <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>
<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>
><br>
><br>
><br>
> ______________________________<wbr>_________________<br>
> Python-es mailing list<br>
</span>> <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>
<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>
><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>