Introducción a la multitarea en Arduino | Blog de Arduino


Introducción a la multitarea en Arduino

Alessandro Ranellucci — 2 de agosto de 2022

Con las mayores capacidades de Arduino y otras placas de microcontroladores, incluidos relojes más rápidos o incluso múltiples núcleos, la necesidad de administrar múltiples tareas simultáneamente ocurre con más frecuencia que en el pasado. Por ejemplo, a menudo desea controlar motores, actualizar una pantalla y detectar interacciones de usuarios al mismo tiempo, o realizar tareas que tienen tiempos diferentes o esperar eventos externos.

La forma tradicional de hacer esto es escribir código sin bloqueo para que la función loop() pueda ejecutarse lo más rápido posible, actualizando las variables de estado y llamando a la función millis() para garantizar la sincronización correcta (ver el “Parpadea sin demora” ejemplo para más información). Este enfoque, sin embargo, conduce a un código inflado que es difícil de depurar y mantener, y además no admite varios núcleos.

los Biblioteca de planificadores ya hace posible escribir código de una manera más limpia al dividir el boceto en múltiples funciones de bucle, para que cada una pueda enfocarse en una tarea específica. Sin embargo, este enfoque se denomina multitarea cooperativa, lo que significa que siempre debe evitar bloquear los comandos usted mismo. Además, no admite múltiples núcleos e incluso si lo hiciera, no le impide acceder a las mismas variables desde múltiples subprocesos. Finalmente, se basa en el paradigma tradicional de “bucle ocupado”, que realmente no ayuda a las aplicaciones de bajo consumo en las que desea que los subprocesos descansen tanto como sea posible mientras esperan un evento o datos entrantes.

¿Cómo agregar multitarea a Arduino?

La meta es definir una API estandarizada que se puede portar a todas las arquitecturas y que, de acuerdo con la filosofía Arduino, hará que las cosas complejas sean fáciles para todos. La multitarea es un concepto difícil, por lo que tenemos mucho espacio aquí para traer el enfoque de Arduino para que sea accesible para todos.

Pedimos a nuestra comunidad técnica que unirse a la discusión en GitHub, y también compartimos nuestra propuesta de API junto con una implementación completamente funcional. ¡Háganos saber sus pensamientos y trabajemos juntos para finalizar esta nueva característica!

Esta discusión comunitaria está alojada en el nuevo punto de referenciaque es el nuevo hogar para la evolución del lenguaje Arduino.

Puede seguir cualquier respuesta a esta entrada a través de la fuente RSS 2.0. Puedes deja una respuestao trackback desde su propio sitio.

Contenido original en Inglés


Leave a Reply

Your email address will not be published. Required fields are marked *