Go Down

Topic: Multi tarea en arduino (Read 3 times) previous topic - next topic

Igor R

#5
Feb 11, 2011, 10:57 pm Last Edit: Feb 11, 2011, 11:03 pm by Igor R Reason: 1
Hay que reconocer que si es cierto lo que dice RoAcHmx que un procesador solo puede ir haciendo secuencialmente una cosa detras de otra.
Pero hay que recordar, que no tenemos un procesador simplemente. Dicho procesador dispone de modulos independientes. Como son el ADC, UART, TIMERS, ...
Por lo que tu procesador puede estar haciendo una unica tarea, pero los otros modulos seguir haciendo otras. Y un porcentaje muy grande de tiempo, son dichos modulos los que estan haciendo el "trabajo duro" y el procesador esta de "siesta".

Por otro lado, todo esto es para cumplir un control en "tiempo real", que es algo que es dependiente del proceso a controlar.  Si tengo que controlar la temperatura de una habitacion con un calefactor, mira si tengo minutos para seguir haciendo otras cosas antes de tener que "actuar" sobre el sistema. Es decir, estoy haciendo "multiples" tareas....

Ya dije, que no era una pregunta "sencilla"     XD XD XD



;)

yawin

Pensaba que era sencillo de entender lo que preguntaba, asi que reexplicaré mi problema:

Lo que yo quiero es tener dos procesos que se ejecuten simultáneamente. El primero, que acceda a una matriz global que guarda el estado de los leds (si está encendido o no, y su color) y refresque la matriz de leds conforme a esa array. El segundo, controlará la animación que quiero ejecutar.

¿Hay alguna forma de hacerlo en procesos separados, o tengo que montármelo para que funcione todo en el mismo bucle?

Igor R

#7
Feb 13, 2011, 12:30 am Last Edit: Feb 13, 2011, 12:48 am by Igor R Reason: 1
Claro que es sencillo de entender....si no te satisfacen los post anteriores, entonces la respuesta a tu pregunta supongo que es "NO" se puede....

;)



Nota.- Si hay forma de hacerlo en procesos separados. Procesos separados != Procesos paralelos.
Puedes usar un timer para que controle el flujo de tu programa, que vaya haciendo cada vez parte de cada proceso y asi sea un "pseudoparalelo" (para entendernos).

yawin

Me temo que no entiendo esa nota. Sería algo así como: Si marca par me haces una cosa, si marca impar me haces otra. Algo así?

Igor R

#9
Feb 13, 2011, 01:03 am Last Edit: Feb 13, 2011, 01:10 am by Igor R Reason: 1
Para entendernos, se pueden hacer dos,tres,cuatro,.... tareas/procesos paralelos.
Todo depende del "refresco" que necesite cada una para cumplir dichas tareas en los tiempos apropiados (como bien dijo pacojarcia).

Que el micro haga una intrucción cada vez, no significa que no sea suficientemente rápido como para poder llevar acabo diferentes tareas. (esto solo hablando de micro, sin entrar en los otros modulos de los que dispone un microcontrolador).

Lo que no existe un comando como en un lenguaje en alto nivel que se encargue de hacer eso por ti, simplemente lanzando diferentes threads. Ten en cuenta que estas trabajando a muy bajo nivel, aunque el lenguaje Arduino haga la vida más sencilla.

Para entender ésto, intenta hacer un programa sencillo: Mediante comandos de digitalWrite ir conmutando dos pines de arduino a on/off a diferentes frecuencias. Asi entenderás la problemática (ya te aviso, que el típico error es usar al función delay()=parar el micro ).
Es decir, trata de sacar esto por dos pines:





;)



Truco.- Función millis()

Go Up