Un microcontrolador ( MC , UC o μC ) o unidad de microcontrolador ( MCU ) es una pequeña computadora en un solo circuito integrado . Un microcontrolador contiene una o más CPU ( núcleos de procesador ) junto con memoria y periféricos de entrada/salida programables . La memoria de programa en forma de flash NOR , ROM OTP o RAM ferroeléctrica también se incluye a menudo en el chip, así como una pequeña cantidad de RAM . Los microcontroladores están diseñados para aplicaciones integradas , en contraste con los microprocesadores utilizados en computadoras personales u otras aplicaciones de propósito general que consisten en varios chips discretos.
En la terminología moderna, un microcontrolador es similar a un sistema en chip (SoC) , pero menos sofisticado . Un SoC puede incluir un microcontrolador como uno de sus componentes, pero normalmente lo integra con periféricos avanzados como una unidad de procesamiento gráfico (GPU), un módulo Wi-Fi o uno o más coprocesadores .
Los microcontroladores se utilizan en productos y dispositivos controlados automáticamente , como sistemas de control de motores de automóviles, dispositivos médicos implantables, controles remotos, máquinas de oficina, electrodomésticos, herramientas eléctricas, juguetes y otros sistemas integrados . Al reducir el tamaño y el costo en comparación con un diseño que utiliza un microprocesador , memoria y dispositivos de entrada/salida separados, los microcontroladores hacen que el control digital de más dispositivos y procesos sea práctico. Los microcontroladores de señal mixta son comunes e integran componentes analógicos necesarios para controlar sistemas electrónicos no digitales. En el contexto de la Internet de las cosas , los microcontroladores son un medio económico y popular de recopilación de datos , detección y actuación del mundo físico como dispositivos de borde .
Algunos microcontroladores pueden utilizar palabras de cuatro bits y funcionar a frecuencias tan bajas como 4 kHz para un bajo consumo de energía ( milivatios o microvatios de un solo dígito). Por lo general, tienen la capacidad de mantener la funcionalidad mientras esperan un evento, como la pulsación de un botón u otra interrupción ; el consumo de energía mientras están en reposo (reloj de la CPU y la mayoría de los periféricos apagados) puede ser de solo nanovatios, lo que hace que muchos de ellos sean adecuados para aplicaciones de batería de larga duración. Otros microcontroladores pueden cumplir funciones críticas para el rendimiento, donde es posible que deban actuar más como un procesador de señal digital (DSP), con velocidades de reloj y consumo de energía más altos.
Los primeros microprocesadores multichip, el Four-Phase Systems AL1 en 1969 y el Garrett AiResearch MP944 en 1970, se desarrollaron con múltiples chips MOS LSI. El primer microprocesador de un solo chip fue el Intel 4004 , lanzado en un solo chip MOS LSI en 1971. Fue desarrollado por Federico Faggin , utilizando su tecnología MOS de compuerta de silicio , junto con los ingenieros de Intel Marcian Hoff y Stan Mazor , y el ingeniero de Busicom Masatoshi Shima . [1] Fue seguido por el Intel 4040 de 4 bits , el Intel 8008 de 8 bits y el Intel 8080 de 8 bits . Todos estos procesadores requerían varios chips externos para implementar un sistema funcional, incluidos chips de memoria e interfaz periférica. Como resultado, el costo total del sistema era de varios cientos de dólares (EE. UU. de la década de 1970), lo que hacía imposible informatizar económicamente pequeños electrodomésticos.
MOS Technology presentó sus microprocesadores de menos de 100 dólares en 1975, el 6501 y el 6502. Su principal objetivo era reducir esta barrera de costos, pero estos microprocesadores aún requerían soporte externo, memoria y chips periféricos que mantenían el costo total del sistema en cientos de dólares.
Un libro atribuye a los ingenieros de TI Gary Boone y Michael Cochran la creación exitosa del primer microcontrolador en 1971. El resultado de su trabajo fue el TMS 1000 , que estuvo disponible comercialmente en 1974. Combinaba memoria de solo lectura, memoria de lectura/escritura, procesador y reloj en un chip y estaba destinado a sistemas integrados. [2]
A principios y mediados de la década de 1970, los fabricantes de productos electrónicos japoneses comenzaron a producir microcontroladores para automóviles, incluidos MCU de 4 bits para entretenimiento en el automóvil , limpiaparabrisas automáticos, cerraduras electrónicas y tablero de instrumentos, y MCU de 8 bits para control del motor. [3]
En parte como respuesta a la existencia del chip único TMS 1000, [4] Intel desarrolló un sistema informático en un chip optimizado para aplicaciones de control, el Intel 8048 , cuyas primeras piezas comerciales se comercializaron en 1977. [4] Combinaba RAM y ROM en el mismo chip con un microprocesador. Entre sus numerosas aplicaciones, este chip acabaría encontrando su lugar en más de mil millones de teclados de PC. En aquel momento, el presidente de Intel, Luke J. Valenter, declaró que el microcontrolador era uno de los productos más exitosos en la historia de la empresa y amplió el presupuesto de la división de microcontroladores en más del 25%.
La mayoría de los microcontroladores de la época tenían variantes concurrentes. Una de ellas era la memoria de programa EPROM , con una ventana de cuarzo transparente en la tapa del encapsulado para permitir borrarla mediante la exposición a la luz ultravioleta . Estos chips borrables se utilizaban a menudo para la creación de prototipos. La otra variante era una ROM programada por máscara o una variante PROM que sólo se podía programar una vez. Para esta última, a veces se utilizaba la designación OTP , que significa "programable una sola vez". En un microcontrolador OTP, la PROM era normalmente del mismo tipo que la EPROM, pero el encapsulado del chip no tenía ventana de cuarzo; como no había forma de exponer la EPROM a la luz ultravioleta, no se podía borrar. Como las versiones borrables requerían encapsulados de cerámica con ventanas de cuarzo, eran significativamente más caras que las versiones OTP, que se podían fabricar en encapsulados de plástico opaco de menor coste. Para las variantes borrables, se requirió cuarzo, en lugar del vidrio, menos costoso, por su transparencia a la luz ultravioleta (a la que el vidrio es en gran medida opaco), pero el principal diferenciador de costos fue el paquete de cerámica en sí.
En 1993, la introducción de la memoria EEPROM permitió que los microcontroladores (empezando por el Microchip PIC16C84 ) [5] se borraran eléctricamente rápidamente sin un paquete costoso como el requerido para la EPROM , lo que permitió tanto la creación rápida de prototipos como la programación en el sistema . (La tecnología EEPROM había estado disponible antes de este momento, [6] pero la EEPROM anterior era más cara y menos duradera, lo que la hacía inadecuada para microcontroladores producidos en masa de bajo costo). El mismo año, Atmel presentó el primer microcontrolador que usaba memoria Flash , un tipo especial de EEPROM. [7] Otras empresas siguieron rápidamente su ejemplo, con ambos tipos de memoria.
Hoy en día, los microcontroladores son baratos y están fácilmente disponibles para los aficionados, y existen grandes comunidades en línea en torno a ciertos procesadores.
En 2002, aproximadamente el 55% de todas las CPU vendidas en el mundo eran microcontroladores y microprocesadores de 8 bits. [8]
En 1997 se vendieron más de dos mil millones de microcontroladores de 8 bits, [9] y según Semico, en 2006 se vendieron más de cuatro mil millones de microcontroladores de 8 bits. [10] Más recientemente, Semico afirmó que el mercado de MCU creció un 36,5% en 2010 y un 12% en 2011. [11]
En un hogar típico de un país desarrollado es probable que haya sólo cuatro microprocesadores de uso general, pero alrededor de tres docenas de microcontroladores. Un automóvil típico de gama media tiene unos 30 microcontroladores. También se pueden encontrar en muchos dispositivos eléctricos, como lavadoras, hornos microondas y teléfonos.
Históricamente, el segmento de 8 bits ha dominado el mercado de MCU [..] Los microcontroladores de 16 bits se convirtieron en la categoría de MCU de mayor volumen en 2011, superando a los dispositivos de 8 bits por primera vez ese año [..] IC Insights cree que la composición del mercado de MCU experimentará cambios sustanciales en los próximos cinco años con dispositivos de 32 bits que capturan de manera constante una mayor participación de las ventas y los volúmenes de unidades. Para 2017, se espera que los MCU de 32 bits representen el 55% de las ventas de microcontroladores [..] En términos de volúmenes de unidades, se espera que los MCU de 32 bits representen el 38% de los envíos de microcontroladores en 2017, mientras que los dispositivos de 16 bits representarán el 34% del total, y se pronostica que los diseños de 4/8 bits serán el 28% de las unidades vendidas ese año. Se espera que el mercado de MCU de 32 bits crezca rápidamente debido a la creciente demanda de mayores niveles de precisión en sistemas de procesamiento integrado y al crecimiento de la conectividad mediante Internet. [..] En los próximos años, se espera que los MCU complejos de 32 bits representen más del 25% de la potencia de procesamiento de los vehículos.
— IC Insights, MCU Market sobre la ruta de migración a dispositivos de 32 bits y basados en ARM [12]
El costo de fabricación puede ser inferior a US$0,10 por unidad.
El costo se ha desplomado con el tiempo, y los microcontroladores de 8 bits más baratos estaban disponibles por menos de US$0,03 en 2018, [13] y algunos microcontroladores de 32 bits rondaban los US$1 por cantidades similares.
En 2012, tras una crisis global (la peor caída y recuperación de ventas anuales de la historia y una caída del precio de venta promedio interanual del 17%) (la mayor reducción desde los años 1980), el precio promedio de un microcontrolador fue de 0,88 dólares ( 0,69 dólares para 4/8 bits, 0,59 dólares para 16 bits y 1,76 dólares para 32 bits). [12]
En 2012, las ventas mundiales de microcontroladores de 8 bits fueron de alrededor de 4 mil millones de dólares estadounidenses , mientras que los microcontroladores de 4 bits también registraron ventas significativas. [14]
En 2015, los microcontroladores de 8 bits se podían comprar por 0,311 dólares (1.000 unidades), [15] los de 16 bits por 0,385 dólares (1.000 unidades), [16] y los de 32 bits por 0,378 dólares (1.000 unidades, pero a 0,35 dólares por 5.000). [17]
En 2018, los microcontroladores de 8 bits se podían comprar por US$0,03 , [13] los de 16 bits por US$0,393 (1.000 unidades, pero a US$0,563 por 100 o US$0,349 por una bobina completa de 2.000), [18] y los de 32 bits por US$0,503 (1.000 unidades, pero a US$0,466 por 5.000). [19]
En 2018, los microcontroladores de bajo precio anteriores de 2015 eran todos más caros (con la inflación calculada entre los precios de 2018 y 2015 para esas unidades específicas): el microcontrolador de 8 bits se podía comprar por US$0,319 (1.000 unidades) o un 2,6% más, [15] el de 16 bits por US$0,464 (1.000 unidades) o un 21% más, [16] y el de 32 bits por US$0,503 (1.000 unidades, pero a US$0,466 por 5.000) o un 33% más. [17]
El 21 de junio de 2018, la Universidad de Michigan anunció el "ordenador más pequeño del mundo" . El dispositivo es un "0,04 mm3 Sistema de sensor inalámbrico y sin batería de 16 nW con procesador Cortex-M0+ integrado y comunicación óptica para medición de temperatura celular". Mide exactamente0,3 mm por lado, empequeñecido por un grano de arroz. [...] Además de la RAM y la energía fotovoltaica , los nuevos dispositivos informáticos tienen procesadores y transmisores y receptores inalámbricos . Debido a que son demasiado pequeños para tener antenas de radio convencionales, reciben y transmiten datos con luz visible. Una estación base proporciona luz para la energía y la programación, y recibe los datos". [20] El dispositivo tiene 1 ⁄ 10 del tamaño del ordenador de IBM de tamaño récord mundial de meses atrás en marzo de 2018, [21] que es "más pequeño que un grano de sal", [22] tiene un millón de transistores, cuesta menos de $ 0,10 para fabricar y, combinado con la tecnología blockchain , está destinado a la logística y las "criptoanclas": aplicaciones de huellas digitales . [23]
Un microcontrolador puede considerarse un sistema autónomo con un procesador, memoria y periféricos y puede utilizarse como un sistema integrado . [24] La mayoría de los microcontroladores que se utilizan hoy en día están integrados en otras máquinas, como automóviles, teléfonos, electrodomésticos y periféricos para sistemas informáticos.
Si bien algunos sistemas integrados son muy sofisticados, muchos tienen requisitos mínimos de memoria y longitud de programa, no tienen sistema operativo y su software es de baja complejidad. Los dispositivos de entrada y salida típicos incluyen interruptores, relés , solenoides , LED , pantallas de cristal líquido pequeñas o personalizadas , dispositivos de radiofrecuencia y sensores para datos como temperatura, humedad, nivel de luz, etc. Los sistemas integrados generalmente no tienen teclado, pantalla, discos, impresoras u otros dispositivos de E/S reconocibles de una computadora personal y pueden carecer de dispositivos de interacción humana de cualquier tipo.
Los microcontroladores deben proporcionar una respuesta en tiempo real (predecible, aunque no necesariamente rápida) a los eventos del sistema integrado que controlan. Cuando se producen determinados eventos, un sistema de interrupción puede indicar al procesador que suspenda el procesamiento de la secuencia de instrucciones actual y que comience una rutina de servicio de interrupción (ISR, o "manejador de interrupciones") que realizará cualquier procesamiento requerido en función de la fuente de la interrupción, antes de volver a la secuencia de instrucciones original. Las posibles fuentes de interrupción dependen del dispositivo y, a menudo, incluyen eventos como un desbordamiento del temporizador interno, la finalización de una conversión de analógico a digital, un cambio de nivel lógico en una entrada, como la pulsación de un botón, y datos recibidos en un enlace de comunicación. Cuando el consumo de energía es importante, como en los dispositivos con batería, las interrupciones también pueden despertar a un microcontrolador de un estado de suspensión de bajo consumo en el que el procesador se detiene hasta que un evento periférico le exige que haga algo.
Por lo general, los programas de microcontroladores deben caber en la memoria disponible en el chip, ya que sería costoso proporcionar un sistema con memoria externa expandible. Los compiladores y ensambladores se utilizan para convertir tanto el código de alto nivel como el código de lenguaje ensamblador en un código de máquina compacto para almacenarlo en la memoria del microcontrolador. Según el dispositivo, la memoria del programa puede ser una memoria permanente de solo lectura que solo se puede programar en la fábrica, o puede ser una memoria flash modificable en campo o una memoria de solo lectura borrable.
Los fabricantes han producido a menudo versiones especiales de sus microcontroladores para ayudar al desarrollo de hardware y software del sistema de destino. Originalmente, estas incluían versiones EPROM que tienen una "ventana" en la parte superior del dispositivo a través de la cual se puede borrar la memoria del programa mediante luz ultravioleta , lista para ser reprogramada después de un ciclo de programación ("quemado") y prueba. Desde 1998, las versiones EPROM son poco frecuentes y han sido reemplazadas por EEPROM y flash, que son más fáciles de usar (se pueden borrar electrónicamente) y más baratas de fabricar.
Puede haber otras versiones disponibles en las que se accede a la ROM como un dispositivo externo en lugar de como memoria interna, sin embargo, estas son cada vez más raras debido a la amplia disponibilidad de programadores de microcontroladores baratos.
El uso de dispositivos programables en campo en un microcontrolador puede permitir la actualización en campo del firmware o permitir revisiones tardías de fábrica de productos que se han ensamblado pero que aún no se han enviado. La memoria programable también reduce el tiempo de entrega necesario para la implementación de un nuevo producto.
Cuando se necesitan cientos de miles de dispositivos idénticos, puede resultar económico utilizar piezas programadas en el momento de la fabricación. Estas piezas " programadas con máscara " tienen el programa establecido de la misma manera que la lógica del chip, al mismo tiempo.
Un microcontrolador personalizado incorpora un bloque de lógica digital que se puede personalizar para obtener una capacidad de procesamiento adicional, periféricos e interfaces que se adaptan a los requisitos de la aplicación. Un ejemplo es el AT91CAP de Atmel .
Los microcontroladores suelen contener entre varios y decenas de pines de entrada/salida de propósito general ( GPIO ). Los pines GPIO se pueden configurar mediante software para un estado de entrada o de salida. Cuando los pines GPIO se configuran para un estado de entrada, suelen utilizarse para leer sensores o señales externas. Configurados para el estado de salida, los pines GPIO pueden controlar dispositivos externos, como LED o motores, a menudo de forma indirecta, a través de la electrónica de potencia externa.
Muchos sistemas integrados necesitan leer sensores que producen señales analógicas. Este es el propósito del convertidor analógico-digital (ADC). Dado que los procesadores están diseñados para interpretar y procesar datos digitales, es decir, 1 y 0, no pueden hacer nada con las señales analógicas que les pueda enviar un dispositivo. Por lo tanto, el convertidor analógico-digital se utiliza para convertir los datos entrantes en un formato que el procesador pueda reconocer. Una característica menos común en algunos microcontroladores es un convertidor digital-analógico (DAC) que permite que el procesador emita señales analógicas o niveles de voltaje.
Además de los convertidores, muchos microprocesadores integrados también incluyen una variedad de temporizadores. Uno de los tipos más comunes de temporizadores es el temporizador de intervalo programable (PIT). Un PIT puede realizar una cuenta regresiva desde un valor determinado hasta cero, o hasta la capacidad del registro de conteo, desbordándose hasta llegar a cero. Una vez que llega a cero, envía una interrupción al procesador indicando que ha terminado de contar. Esto es útil para dispositivos como termostatos, que prueban periódicamente la temperatura a su alrededor para ver si necesitan encender o apagar el aire acondicionado, la calefacción, etc.
Un bloque de modulación de ancho de pulso (PWM) dedicado permite que la CPU controle convertidores de potencia , cargas resistivas , motores , etc., sin utilizar muchos recursos de la CPU en bucles de temporizador ajustados .
Un bloque receptor/transmisor asíncrono universal (UART) permite recibir y transmitir datos a través de una línea serial con muy poca carga en la CPU. El hardware dedicado en chip también suele incluir capacidades para comunicarse con otros dispositivos (chips) en formatos digitales como circuitos integrados ( I²C ), interfaz periférica serial ( SPI ), bus serial universal ( USB ) y Ethernet . [25]
Los microcontroladores no pueden implementar una dirección externa ni un bus de datos, ya que integran RAM y memoria no volátil en el mismo chip que la CPU. Al utilizar menos pines, el chip se puede colocar en un paquete mucho más pequeño y económico.
La integración de la memoria y otros periféricos en un solo chip y su prueba como una unidad aumenta el costo de ese chip, pero a menudo da como resultado una disminución del costo neto del sistema integrado en su conjunto. Incluso si el costo de una CPU que tiene periféricos integrados es ligeramente mayor que el costo de una CPU y periféricos externos, tener menos chips generalmente permite una placa de circuito más pequeña y más barata, y reduce la mano de obra necesaria para ensamblar y probar la placa de circuito, además de tender a disminuir la tasa de defectos del ensamblaje terminado.
Un microcontrolador es un circuito integrado único , comúnmente con las siguientes características:
Esta integración reduce drásticamente la cantidad de chips y la cantidad de cableado y espacio en la placa de circuitos que se necesitarían para producir sistemas equivalentes utilizando chips separados. Además, en dispositivos con un número bajo de pines, en particular, cada pin puede interactuar con varios periféricos internos, y la función del pin se selecciona mediante software. Esto permite que una pieza se utilice en una variedad más amplia de aplicaciones que si los pines tuvieran funciones dedicadas.
Los microcontroladores han demostrado ser muy populares en los sistemas integrados desde su introducción en la década de 1970.
Algunos microcontroladores utilizan una arquitectura Harvard : buses de memoria separados para instrucciones y datos, lo que permite que los accesos se realicen simultáneamente. Cuando se utiliza una arquitectura Harvard, las palabras de instrucción para el procesador pueden tener un tamaño de bits diferente al de la memoria interna y los registros; por ejemplo: instrucciones de 12 bits utilizadas con registros de datos de 8 bits.
La decisión de qué periférico integrar es a menudo difícil. Los proveedores de microcontroladores suelen sacrificar frecuencias operativas y flexibilidad en el diseño del sistema por los requisitos de comercialización de sus clientes y un menor coste general del sistema. Los fabricantes tienen que equilibrar la necesidad de minimizar el tamaño del chip con la funcionalidad adicional.
Las arquitecturas de los microcontroladores varían ampliamente. Algunos diseños incluyen núcleos de microprocesador de propósito general, con una o más funciones de ROM, RAM o E/S integradas en el paquete. Otros diseños están diseñados específicamente para aplicaciones de control. Un conjunto de instrucciones de microcontrolador generalmente tiene muchas instrucciones destinadas a la manipulación de bits (operaciones bit a bit) para hacer que los programas de control sean más compactos. [26] Por ejemplo, un procesador de propósito general puede requerir varias instrucciones para probar un bit en un registro y bifurcarse si el bit está configurado, mientras que un microcontrolador podría tener una sola instrucción para proporcionar esa función comúnmente requerida.
Históricamente, los microcontroladores no han tenido coprocesadores matemáticos , por lo que la aritmética de punto flotante se ha realizado mediante software. Sin embargo, algunos diseños recientes sí incluyen FPU y funciones optimizadas para DSP. Un ejemplo sería la línea basada en MIPS PIC32 de Microchip.
Los microcontroladores se programaban originalmente solo en lenguaje ensamblador , pero varios lenguajes de programación de alto nivel , como C , Python y JavaScript , ahora también son de uso común para apuntar a microcontroladores y sistemas integrados . [27] Los compiladores para lenguajes de propósito general normalmente tendrán algunas restricciones, así como mejoras para soportar mejor las características únicas de los microcontroladores. Algunos microcontroladores tienen entornos para ayudar al desarrollo de ciertos tipos de aplicaciones. Los proveedores de microcontroladores a menudo ponen a disposición herramientas de forma gratuita para facilitar la adopción de su hardware.
Los microcontroladores con hardware especializado pueden requerir sus propios dialectos no estándar de C, como SDCC para el 8051 , que impiden el uso de herramientas estándar (como bibliotecas de código o herramientas de análisis estático) incluso para código no relacionado con las características del hardware. Los intérpretes también pueden contener características no estándar, como MicroPython , aunque una bifurcación, CircuitPython , ha buscado trasladar las dependencias de hardware a las bibliotecas y hacer que el lenguaje se adhiera a un estándar más CPython .
El firmware de intérprete también está disponible para algunos microcontroladores. Por ejemplo, BASIC en el primer microcontrolador Intel 8052 ; [28] BASIC y FORTH en el Zilog Z8 [29] así como algunos dispositivos modernos. Por lo general, estos intérpretes admiten programación interactiva .
Existen simuladores para algunos microcontroladores. Estos permiten a un desarrollador analizar cuál debería ser el comportamiento del microcontrolador y su programa si estuviera utilizando la pieza real. Un simulador mostrará el estado interno del procesador y también el de las salidas, además de permitir que se generen señales de entrada. Si bien, por un lado, la mayoría de los simuladores tendrán la limitación de no poder simular mucho más hardware en un sistema, pueden ejercitar condiciones que de otro modo serían difíciles de reproducir a voluntad en la implementación física y pueden ser la forma más rápida de depurar y analizar problemas.
Los microcontroladores recientes suelen estar integrados con circuitos de depuración en chip que, cuando se accede a ellos mediante un emulador en circuito (ICE) a través de JTAG , permiten la depuración del firmware con un depurador . Un ICE en tiempo real puede permitir la visualización o manipulación de estados internos durante la ejecución. Un ICE de seguimiento puede registrar el programa ejecutado y los estados de la MCU antes o después de un punto de activación.
A partir de 2008 [actualizar], existen varias docenas de arquitecturas y proveedores de microcontroladores, incluidos:
Existen muchos otros, algunos de los cuales se utilizan en un rango muy reducido de aplicaciones o son más como procesadores de aplicaciones que como microcontroladores. El mercado de microcontroladores está extremadamente fragmentado, con numerosos proveedores, tecnologías y mercados. Tenga en cuenta que muchos proveedores venden o han vendido múltiples arquitecturas.
A diferencia de las computadoras de uso general, los microcontroladores que se utilizan en sistemas integrados suelen buscar optimizar la latencia de las interrupciones en relación con el rendimiento de las instrucciones. Los problemas incluyen tanto la reducción de la latencia como su mayor previsibilidad (para permitir el control en tiempo real).
Cuando un dispositivo electrónico causa una interrupción, durante el cambio de contexto los resultados intermedios (registros) tienen que ser guardados antes de que el software responsable de manejar la interrupción pueda ejecutarse. También deben ser restaurados después de que ese manejador de interrupciones haya terminado. Si hay más registros de procesador , este proceso de guardado y restauración puede tomar más tiempo, aumentando la latencia. (Si un ISR no requiere el uso de algunos registros, puede simplemente dejarlos solos en lugar de guardarlos y restaurarlos, por lo que en ese caso esos registros no están involucrados con la latencia). Las formas de reducir dicha latencia de contexto/restauración incluyen tener relativamente pocos registros en sus unidades de procesamiento central (indeseable porque ralentiza sustancialmente la mayoría del procesamiento sin interrupción), o al menos hacer que el hardware no los guarde todos (esto falla si el software necesita compensar guardando el resto "manualmente"). Otra técnica implica gastar puertas de silicio en "registros de sombra": uno o más registros duplicados utilizados solo por el software de interrupción, tal vez admitiendo una pila dedicada.
Otros factores que afectan la latencia de interrupción incluyen:
Los microcontroladores de gama baja tienden a admitir menos controles de latencia de interrupción que los de gama alta.
Normalmente se utilizan dos tipos diferentes de memoria con los microcontroladores: una memoria no volátil para almacenar firmware y una memoria de lectura y escritura para datos temporales.
Desde los primeros microcontroladores hasta hoy, casi siempre se utiliza SRAM de seis transistores como memoria de trabajo de lectura/escritura, con unos pocos transistores más por bit utilizados en el archivo de registro .
Además de la SRAM, algunos microcontroladores también tienen EEPROM interna y/o NVRAM para el almacenamiento de datos; y aquellos que no tienen ninguna (como el BASIC Stamp ), o donde la memoria interna es insuficiente, a menudo se conectan a una EEPROM externa o un chip de memoria flash.
Algunos microcontroladores a partir de 2003 tienen memoria flash "autoprogramable". [7]
Los primeros microcontroladores utilizaban memorias ROM de máscara para almacenar el firmware . Los microcontroladores posteriores (como las primeras versiones del Freescale 68HC11 y los primeros microcontroladores PIC ) tenían memoria EPROM , que utilizaba una ventana translúcida para permitir el borrado mediante luz ultravioleta, mientras que las versiones de producción no tenían dicha ventana, ya que eran OTP (programables una sola vez). Las actualizaciones de firmware equivalían a reemplazar el propio microcontrolador, por lo que muchos productos no eran actualizables.
Motorola MC68HC805 [6] fue el primer microcontrolador en utilizar EEPROM para almacenar el firmware. Los microcontroladores EEPROM se hicieron más populares en 1993 cuando Microchip introdujo el PIC16C84 [5] y Atmel introdujo un microcontrolador de 8051 núcleos que fue el primero en utilizar memoria Flash NOR para almacenar el firmware. [7] Casi todos los microcontroladores actuales utilizan memoria flash, con unos pocos modelos que utilizan FRAM y algunas piezas de costo ultrabajo que aún utilizan OTP o Mask ROM.
Normalmente, se necesita una recesión económica mundial para alterar el diverso mercado de MCU, y eso es exactamente lo que ocurrió en 2009, cuando el negocio de microcontroladores sufrió su peor caída anual de ventas de la historia, del 22% a 11.100 millones de dólares.