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 NOR flash , OTP ROM o RAM ferroeléctrica también suele incluirse en el chip, así como una pequeña cantidad de RAM . Los microcontroladores están diseñados para aplicaciones integradas , a diferencia de los microprocesadores utilizados en computadoras personales u otras aplicaciones de propósito general que constan de varios chips discretos.
En terminología moderna, un microcontrolador es similar, pero menos sofisticado, a un sistema en un chip (SoC). Un SoC puede incluir un microcontrolador como uno de sus componentes, pero normalmente lo integra con periféricos avanzados como una unidad de procesamiento de gráficos (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 práctico el control digital de más dispositivos y procesos. 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 Internet de las cosas , los microcontroladores son un medio económico y popular de recopilación de datos , detección y activació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). Generalmente tienen la capacidad de conservar la funcionalidad mientras esperan un evento como presionar un botón u otra interrupción ; El consumo de energía 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 muy adecuados para aplicaciones de baterías de larga duración. Otros microcontroladores pueden desempeñar funciones críticas para el rendimiento, en las que es posible que deban actuar más como un procesador de señal digital (DSP), con mayores velocidades de reloj y consumo de energía.
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 puerta de silicio , junto con los ingenieros de Intel Marcian Hoff y Stan Mazor , y el ingeniero de Busicom Masatoshi. Shima . [1] Le siguieron 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 en funcionamiento, incluidos chips de memoria y de interfaz periférica. Como resultado, el coste total del sistema fue de varios cientos de dólares (década de 1970), lo que hizo imposible informatizar económicamente los pequeños electrodomésticos.
MOS Technology presentó sus microprocesadores de menos de 100 dólares en 1975, el 6501 y el 6502 . Su objetivo principal 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 exitosa creación del primer microcontrolador en 1971. El resultado de su trabajo fue el TMS 1000 , que estuvo disponible comercialmente en 1974. Combinaba memoria de sólo lectura, memoria de lectura/escritura, procesador y reloj en un chip y estaba dirigido a sistemas integrados. [2]
Desde principios hasta mediados de la década de 1970, los fabricantes japoneses de productos electrónicos 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 tableros, y MCU de 8 bits para control del motor. [3]
En parte como respuesta a la existencia del TMS 1000 de un solo chip, [4] Intel desarrolló un sistema informático en un chip optimizado para aplicaciones de control, el Intel 8048 , y las piezas comerciales se enviaron por primera vez en 1977. [4] Combinaba RAM y ROM. en el mismo chip con un microprocesador. Entre numerosas aplicaciones, este chip llegaría finalmente a más de mil millones de teclados de PC. En aquel momento, el presidente de Intel, Luke J. Valenter, afirmó que el microcontrolador era uno de los productos de mayor éxito en la historia de la empresa y amplió el presupuesto de la división de microcontroladores en más de un 25%.
La mayoría de los microcontroladores en ese momento tenían variantes concurrentes. Uno tenía memoria de programa EPROM , con una ventana de cuarzo transparente en la tapa del paquete para permitir borrarlo mediante exposición a luz ultravioleta . Estos chips borrables se utilizaban a menudo para la creación de prototipos. La otra variante era una ROM programada con máscara o una variante PROM que solo era programable una vez. Para este último, a veces se utilizaba la designación OTP , que significa "programable una vez". En un microcontrolador OTP, la PROM era normalmente del mismo tipo que la EPROM, pero el paquete 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. Debido a que las versiones borrables requerían paquetes de cerámica con ventanas de cuarzo, eran significativamente más caras que las versiones OTP, que podían fabricarse en paquetes de plástico opaco de menor costo. Para las variantes borrables, se requirió cuarzo, en lugar de 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 cerámico en sí.
En 1993, la introducción de la memoria EEPROM permitió que los microcontroladores (comenzando con el Microchip PIC16C84 ) [5] se borraran eléctricamente rápidamente sin un paquete costoso como se requiere para la EPROM , permitiendo tanto la creación rápida de prototipos como la programación dentro del sistema . (La tecnología EEPROM había estado disponible antes de esta época, [6] pero la EEPROM anterior era más costosa y menos duradera, lo que la hacía inadecuada para microcontroladores de bajo costo producidos en masa). El mismo año, Atmel presentó el primer microcontrolador que usaba memoria Flash . , un tipo especial de EEPROM. [7] Otras empresas rápidamente siguieron su ejemplo, con ambos tipos de memoria.
Hoy en día, los microcontroladores son baratos y están fácilmente disponibles para los aficionados, con grandes comunidades en línea en torno a ciertos procesadores.
En 2002, alrededor del 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 ha afirmado que el mercado de MCU creció un 36,5% en 2010 y 12% en 2011. [11]
Es probable que una casa típica de un país desarrollado tenga 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 de El mercado de MCU experimentará cambios sustanciales en los próximos cinco años y los dispositivos de 32 bits captarán constantemente una mayor participación de las ventas y los volúmenes de unidades. Para 2017, se espera que las MCU de 32 bits representen el 55% de las ventas de microcontroladores [..] En términos de volúmenes unitarios, se espera que las 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 prevé que los diseños de 4/8 bits representen 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 los sistemas de procesamiento integrado y al crecimiento de la conectividad mediante Internet. [..] En los próximos años, se espera que las complejas MCU 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 basados en ARM y de 32 bits [12]
El costo de fabricación puede ser inferior a 0,10 dólares EE.UU. por unidad.
El costo se ha desplomado con el tiempo: los microcontroladores de 8 bits más baratos estaban disponibles por menos de 0,03 dólares estadounidenses en 2018 [13] y algunos microcontroladores de 32 bits alrededor de 1 dólar estadounidense por cantidades similares.
En 2012, tras una crisis mundial (la peor caída y recuperación de las ventas anuales de la historia y el precio de venta promedio año tras año cayendo un 17% (la mayor reducción desde la década de 1980), el precio promedio de un microcontrolador era de 0,88 dólares estadounidenses ( 0,69 dólares estadounidenses por 4 -/8 bits, 0,59 dólares estadounidenses para 16 bits, 1,76 dólares estadounidenses para 32 bits). [12]
En 2012, las ventas mundiales de microcontroladores de 8 bits rondaron los 4 mil millones de dólares , 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 0,03 dólares estadounidenses , [13] los de 16 bits por 0,393 dólares (1.000 unidades, pero a 0,563 dólares por 100 o 0,349 dólares por una bobina completa de 2.000), [18] y los de 32 bits. por 0,503 dólares (1.000 unidades, pero a 0,466 dólares por 5.000). [19]
En 2018, los microcontroladores de bajo precio de 2015 eran todos más caros (con la inflación calculada entre los precios de 2018 y 2015 para esas unidades específicas) en: el microcontrolador de 8 bits se podía comprar por 0,319 dólares estadounidenses (1.000 unidades) o un 2,6% más. , [15] el de 16 bits por 0,464 dólares (1.000 unidades) o un 21% más, [16] y el de 32 bits por 0,503 dólares (1.000 unidades, pero a 0,466 dólares por 5.000) o un 33% más. [17]
El 21 de junio de 2018, la Universidad de Michigan anunció la "computadora más pequeña del mundo" . El dispositivo es un "0,04 milímetros 3 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 solo0,3 mm de lado: eclipsado 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 . Como son demasiado pequeños para tener antenas de radio convencionales, reciben y transmiten datos con luz visible. Una estación base proporciona luz para energía y programación, y recibe los datos". [20] El dispositivo es 1/10 del tamaño de la computadora de tamaño récord mundial que IBM había reclamado anteriormente meses atrás en marzo de 2018, [21 ] es "más pequeño que un grano de sal", [22] tiene un millón de transistores, su fabricación cuesta menos de 0,10 dólares y, combinado con la tecnología blockchain , está destinado a logística y "criptoanclas": aplicaciones de huellas digitales [23] .
Un microcontrolador puede considerarse un sistema autónomo con 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 del programa, sin sistema operativo y con una baja complejidad de software. Los dispositivos típicos de entrada y salida 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 ni 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 en el sistema integrado que controlan. Cuando ocurren ciertos eventos, un sistema de interrupción puede indicarle al procesador que suspenda el procesamiento de la secuencia de instrucciones actual y que comience una rutina de servicio de interrupción (ISR o "controlador de interrupciones") que realizará cualquier procesamiento requerido según la fuente de la interrupción, antes de volviendo 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 por ejemplo al presionar 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 de energía en el que el procesador se detiene hasta que un evento periférico le exige que haga algo.
Normalmente, los programas de microcontroladores deben caber en la memoria disponible en el chip, ya que sería costoso proporcionar a un sistema una memoria externa ampliable. Los compiladores y ensambladores se utilizan para convertir código de lenguaje ensamblador y de alto nivel en un código de máquina compacto para almacenarlo en la memoria del microcontrolador. Dependiendo del dispositivo, la memoria del programa puede ser una memoria permanente de solo lectura que solo se puede programar en fábrica, o puede ser una memoria flash modificable en el campo o una memoria de solo lectura borrable.
Los fabricantes a menudo han producido versiones especiales de sus microcontroladores para ayudar en el desarrollo de hardware y software del sistema de destino. Originalmente incluían versiones EPROM que tenían una "ventana" en la parte superior del dispositivo a través de la cual la memoria del programa se puede borrar con luz ultravioleta , lista para la reprogramación después de un ciclo de programación ("quemado") y prueba. Desde 1998, las versiones EPROM son raras y han sido reemplazadas por EEPROM y flash, que son más fáciles de usar (pueden borrarse electrónicamente) y más baratos de fabricar.
Es posible que haya otras versiones disponibles en las que se accede a la ROM como un dispositivo externo en lugar de como memoria interna; sin embargo, estas se están volviendo raras debido a la amplia disponibilidad de programadores de microcontroladores económicos.
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 requerido para la implementación de un nuevo producto.
Cuando se requieren 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 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 desde varias hasta docenas de pines de entrada/salida de uso general ( GPIO ). Los pines GPIO son configurables por software para un estado de entrada o salida. Cuando los pines GPIO se configuran en un estado de entrada, a menudo se usan para leer sensores o señales externas. Configurados en el estado de salida, los pines GPIO pueden controlar dispositivos externos como LED o motores, a menudo de forma indirecta, a través de componentes electrónicos de potencia externos.
Muchos sistemas integrados necesitan leer sensores que producen señales analógicas. Este es el propósito del convertidor analógico a 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 puede enviar un dispositivo. Entonces, el convertidor analógico a digital se utiliza para convertir los datos entrantes en una forma que el procesador pueda reconocer. Una característica menos común en algunos microcontroladores es un convertidor de digital a analógico (DAC) que permite al procesador generar 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 intervalos programable (PIT). Un PIT puede contar desde algún valor hasta cero o hasta la capacidad del registro de conteo, desbordándose hasta 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/apagar el aire acondicionado, encender/apagar la calefacción, etc.
Un bloque de modulación de ancho de pulso (PWM) dedicado hace posible 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 serie con muy poca carga en la CPU. El hardware en chip dedicado también suele incluir capacidades para comunicarse con otros dispositivos (chips) en formatos digitales como circuito interintegrado ( I²C ), interfaz periférica serie ( SPI ), bus serie universal ( USB ) y Ethernet . [25]
Es posible que los microcontroladores no implementen una dirección externa o un bus de datos, ya que integran RAM y memoria no volátil en el mismo chip que la CPU. Usando menos pines, el chip se puede colocar en un paquete mucho más pequeño y económico.
Integrar la memoria y otros periféricos en un solo chip y probarlos como una unidad aumenta el costo de ese chip, pero a menudo resulta en 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 requerida para ensamblar y probar la placa de circuito, en además de tender a disminuir la tasa de defectos del conjunto 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 circuito que se necesitarían para producir sistemas equivalentes utilizando chips separados. Además, en particular en dispositivos con un número bajo de pines, cada pin puede conectarse a varios periféricos internos, con la función del pin seleccionada por 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 longitud 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 suele ser difícil. Los proveedores de microcontroladores a menudo intercambian frecuencias operativas y flexibilidad de diseño del sistema por los requisitos de tiempo de comercialización de sus clientes y un menor costo general del sistema. Los fabricantes deben equilibrar la necesidad de minimizar el tamaño del chip con la funcionalidad adicional.
Las arquitecturas de microcontroladores varían ampliamente. Algunos diseños incluyen núcleos de microprocesador de uso 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 podría requerir varias instrucciones para probar un bit en un registro y bifurcar si el bit está establecido, 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 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 sólo en lenguaje ensamblador , pero ahora también se utilizan comúnmente varios lenguajes de programación de alto nivel , como C , Python y JavaScript , para 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 a desarrollar ciertos tipos de aplicaciones. Los proveedores de microcontroladores suelen ofrecer herramientas de forma gratuita para facilitar la adopción de su hardware.
Los microcontroladores con hardware especializado pueden requerir sus propios dialectos de C no estándar, como SDCC para el 8051 , que impiden el uso de herramientas estándar (como bibliotecas de códigos o herramientas de análisis estático) incluso para código no relacionado con funciones de hardware. Los intérpretes también pueden contener características no estándar, como MicroPython , aunque una bifurcación, CircuitPython , ha buscado mover las dependencias de hardware a bibliotecas y hacer que el lenguaje se adhiera a un estándar más CPython .
El firmware del intérprete también está disponible para algunos microcontroladores. Por ejemplo, BASIC en el primer microcontrolador Intel 8052 ; [28] BASIC y FORTH en Zilog Z8 [29], así como en algunos dispositivos modernos. Normalmente, estos intérpretes admiten programación interactiva .
Hay simuladores disponibles para algunos microcontroladores. Estos permiten al desarrollador analizar cuál debería ser el comportamiento del microcontrolador y su programa si estuvieran usando la pieza real. Un simulador mostrará el estado interno del procesador y también el de las salidas, además de permitir generar 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 otro hardware en un sistema, pueden ejercer 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 a menudo están 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 ver y/o manipular estados internos mientras se ejecuta. Un ICE de seguimiento puede registrar el programa ejecutado y los estados de la MCU antes/después de un punto de activación.
En 2008 [actualizar], existen varias docenas de arquitecturas y proveedores de microcontroladores, entre ellos:
Existen muchos otros, algunos de los cuales se utilizan en una gama muy limitada de aplicaciones o se parecen más a procesadores de aplicaciones que a microcontroladores. El mercado de los microcontroladores está extremadamente fragmentado y cuenta con numerosos proveedores, tecnologías y mercados. Tenga en cuenta que muchos proveedores venden o han vendido varias arquitecturas.
A diferencia de las computadoras de uso general, los microcontroladores utilizados en sistemas integrados a menudo buscan optimizar la latencia de interrupción sobre el rendimiento de las instrucciones. Los problemas incluyen tanto reducir la latencia como hacerla más predecible (para admitir el control en tiempo real).
Cuando un dispositivo electrónico provoca una interrupción, durante el cambio de contexto, los resultados intermedios (registros) deben guardarse antes de que pueda ejecutarse el software responsable de manejar la interrupción. También deben restaurarse una vez finalizado el controlador de interrupciones . Si hay más registros del procesador , este proceso de guardado y restauración puede tardar más tiempo, aumentando la latencia. (Si un ISR no requiere el uso de algunos registros, puede simplemente dejarlos en lugar de guardarlos y restaurarlos, de modo 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 centrales de procesamiento (indeseable porque ralentiza sustancialmente la mayoría del procesamiento sin interrupciones), o al menos 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 ocultos": uno o más registros duplicados utilizados únicamente 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 la actualidad, la SRAM de seis transistores casi siempre se utiliza como memoria de trabajo de lectura/escritura, y se utilizan algunos transistores más por bit en el archivo de registro .
Además de la SRAM, algunos microcontroladores también tienen EEPROM y/o NVRAM interna para almacenamiento de datos; y los que no tienen ninguno (como el BASIC Stamp ), o donde la memoria interna es insuficiente, a menudo están conectados a una EEPROM externa o un chip de memoria flash.
Algunos microcontroladores a partir de 2003 tienen memoria flash "autoprogramable". [7]
Los primeros microcontroladores usaban ROM de máscara para almacenar 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, siendo OTP (programable una vez). . Las actualizaciones de firmware equivalían a reemplazar el propio microcontrolador, por lo que muchos productos no se podían actualizar.
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, algunos modelos utilizan FRAM y algunas piezas de coste ultrabajo todavía utilizan OTP o Mask ROM.
Por lo general, se necesita una recesión económica global para alterar el diverso mercado de MCU, y eso es exactamente lo que ocurrió en 2009, cuando el negocio de los microcontroladores sufrió su peor caída en las ventas anuales de su historia, del 22% a 11,1 mil millones de dólares.