Hacer dos cosas simultaneas
hola todos! no sé si esta duda que tengo es demasiado básica pero no logré encontrar nada en internet. espero que me puedan ayudar 
necesito hacer una programación simultánea. es decir que no sea lineal, sino que se realicen cosas independientes al mismo tiempo. el principal problema con esto es el tema de los delays.
por ejemplo si quiero que siempre un led se apague y prenda cada 2 segundos y aparte hacer cualquier otra cosa que involucre tiempo, como leer un sensor y en base eso prender/apagar un segundo led.(después de un determinado tiempo) no sé si me explico de buena manera.
saludos.

necesito hacer una programación simultánea. es decir que no sea lineal, sino que se realicen cosas independientes al mismo tiempo. el principal problema con esto es el tema de los delays.
por ejemplo si quiero que siempre un led se apague y prenda cada 2 segundos y aparte hacer cualquier otra cosa que involucre tiempo, como leer un sensor y en base eso prender/apagar un segundo led.(después de un determinado tiempo) no sé si me explico de buena manera.
saludos.
para hacer eso tienes que usar una técnica denominada timeslice
la tecnica es muy simple. como no se puede hacer lo que tu pretendes se engaña al cpu haciendo que atienda muchas tareas pero en intervalos de tiempo cortos.
supongamos que tienes tres tareas, pero la ejecución de ellas se realiza en forma secuencial intervalos de 1mseg.
de modo que como dije t1, t1 t3 son las tareas.
para ellos usas un timer que generará una interrupción cada 1 mseg. también un taskcounter o contadordetareas que llevará el control de la tarea ejecutar. cada 1 mseg se genera una interrupción, se incrementa el contador de tareas y se salta la tarea correspondiente indicada x taskcounter. asi puedes realizar 3 tareas aparentemente simultáneas pero en realidad ya viste que no lo son.
yo sugerí 1 mseg porque es lo que usaba con los avr de atmel pero el tiempo hay que balancearlo para que sea el correcto.
eso implica reescribir algunas cosas como los delays (no puede usarse porque ), y otras cuestiones mas complejas que el simple ejemplo anterior.
disiento ahora contigo en que no hayas podido encontrar tu problema en internet.
mira http://forum.arduino.cc/index.php?topic=7546.0
busca siempre en inglés, si no encuentras prueba alemán o italiano. yo no se ninguno de los ultimos pero para eso uso los traductores. incluso en ruso hay cosas excelentes. no hablo de tu problema sino en líneas generales.
la tecnica es muy simple. como no se puede hacer lo que tu pretendes se engaña al cpu haciendo que atienda muchas tareas pero en intervalos de tiempo cortos.
supongamos que tienes tres tareas, pero la ejecución de ellas se realiza en forma secuencial intervalos de 1mseg.
de modo que como dije t1, t1 t3 son las tareas.
para ellos usas un timer que generará una interrupción cada 1 mseg. también un taskcounter o contadordetareas que llevará el control de la tarea ejecutar. cada 1 mseg se genera una interrupción, se incrementa el contador de tareas y se salta la tarea correspondiente indicada x taskcounter. asi puedes realizar 3 tareas aparentemente simultáneas pero en realidad ya viste que no lo son.
yo sugerí 1 mseg porque es lo que usaba con los avr de atmel pero el tiempo hay que balancearlo para que sea el correcto.
eso implica reescribir algunas cosas como los delays (no puede usarse porque ), y otras cuestiones mas complejas que el simple ejemplo anterior.
disiento ahora contigo en que no hayas podido encontrar tu problema en internet.
mira http://forum.arduino.cc/index.php?topic=7546.0
busca siempre en inglés, si no encuentras prueba alemán o italiano. yo no se ninguno de los ultimos pero para eso uso los traductores. incluso en ruso hay cosas excelentes. no hablo de tu problema sino en líneas generales.
Arduino Forum > International > Español > Software (Moderators: surbyte, Hector_A) > Hacer dos cosas simultaneas
arduino
Comments
Post a Comment