Catto / Mapa de Temas · Electrónica Digital IV 7° año
Electrónica Digital IV · 120 h · Eje 1 de 6

Otras familias de microcontroladores

Aprender un microcontrolador sirve; entender en qué se parecen todos sirve mucho más. Este eje sale de la familia con la que se empezó y compara arquitecturas, recursos y herramientas, para poder elegir el chip adecuado a cada problema y migrar sin empezar de cero.

Arquitecturas ARM Cortex-M Selección Migración

De dónde se parte

La arquitectura básica, los registros de control, la memoria y los puertos de E/S se desarrollan en familia de microcontroladores, y los periféricos internos en periféricos del microcontrolador. Acá se compara entre familias.

01Las decisiones de arquitectura

DecisiónQué implica
Harvard o von NeumannHarvard tiene buses separados para programa y datos: puede buscar instrucción y dato en el mismo ciclo. Von Neumann usa un solo bus, más simple y más flexible. Casi todos los microcontroladores usan variantes de Harvard.
RISC o CISCRISC: pocas instrucciones, casi todas de un ciclo, y un compilador que las combina. Es lo que usan AVR, PIC y ARM. CISC sobrevive sobre todo en el mundo de las PC.
8, 16 o 32 bitsEl ancho del camino de datos. Con 8 bits, sumar dos variables de 32 bits lleva varias instrucciones; con 32 bits, una. No es sólo velocidad: también cambia cuánta memoria se puede direccionar.
Registros o acumuladorLos AVR y los ARM tienen bancos de registros generales; los PIC clásicos trabajan casi todo contra un acumulador único, lo que obliga a más movimientos.
PipelineSolapa la búsqueda de una instrucción con la ejecución de la anterior. Sube el rendimiento y complica el conteo exacto de ciclos, que en control fino a veces importa.
32 bits ya no es sinónimo de caro

Durante años, elegir 8 bits era la decisión económica. Hoy un ARM Cortex-M0+ cuesta lo mismo o menos que un 8 bits equivalente, con más memoria y periféricos mejores. La razón para seguir usando 8 bits suele ser otra: simplicidad, consumo en reposo muy bajo, disponibilidad y el hecho de que el equipo ya lo conoce.

02Panorama comparado

1101001000AVRATmega328PPIC16F877ASTM32F103ESP32RP2040AVR ATmega328P32 kB flash2 kB RAM16 MHz8 bits. Placas Arduino clasicas: documentacion enorme y comportamiento predecible.PIC 16F877A14 kB flash0,36 kB RAM20 MHz8 bits. Decadas de industria detras y muy buenos perifericos analogicos.STM32 F103128 kB flash20 kB RAM72 MHzARM Cortex-M3 de 32 bits: el estandar industrial actual.ESP324096 kB flash520 kB RAM240 MHzDoble nucleo con WiFi y Bluetooth integrados. La opcion de todo proyecto conectado.RP20402048 kB flash264 kB RAM133 MHzDoble Cortex-M0+ con bloques PIO que generan protocolos por hardware.flashRAMrelojescala logaritmica: cada linea es diez veces mas
Figura 1. Recursos de cinco familias habituales, animado. Las barras están en escala logarítmica: entre el 8 bits clásico y un ESP32 hay dos órdenes de magnitud de diferencia en memoria y velocidad.
FamiliaNúcleoRelojFlash / RAMRasgo distintivo
AVR (ATmega328P)8 bits RISC16 MHz32 kB / 2 kBEl de las placas Arduino clásicas. Documentación enorme y comportamiento muy predecible.
PIC (16F877A)8 bits RISC20 MHz14 kB / 368 BDécadas de industria detrás. Muy robusto, con periféricos analógicos buenos.
ARM Cortex-M (STM32F103)32 bits72 MHz128 kB / 20 kBEl estándar industrial actual. Muchos fabricantes, un mismo núcleo y herramientas compartidas.
ESP3232 bits, doble núcleo240 MHz4 MB / 520 kBTrae WiFi y Bluetooth adentro. Es la opción natural de cualquier proyecto conectado.
RP204032 bits, doble Cortex-M0+133 MHzexterna / 264 kBSus bloques PIO generan protocolos por hardware sin ocupar la CPU.
Lo que no cambia entre familias

Los conceptos son los mismos en todas: puertos de entrada y salida con sus registros de dirección y de dato, temporizadores, interrupciones con su vector y su rutina de atención, conversores A/D, PWM, comunicación serie. Lo que cambia son los nombres de los registros y las herramientas. Por eso quien entendió bien una familia aprende la siguiente en días, no en meses.

03Cómo se elige

CriterioQué preguntar
Periféricos¿Tiene la cantidad de canales A/D, PWM, puertos serie y temporizadores que el proyecto necesita? Es lo primero que descarta candidatos.
MemoriaFlash para el programa y RAM para los datos, con margen. Quedarse sin RAM a mitad de desarrollo obliga a rediseñar.
ConsumoSi funciona a batería, importan los modos de bajo consumo y la corriente en reposo, no la de trabajo.
Conectividad¿Hace falta WiFi, Bluetooth, Ethernet, CAN? Integrarlo sale más barato que agregarlo afuera.
EncapsuladoUn chip sólo disponible en encapsulado de montaje superficial fino puede ser imposible de soldar en el taller.
Disponibilidad y precioEl mejor chip del mundo no sirve si no se consigue en el país o si tiene un año de espera.
Herramientas y comunidadCompilador, depurador, bibliotecas, ejemplos y gente que ya resolvió el mismo problema.
Ejemplo · Elegir para un registrador de temperatura

Requisitos: 4 sensores analógicos, registro en tarjeta de memoria, reloj de tiempo real, pantalla, envío de datos por WiFi una vez por hora y alimentación a batería con panel solar chico.

  • Un 8 bits clásico queda corto: 2 kB de RAM no alcanzan cómodos para manejar tarjeta, pantalla y buffers, y habría que agregar un módulo WiFi externo.
  • Un ESP32 resuelve WiFi, memoria y potencia de cálculo de una sola vez, y su sueño profundo baja el consumo a decenas de microamperes entre transmisiones.
  • Decisión: ESP32, con el detalle de que su conversor A/D es mediocre. Si la precisión de temperatura importa, se agrega un conversor externo por bus serie.

Ese último punto es el tipo de detalle que sólo aparece leyendo la hoja de datos: la decisión no se toma por la marca sino por los números.

04Migrar de una familia a otra

Aplicacionlogica, maquinas de estado, calculosno cambiaCapa de abstraccion (HAL)hal_led(), hal_adc(), hal_espera_ms()misma interfazImplementacion de la capaacceso a los registros del chipse reescribeHardwareel microcontroladorse cambiahal_avr.cPORTB |= (1<<PB5);AVRMigrando a AVRsolo cambian las dos capas de abajohal_stm32.cHAL_GPIO_WritePin(...);STM32Migrando a STM32solo cambian las dos capas de abajoCuanto mas codigo quede por encima de la capa de abstraccion, menos hay que reescribir al cambiar de chip.
Figura 2. Capas de un programa portable, animado. Cuanto más código quede por encima de la capa de abstracción, menos hay que reescribir al cambiar de microcontrolador.
Lo que se porta solo
  • La lógica del programa: máquinas de estado, cálculos, filtrado, decisiones.
  • Los protocolos y los formatos de datos.
  • Todo lo escrito en C estándar sin tocar registros.
Lo que hay que reescribir
  • La configuración de relojes, puertos y periféricos.
  • Las rutinas de atención de interrupción y sus vectores.
  • Cualquier cosa que dependa del conteo exacto de ciclos.
  • El arranque, la tabla de vectores y el mapa de memoria.
/* Capa de abstraccion: la aplicacion nunca toca registros. */
/* hal.h — la misma interfaz para cualquier familia */
void  hal_init(void);
void  hal_led(uint8_t encendido);
uint16_t hal_adc(uint8_t canal);
void  hal_espera_ms(uint16_t ms);

/* hal_avr.c — implementacion para AVR */
void hal_led(uint8_t e) { if (e) PORTB |= (1<<PB5); else PORTB &= ~(1<<PB5); }

/* hal_stm32.c — implementacion para STM32, misma firma */
void hal_led(uint8_t e) { HAL_GPIO_WritePin(GPIOC, GPIO_PIN_13, e ? GPIO_PIN_SET : GPIO_PIN_RESET); }

/* app.c — no cambia una linea al migrar */
while (1) { hal_led(1); hal_espera_ms(500); hal_led(0); hal_espera_ms(500); }
La capa de abstracción se escribe desde el principio

Agregarla después, sobre un programa donde los registros están salpicados por todos lados, cuesta casi tanto como reescribirlo. Separar desde el primer día lo que es lógica de lo que es hardware no cuesta nada y vale muchísimo, incluso si nunca se migra: hace posible probar la lógica en la computadora, sin el chip.

05Herramientas de desarrollo

HerramientaQué hace
Compilador cruzadoCorre en la PC y genera código para el microcontrolador. En la práctica, GCC para AVR, ARM y RISC-V.
Enlazador y script de memoriaDecide dónde va cada cosa: código en flash, variables en RAM, pila. Es lo que más cambia entre familias.
GrabadorEscribe el binario en la flash del chip: ISP en AVR, ICSP en PIC, SWD en ARM, puerto serie en ESP32.
DepuradorDetiene la ejecución, pone puntos de parada y muestra variables y registros en el chip real. Con SWD alcanzan dos pines.
Analizador lógicoMuestra lo que pasa en los pines. Para depurar comunicación serie es más útil que el depurador.
SimuladorPermite probar sin hardware. Sirve para la lógica; nunca reemplaza la prueba en el circuito real.
El «depurador» de la mayoría es un LED

Y funciona, hasta que deja de funcionar. Aprender a usar un depurador de verdad —parar en una línea, mirar variables, avanzar paso a paso— cambia por completo la velocidad para encontrar problemas. Un adaptador SWD cuesta poco y es la mejor inversión del taller después del osciloscopio.

06En el laboratorio

Práctica 1 · El mismo programa en dos familias

Escribir un programa que lea un potenciómetro y regule el brillo de un LED por PWM, con capa de abstracción. Implementarlo en dos familias distintas cambiando sólo el archivo de la capa. Medir cuántas líneas hubo que tocar: es la demostración concreta de para qué sirve separar capas.

Práctica 2 · Hoja de datos comparada

Elegir tres microcontroladores y armar una tabla propia con: canales A/D y su resolución, cantidad de temporizadores, memoria, consumo en reposo, tensión de trabajo, encapsulados y precio real en el mercado local. Justificar cuál se elegiría para un proyecto concreto.

Práctica 3 · Depurar de verdad

Con un adaptador SWD o similar, poner un punto de parada dentro de una rutina de interrupción, observar el valor de las variables y avanzar paso a paso. Comparar la experiencia con depurar el mismo problema encendiendo y apagando un LED.

Práctica 4 · Consumo

Medir con un multímetro en serie la corriente de una placa en funcionamiento normal, en reposo y en sueño profundo. Calcular la autonomía con una batería determinada en cada caso. La diferencia entre los tres estados suele ser de tres órdenes de magnitud.

07Errores frecuentes

ErrorConsecuencia
Elegir el chip por costumbreSe termina agregando afuera lo que otro chip traía adentro, más caro y más frágil.
No verificar disponibilidad realEl proyecto queda trabado esperando un componente que no se consigue.
Mezclar 5 V con 3,3 VLos ARM y el ESP32 trabajan a 3,3 V y no toleran 5 V en sus pines: se dañan.
Registros esparcidos por todo el programaMigrar o probar se vuelve imposible sin reescribir.
Asumir que el A/D interno es buenoVaría muchísimo entre familias. Si la medición importa, hay que leer la especificación real.
Quedarse sin RAMEl programa se comporta de manera errática por desbordes de pila, y el síntoma no señala la causa.
Depurar sólo con LEDSe pierden horas en problemas que un punto de parada resuelve en minutos.

08Autoevaluación

¿Qué ventaja da la arquitectura Harvard en un microcontrolador?

Buses separados para programa y datos: puede buscar la instrucción siguiente y acceder a un dato en el mismo ciclo, lo que sube el rendimiento sin subir el reloj.

¿Por qué un núcleo de 32 bits no es sólo «más rápido»?

Porque además cambia cuánta memoria puede direccionar y cuántas instrucciones hacen falta para operar con variables grandes: sumar dos enteros de 32 bits es una instrucción en lugar de varias.

¿Qué rasgo distingue al ESP32?

Que trae WiFi y Bluetooth integrados, además de doble núcleo y bastante memoria. Es lo que lo vuelve la opción natural para un proyecto conectado.

¿Cuál es el primer criterio que descarta candidatos al elegir un chip?

Los periféricos: si no tiene la cantidad de canales A/D, PWM o puertos serie que el proyecto necesita, no hay velocidad ni memoria que lo compense.

¿Qué parte del programa se porta sin cambios entre familias?

La lógica: máquinas de estado, cálculos, filtrado y protocolos, siempre que estén escritos en C estándar y no toquen registros directamente.

¿Para qué sirve una capa de abstracción de hardware?

Para que la aplicación no toque registros: se cambia sólo la implementación de la capa al migrar. Además permite probar la lógica en la computadora, sin el chip.

¿Qué es un compilador cruzado?

Uno que corre en la PC y genera código para otra arquitectura, la del microcontrolador. En la práctica, GCC en sus versiones para AVR, ARM o RISC-V.

¿Qué precaución hay al conectar un ARM o un ESP32 con lógica de 5 V?

Trabajan a 3,3 V y sus pines no toleran 5 V: hace falta un adaptador de nivel o un divisor. Conectarlos directo los daña.

¿Qué diferencia hay entre grabador y depurador?

El grabador sólo escribe el programa en la flash; el depurador además detiene la ejecución, pone puntos de parada y muestra variables y registros mientras el chip corre.

¿Por qué medir el consumo en reposo y no sólo el de trabajo?

Porque en un equipo a batería el dispositivo pasa la mayor parte del tiempo durmiendo: la autonomía la define el consumo en reposo, que puede ser mil veces menor que el de trabajo.

Desarrollo del eje «Familia de microcontroladores» de Electrónica Digital IV (7° año), según la «Propuesta Curricular – Segundo Ciclo de la Modalidad Técnico Profesional, Educación Secundaria – Electrónica», Ministerio de Educación de la Provincia de Córdoba, DGETyFP. Volver al Mapa de Temas · catto.ar