• electronica-2

Raspberry Pi en Tiempo Real

August 03, 2012

Vía BricoGeek me llega este fantástica prueba de comparación de Raspberry Pi con Arduino y la combinación definitiva que puede resultar de su unión. Realmente la respuesta de los pines del RasPi es bastante mala por los problemas que comenta Radical Desig. ¿Entonces debemos resignarnos a no utilizar los pines GPIO más que para encender y apagar algún mísero LED?

Arduino y Raspberri Pi

Pues no, si están ahí es para usarlos y podemos encontrar soluciones para los problemas que encontremos, que por otra parte no son problemas nuevos y se solucionaron hace tiempo, veamos como lo podemos solucionar:

  • Nunca utilizar lenguajes interpretados para realizar tareas de control: esto sirve para cualquier plataforma, los lenguajes interpretados no son nada fiables además de su lentitud natural.
  • Utilizar un kernel RT: El nucleo de Linux típico no está preparado para realizar este tipo de tareas, el cambio de una tarea a otra se hace en un tiempo muy grande para estos sistemas. Los kernels en tiempo real acortan este tiempo para que los hilos que lo necesiten puedan ejecutarse en el momento justo. Esta es una solución muy utilizada en producción musical para utilizar el puerto MIDI en un PC, reduciendo su latencia al máximo.
  • Utilizar un lenguaje con acceso a bajo nivel: Si utilizamos un lenguaje que nos permita acceder directamente al hardware y que se encargue el mismo de realizar la planificación de las tareas y la elección de prioridad, podremos conseguir resultados mucho mejores. Un ejemplo de estos lenguajes es Ada, diseñado expresamente para sistemas en tiempo real.

Si después de aplicar estas medidas nuestro problema aun no está resuelto podemos descartar el uso de los puertos GPIO e incorporarle a nuestro Raspberry Pi un Arduino o lo que queramos, pero conviene mirar antes estas soluciones para ahorrarnos unos cuantos euros.


Profile picture

Carlos Sanmartín Bustos

Desarrollador de software embebido comprometido con el software libre. Progresista y antiautoritario.