Multitarea apropiativa o “preemptive multitasking” para Arduino UNO

Hola:

Soy nuevo en el foro y este es mi primer mensaje.

Hace algún tiempo hice una multitarea para manejar 5 motores de un brazo robot con un Arduino UNO. Lo he probado bastante y me funciona bien, pero no tengo otras tarjetas de Arduino y no se para cuantas funcionaria, o si solo funciona para la UNO. Si a alguien le interesa probarla, adjunto un comprimido con la librería y con un PDF explicativo. El código también esta explicado.

La he probado con librerías como Servo, Lcd, Serial, con delay(), milis(), etc. y no he encontrado ningún problema. Lo mas difícil que encuentro es darle la memoria justa para poder arrancar el máximo de tareas.

Agradecería me comunicarais los errores que encontréis, para solucionarlos.

Gracias.

SwapTask.zip (158 KB)

Yo te felicito. Fui uno de mis trabajos finales en ingeniería.

Por otro lado ten en cuenta que no debes hacer doble post (hay dos post de este mismo tema).
Asi que lee las normas del foro.

Tu librería es similar a FREERTOS para Arduino. Buscala y mira las similitudes y diferencias.

Lo siento, es que al adjuntar un tar.gz el editor me dio un error y envió el post y se ha enviado 2 veces, uno cuando me ha dado el error y otro cuando he enviado el zip.

Ahora me estoy bajando el freertos.

Gracias

Hola:

Ya he comparado códigos con FreeRTOS y aparte de lo estrictamente necesario como salvar el contexto (recomendación de avrlibc), la tabla de tareas (Tanenbaum, Stallings, etc) o el intercambio de pila (arquitectura Harvard), los códigos no se parecen en nada. FreeRTOS es mas pesada, utiliza su propia malloc(), su propio delay(), utiliza comunicación entre procesos y mas. La filosofía de un microcontrolador no es la misma que la de un microprocesador. Un microcontrolador tiende a ser un sistema dedicado mientras que un microprocesador es mas general, y en los sistemas dedicados se tiende a quitar los innecesario (Allan Burns y Andy Wellings).

Saludos.

Bueno habla bien de tu librería y tu trabajo. Intenta que lo vea la gente del foro en inglés para que le den categoría de librería para arduino.
Osimplemente preséntalo en el subforo en inglés que corresponda y verás como tienes una catarata de gente que te hará buenas preguntas.