Fallos del microcontrolador: Por qué ocurren y cómo prevenirlos

“Anything that can go wrong will go wrong” written on a whiteboard

Debo gran parte del éxito de mi diseño a mi universidad. Y no solamente porque durante los experimentos de laboratorio aprendimos cosas como qué puede hacer explotar accidentalmente un condensador, sino porque nos ayudó a darnos cuenta de que la Ley de Murphy puede entrar en acción cuando menos te lo esperas. Tras haber pasado mucho tiempo jugando a Warcraft y batallando por acabar a tiempo un sinfín de tareas, siempre he confiado en que mi ordenador funcione en todo momento.

En aquel entonces, los ordenadores eran bastante limitados y no era poco común ver la infame ventana emergente de Windows, "la pantalla azul de la muerte", hacer acto de presencia de vez en cuando. Aunque es frustrante que te interrumpan una partida de Warcraft, lo que realmente me hacía entrar en ataque pánico era perder horas dedicadas a hacer trabajos que no se habían guardado a causa de un colapso del sistema. Como diseñador, es muy probable que hayas experimentado el mismo pánico similar cuando tu microcontrolador se bloquea en mitad de un trabajo.

Cómo afectan los modos de fallo del microcontrolador al sistema

En un sistema integrado, los fallos de los microcontroladores (MCU) pueden tener repercusiones que van más allá que el incumplimiento del plazo de entrega de una tarea. Los MCU son a menudo el núcleo de aplicaciones como máquinas de pago, dispositivos médicos y sistemas de seguridad,  sistemas que exigen una alta estabilidad y con frecuencia tienen baja tolerancia a fallos del sistema.

Y es que una falla en un MCU puede ocasionar una parada completa del servicio, lo que puede causar problemas a los usuarios o plantear riesgos de seguridad en aplicaciones críticas. Para los clientes, los sistemas poco fiables afectan a su capacidad operativa y pueden causar pérdidas de ingresos, mientras que  para los diseñadores, el hecho de que muchos de nuestros productos presenten fallos constantemente es un gran golpe para nuestro orgullo y puede afectar a nuestra reputación.

Businesspeople blaming frustrated colleague

Señalar con el dedo no sirve para nada cuando un microcontrolador falla.

¿Por qué falla un microcontrolador y quién debería hacerse responsable?

Para que un sistema integrado sea fiable se requiere un esfuerzo conjunto tanto por parte del diseñador de hardware como del programador de firmware. Algunos errores de diseño pueden pasar desapercibidos durante la fase de desarrollo y no se asoman como fallos hasta que el sistema ya se ha implementado. Cuando esto ocurre, ¿quién debe asumir la mayor parte de las responsabilidades? 

Antes de empezar a señalar con el dedo, echemos un vistazo a las razones comunes que pueden hacer que los microcontroladores fallen.

1. Desbordamiento de la pila de memoria

La pila de memoria del microcontrolador es un área designada de su RAM interna que se utiliza para uso temporal. Su tamaño es limitado y varía según los diferentes MCU. Cuando el programador de firmware asigna una variable mayor que el tamaño de la pila, puede tener lugar un desbordamiento de la pila durante el tiempo de ejecución y causar que el firmware falle.

2. Punteros

En la programación del firmware de MCU, se utiliza a menudo un puntero para indicar la dirección de una variable o de las funciones del programa. La declaración y el uso de punteros requiere que el programador del firmware se adhiera a la sintaxis estricta definida por el lenguaje de programación, a menudo en C. Introducir por error un puntero ilegal puede hacer que el MCU intente procesar variables o funciones en direcciones que están fuera de su rango válido. Esto podría causar un bloqueo del MCU.

3. Fuente de voltaje inestable

Este es un factor que con frecuencia se pasa por alto. Un MCU necesita una fuente de alimentación estable para funcionar de manera correctamente. El MCU podría fallar cuando su fuente de alimentación se ve constantemente interrumpida por interferencias externas. De echo, una caída en el voltaje operativo puede causar que un MCU se comporte de manera inestable o se bloquee del todo.

4. Interferencias eléctricas

No gestionar las interferencias eléctricas, especialmente las inducidas por relés y motores, puede ocasionar un bloqueo del MCU. Durante uno de mis primeros proyectos de conducción de un motor de corriente continua simple, mi MCU se bloqueaba cada vez que intentaba cambiar el sentido del motor. Este problema se resolvió aumentando su aislamiento eléctrico con un amplificador operacional.

5. Procesos de ensamblaje deficientes

En determinadas ocasiones, una falla de un microcontrolador no tiene nada que ver ni con el hardware ni con el firmware. Las soldaduras de baja calidad de los pines del MCU pueden provocar comportamientos impredecibles del MCU. Si sólo fallan algunos de sus sistemas integrados, quizás sería conveniente investigar la calidad del proceso del fabricante.

Microchip production factory

Tu diseño es tan bueno como el ensamblaje de tu PCB.

En lugar de jugar a buscar culpables, tanto los ingenieros de hardware como los de firmware deben cumplir con su parte en el diseño de un sistema integrado fiable. Llevar a cabo una buena ética de programación y planificar la asignación de memoria de antemano son las mejores prácticas a seguir. En el caso de los programadores, simplificar las cosas puede ser una buena opción para minimizar los códigos de error.

Por su parte, los diseñadores de hardware deben tener en cuenta el entorno en el que se utilizará el hardware y prever todos los escenarios posibles. Es conveniente que se apegue a las mejores prácticas básicas de diseño y que saque el máximo provecho a las herramientas de su software de PCB para poner a prueba se diseño. CircuitStudio de Altium, construido con la tecnología de Altium Designer, te brinda las herramientas para diseñar PCB profesionales.

Ponte en contacto con un experto de Altium para entender por qué tu microcontrolador falla.

Acerca del autor

Altium Designer

PCB Design Tools for Electronics Design and DFM. Information for EDA Leaders.

Visitar sitio web Más contenido por Altium Designer
Artículo anterior
Uso de plantillas de proyecto para el desarrollo del diseño de PCB
Uso de plantillas de proyecto para el desarrollo del diseño de PCB

El uso de plantillas de proyectos para el diseño de PCB en Altium Designer te ayudan a incrementar tu efici...

Artículo siguiente
Las baterías de fosfato de hierro y litio frente a las de ion de litio para sistemas integrados
Las baterías de fosfato de hierro y litio frente a las de ion de litio para sistemas integrados

Puede ser difícil elegir la batería perfecta para tu PCB. Este blog puede ayudarle a decidir entre baterías...