Catto / Mapa de Temas · Técnicas Digitales II 4to nivel
Técnicas Digitales II · 120 h · Contenido 4 de 6

Hardware y software de sistemas embebidos

Un sensor que duerme a 2 µA dura más de dos años con una pila CR2032. Si un periférico queda encendido y el reposo sube a 50 µA, la misma pila dura cuatro meses.

Microcontrolador Código de arranque Interrupciones Bajo consumo Watchdog

01Una computadora que nadie ve

Un sistema embebido es una computadora dedicada a una tarea dentro de un producto: el control de un lavarropas, la unidad de un airbag, un medidor de gas, un marcapasos. No se ve como computadora y casi nunca se reprograma, pero tiene procesador, memoria, periféricos y software. Lo que lo distingue es el conjunto de restricciones: costo por unidad, consumo, tamaño, tiempos de respuesta garantizados y años de funcionamiento sin que nadie lo reinicie.

La tecnicatura presenta las familias de microcontroladores, sus periféricos y las interrupciones. Acá se ve cómo se diseña el sistema completo.

02El hardware

BloqueQué hay que decidir
ProcesadorMicrocontrolador, procesador con sistema operativo o FPGA, según la carga y el costo
MemoriaFlash para el programa y SRAM para los datos, con margen para actualizaciones
RelojOscilador RC interno (barato, ±1 %) o cristal (±20 ppm, necesario para USB, CAN o un reloj de hora)
AlimentaciónRegulador lineal o conmutado, supervisión de tensión (brown-out) y secuencia de encendido
Reset y vigilanciaCircuito de reset confiable y perro guardián (watchdog) que reinicia si el software se cuelga
Entradas y salidasProtección contra descargas y sobretensiones en todo lo que sale de la placa
PlataformaCuándo conviene
Microcontrolador (Cortex-M, AVR, RISC-V)Control y adquisición con tiempos garantizados, consumo de microamperes en reposo
Procesador de aplicaciones con LinuxInterfaz gráfica, redes complejas, gigabytes de memoria; arranque de segundos
FPGA o SoC con FPGAProcesamiento paralelo a velocidades que el software no alcanza

03El software

El programa de un microcontrolador arranca sin sistema operativo que lo prepare. El código de arranque ubica la tabla de vectores, inicializa la pila, copia las variables inicializadas de la flash a la RAM, pone en cero las demás y recién entonces llama a main. De ahí en más hay tres estructuras posibles:

EstructuraCómo funcionaLímite
Lazo principalUn while(1) que consulta y atiende todo en ordenEl tiempo de respuesta es la duración de la vuelta completa
Primer plano y fondoLas interrupciones atienden lo urgente y dejan marcas; el lazo principal hace el restoLas rutinas de interrupción tienen que ser cortas y compartir datos con cuidado
Sistema operativo de tiempo realTareas independientes con prioridades y un planificadorMás memoria y complejidad; se ve en la unidad de RTOS

Encima del hardware se organiza el código en capas: controladores que conocen los registros, una capa de abstracción (HAL) que los esconde y la aplicación, que no debería saber en qué microcontrolador corre. Dos detalles del lenguaje C se vuelven críticos: volatile en toda variable que modifica una interrupción o el hardware, para que el compilador no la guarde en un registro, y el acceso atómico a los datos compartidos entre una interrupción y el lazo principal.

04Consumo y batería

Un nodo con batería pasa casi todo el tiempo dormido: despierta, mide, a veces transmite y vuelve a dormir. La corriente promedio es la carga de cada estado dividida por el período:

\[ \bar I = \frac{I_{act}\, t_{act} + I_{rad}\, t_{rad} + I_{dor}\, t_{dor}}{T} \] \[ t_{vida} = \frac{0{,}8\; C}{\bar I + I_{auto}} \] \( C \) es la capacidad de la batería, de la que conviene contar solo el 80 %, e \( I_{auto} \) es la autodescarga expresada como corriente. Con despertares cortos, lo que decide la vida es la corriente de reposo: 2 µA contra 50 µA es la diferencia entre años y meses.
Laboratorio · cuánto dura la batería de un sensor

Un microcontrolador que despierta periódicamente, mide durante 10 ms a 5 mA y cada tanto transmite por radio durante 5 ms a 20 mA. La barra reparte la carga consumida entre los estados; el gráfico de abajo muestra la forma de la corriente, con la escala de tiempo deformada para que los pulsos se vean.

05Desarrollo, depuración y confiabilidad

El programa se compila en una computadora para otro procesador (compilación cruzada) y se graba y depura a través de una interfaz JTAG o SWD, que permite detener el procesador, recorrer el código paso a paso y leer la memoria sin modificar el programa. Para los problemas de tiempos, el osciloscopio y el analizador lógico son tan necesarios como el depurador: un pin que cambia al entrar y salir de una interrupción mide su duración real.

Un sistema que tiene que funcionar años sin atención se diseña para fallar bien: el perro guardián reinicia un programa colgado, la supervisión de tensión evita que corra con alimentación insuficiente, las actualizaciones remotas tienen una imagen de respaldo, y las guías de codificación como MISRA C restringen las construcciones del lenguaje más propensas a errores.

06En el laboratorio

Actividad 1 · Medir el consumo real

Con una resistencia de 10 Ω en serie con la alimentación de un microcontrolador y un osciloscopio, medir la corriente en reposo y durante los despertares. Calcular la vida de una CR2032 y compararla con el laboratorio.

Actividad 2 · Duración de una interrupción

Poner un pin en alto al entrar a una rutina de interrupción y en bajo al salir, y medir con el osciloscopio su duración y su variación.

Actividad 3 · El perro guardián

Habilitar el watchdog, provocar un lazo infinito a propósito y verificar que el sistema se reinicia y registra la causa del reinicio.

07Errores frecuentes

  • Olvidar volatile. El compilador optimiza la lectura de una bandera y el lazo nunca ve el cambio que hizo la interrupción.
  • Rutinas de interrupción largas. Retrasan a todas las demás; la interrupción marca y el lazo procesa.
  • Dejar un periférico encendido en reposo. Un conversor o un pin flotante pueden multiplicar por veinte la corriente de reposo.
  • Desactivar el watchdog para depurar y no volver a activarlo.

08Autoevaluación

Un sensor consume 3 µA de promedio. ¿Cuánto dura una CR2032 de 225 mAh, usando el 80 %?

\( 180\ \text{mAh} / 3\ \mu\text{A} = 60\,000 \) h, casi 7 años, sin contar la autodescarga.

¿Qué carga consume un despertar de 10 ms a 5 mA?

50 µC, o 0,0139 µAh.

¿Por qué una variable modificada en una interrupción se declara volatile?

Para que el compilador la lea de la memoria cada vez, en lugar de suponer que no cambió desde la última lectura.

¿Cuándo hace falta un cristal en lugar del oscilador RC interno?

Cuando se necesita exactitud de frecuencia: comunicaciones como USB o CAN, un reloj de hora o mediciones de tiempo precisas.

09Para ampliar

  • Elecia White. Making Embedded Systems. 2.ª ed., O'Reilly, 2024. El diseño de sistemas embebidos desde la arquitectura del software hasta el consumo, con mucha experiencia práctica.
  • Joseph Yiu. The Definitive Guide to ARM Cortex-M3 and Cortex-M4 Processors. 3.ª ed., Newnes, 2014. El procesador de casi todos los microcontroladores actuales, con el arranque, las interrupciones y los modos de bajo consumo.
  • Jack Ganssle. The Art of Designing Embedded Systems. 2.ª ed., Newnes, 2008. Cómo se organiza un proyecto embebido para que funcione y se pueda mantener.
Desarrollo del contenido «Hardware y software de sistemas embebidos» de Técnicas Digitales II (cuarto nivel), según el diseño curricular de Ingeniería Electrónica, Plan 2023 — Ordenanza N° 1849 del Consejo Superior de la UTN. Volver al Mapa de Temas · catto.ar