Microcontrolador
Un microcontrolador (MCU para unidad de microcontrolador, a menudo también MC, UC, o μC) es una pequeña computadora en un solo chip de circuito integrado (IC) VLSI. 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 RAM ferroeléctrica, NOR flash o ROM OTP también suele incluirse 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, pero menos sofisticado, que un sistema en un chip (SoC). Un SoC puede conectar los chips del microcontrolador externo como componentes de la placa base, pero un SoC generalmente integra los periféricos avanzados como la unidad de procesamiento de gráficos (GPU) y el controlador de interfaz Wi-Fi como sus circuitos internos de la unidad del microcontrolador.
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 usa un microprocesador, memoria y dispositivos de entrada/salida separados, los microcontroladores hacen que sea económico controlar digitalmente aún 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 usar palabras de cuatro bits y operar 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 conservar la funcionalidad mientras esperan un evento, como presionar un botón u otra interrupción; el consumo de energía mientras duerme (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.
Historia
Antecedentes
Los primeros microprocesadores de chips múltiples, 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. 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 de trabajo, incluidos chips de interfaz de periféricos y memoria. Como resultado, el costo total del sistema fue de varios cientos de dólares (EE. UU. de la década de 1970), lo que hizo imposible computarizar económicamente los pequeños electrodomésticos.
MOS Technology presentó sus microprocesadores de menos de $100 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 mantuvieron el costo total del sistema en cientos. de dólares
Desarrollo
Un libro acredita a los ingenieros de TI Gary Boone y Michael Cochran con 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, lectura/ escribe la memoria, el procesador y el reloj en un chip y estaba dirigido a sistemas integrados.
Entre principios y 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 de motores..
En parte como respuesta a la existencia del TMS 1000 de un solo chip, Intel desarrolló un sistema informático en un chip optimizado para aplicaciones de control, el Intel 8048, cuyas piezas comerciales se enviaron por primera vez en 1977. Combinaba RAM y ROM en el mismo chip con un microprocesador. Entre numerosas aplicaciones, este chip eventualmente encontraría su camino en más de mil millones de teclados de PC. En ese momento, el presidente de Intel, Luke J. Valenter, afirmó 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 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 que se borrara por exposición a la luz ultravioleta. Estos chips borrables se usaban a menudo para la creación de prototipos. La otra variante era una ROM programada con máscara o una variante PROM que solo se podía programar una vez. Para este último, a veces se usaba la designación OTP, que significa "programable una sola vez". En un microcontrolador OTP, la PROM solía ser del mismo tipo que la EPROM, pero el paquete del chip no tenía ventana de cuarzo; debido a que no había forma de exponer la EPROM a la luz ultravioleta, no se pudo 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 requería cuarzo, en lugar de vidrio menos costoso, por su transparencia a la luz ultravioleta, para la cual el vidrio es en gran parte opaco, pero el principal diferenciador de costos era el paquete de cerámica en sí.
En 1993, la introducción de la memoria EEPROM permitió que los microcontroladores (comenzando con el Microchip PIC16C84) se borraran eléctricamente rápidamente sin un paquete costoso como lo requiere la EPROM, lo que permitió la creación rápida de prototipos y la programación en el sistema. (La tecnología EEPROM había estado disponible antes de este tiempo, pero la EEPROM anterior era más costosa y menos duradera, lo que la hacía inadecuada para los microcontroladores de bajo costo producidos en masa). El mismo año, Atmel introdujo el primer microcontrolador que usaba memoria Flash, un dispositivo especial. tipo de EEPROM. Otras empresas siguieron rápidamente su ejemplo, con ambos tipos de memoria.
Hoy en día, los microcontroladores son baratos y fácilmente disponibles para los aficionados, con grandes comunidades en línea en torno a ciertos procesadores.
Volumen y costo
En 2002, alrededor del 55 % de todas las CPU vendidas en el mundo eran microcontroladores y microprocesadores de 8 bits.
En 1997 se vendieron más de dos mil millones de microcontroladores de 8 bits y, según Semico, en 2006 se vendieron más de cuatro mil millones de microcontroladores de 8 bits. Más recientemente, Semico afirmó que el mercado de MCU creció un 36,5 % en 2010 y un 12 % en 2011.
Es probable que una casa típica en un país desarrollado tenga solo cuatro microprocesadores de propósito 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 de microondas y teléfonos.
Históricamente, el segmento de 8 bits ha dominado el mercado MCU [..] microcontroladores de 16 bits se convirtió en la categoría MCU de mayor volumen en 2011, superando dispositivos de 8 bits por primera vez ese año [.] IC Insights cree que la composición del mercado de MCU sufrirá cambios sustanciales en los próximos cinco años, con dispositivos de 32 bits apropiando constantemente una mayor parte de los volúmenes de ventas y 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 los MCU de 32 bits representen el 38% de los envíos de microcontroladores en 2017, mientras que los dispositivos de 16 bits representan el 34% del total, y se prevé que los diseños de 4-/8-bit serán el 28% de las unidades vendidas ese año. Se espera que el mercado de 32 bits de MCU crezca rápidamente debido a la creciente demanda de niveles más altos de precisión en los sistemas de procesamiento integrado y el crecimiento de la conectividad utilizando Internet. [..] En los próximos años, se espera que los complejos MCU de 32 bits representen más del 25% del poder de procesamiento en los vehículos.
—IC Insights, MCU Market on Migration Path to 32-bit and ARM-based Devices
El coste de fabricación puede ser inferior a 0,10 USD por unidad.
El costo se ha desplomado con el tiempo, con los microcontroladores de 8 bits más baratos disponibles por menos de US$0.03 en 2018, y algunos microcontroladores de 32 bits alrededor de US$1 para cantidades similares.
En 2012, luego de una crisis global (la peor caída y recuperación anual de las ventas y el precio de venta promedio anual que cayó un 17 %, la mayor reducción desde la década de 1980), el precio promedio de un microcontrolador era 0,88 USD (0,69 USD para 4/8 bits, 0,59 USD para 16 bits, 1,76 USD para 32 bits).
En 2012, las ventas mundiales de microcontroladores de 8 bits rondaron los 4.000 millones de dólares, mientras que los microcontroladores de 4 bits también registraron ventas significativas.
En 2015, los microcontroladores de 8 bits se podían comprar por 0,311 USD (1000 unidades), los de 16 bits por 0,385 USD (1000 unidades) y 32 bits para 0,378 USD (1000 unidades, pero a US$0,35 por 5000).
En 2018, los microcontroladores de 8 bits se podían comprar por 0,03 USD, los de 16 bits por EE. UU. $0,393 (1000 unidades, pero a US$0,563 por 100 o US$0,349 para rollo completo de 2000) y 32 bits por 0,503 USD (1000 unidades, pero a 0,466 USD por 5000).
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 (1000 unidades) o 2,6% superior, el de 16 bits para US$0,464 (1000 unidades) o 21 % superior, y el de 32 bits por US$0,503 (1.000 unidades, pero a US$0,466 span> para 5.000) o un 33% superior.
La computadora más pequeña
El 21 de junio de 2018, el "ordenador más pequeño del mundo" fue anunciado por la Universidad de Michigan. El dispositivo es un "0.04 mm3 16 nW sistema de sensor inalámbrico y sin batería con procesador Cortex-M0+ integrado y comunicación óptica para medición de temperatura celular." Mide solo 0,3 mm de lado, empequeñecido por un grano de arroz. [...] Además de la memoria RAM y la fotovoltaica, los nuevos dispositivos informáticos cuentan con 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 alimentación y la programación, y recibe los datos." El dispositivo es 1⁄10del tamaño de la computadora de tamaño récord mundial reclamada anteriormente por IBM desde meses atrás en marzo de 2018, que es "más pequeña que un grano de sal", tiene un millón de transistores, cuesta menos que $0.10 para fabricar y, en combinación con la tecnología de cadena de bloques, está destinado a aplicaciones de logística y "criptoanclajes": huellas digitales.
Diseño integrado
Un microcontrolador se puede considerar un sistema autónomo con un procesador, memoria y periféricos y se puede utilizar como un sistema integrado. La mayoría de los microcontroladores que se utilizan hoy en día están integrados en otra maquinaria, 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 poca 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., 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.
Interrupciones
Los microcontroladores deben proporcionar una respuesta en tiempo real (predecible, aunque no necesariamente rápida) a los eventos en el sistema integrado que están controlando. 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 interrupción') 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, completar una conversión de analógico a digital, un cambio de nivel lógico en una entrada, como cuando se presiona un botón, y datos recibidos en un enlace de comunicación. Cuando el consumo de energía es importante, como en los dispositivos de 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 requiere que haga algo.
Programas
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 el código de lenguaje ensamblador y de alto nivel 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 el campo o una memoria de solo lectura que se puede borrar.
Los fabricantes a menudo han producido versiones especiales de sus microcontroladores para ayudar al desarrollo de hardware y software del sistema de destino. Originalmente, estos incluían versiones de EPROM que tenían una "ventana" en la parte superior del dispositivo a través del cual la memoria del programa se puede borrar con luz ultravioleta, lista para reprogramar después de un ciclo de programación ("quemar") 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 (se pueden borrar electrónicamente) y más baratas de fabricar.
Es posible que haya otras versiones disponibles en las que se acceda a la ROM como un dispositivo externo en lugar de como una memoria interna; sin embargo, estas se están volviendo raras debido a la disponibilidad generalizada de programadores de microcontroladores baratos.
El uso de dispositivos programables en campo en un microcontrolador puede permitir la actualización de campo del firmware o permitir revisiones de fábrica tardías de productos que se ensamblaron pero aún no se enviaron. La memoria programable también reduce el tiempo de espera necesario para la implementación de un nuevo producto.
Donde se requieren cientos de miles de dispositivos idénticos, el uso de piezas programadas en el momento de la fabricación puede resultar económico. Estos "máscara programada" las partes 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 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.
Otras características del microcontrolador
Los microcontroladores suelen contener de varios a docenas de pines de entrada/salida de propósito 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 para el estado de salida, los pines GPIO pueden controlar dispositivos externos como LED o motores, a menudo indirectamente, a través de dispositivos electrónicos de alimentación externos.
Muchos sistemas integrados necesitan leer sensores que producen señales analógicas. Este es el propósito del convertidor de 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 un dispositivo puede enviarles. Entonces, el convertidor analógico a digital se usa 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 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 contar hacia atrás 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 comprueban periódicamente la temperatura a su alrededor para ver si necesitan encender/apagar el aire acondicionado, encender/apagar el calentador, etc.
Un bloque dedicado de modulación de ancho de pulso (PWM) hace posible que la CPU controle convertidores de potencia, cargas resistivas, motores, etc., sin usar muchos recursos de la CPU en bucles de temporizador ajustados.
Un bloque de receptor/transmisor asincrónico universal (UART) hace posible 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 incluye a menudo capacidades para comunicarse con otros dispositivos (chips) en formatos digitales como el circuito interintegrado (I²C), la interfaz periférica en serie (SPI), el bus serie universal (USB) y Ethernet.
Mayor integración
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 como un todo. Incluso si el costo de una CPU que tiene periféricos integrados es un poco más alto que el costo de una CPU y periféricos externos, tener menos chips generalmente permite una placa de circuito más pequeña y económica, 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 ensamble terminado.
Un microcontrolador es un único circuito integrado, normalmente con las siguientes características:
- unidad de procesamiento central: desde pequeños y simples procesadores de 4 bits hasta procesadores complejos de 32 bits o 64 bits
- memoria volátil (RAM) para el almacenamiento de datos
- ROM, EPROM, EEPROM o memoria flash para el almacenamiento del programa y parámetro operativo
- bits de entrada y salida discretos, permitiendo el control o la detección del estado lógico de un pin de paquete individual
- entrada en serie / salida como puertos serie (UARTs)
- otras interfaces de comunicación serie como I2C, Serial Peripheral Interface y Controller Area Network para interconexión del sistema
- periféricos tales como temporizadores, contadores de eventos, generadores PWM y reloj
- generador de reloj – a menudo un oscilador para un cristal de cuarzo, resonador o circuito RC
- muchos incluyen convertidores analógicos a digitales, algunos incluyen convertidores digitales a analógico
- programación en circuito y soporte de depuración en circuito
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ía para producir sistemas equivalentes utilizando chips separados. Además, en particular en dispositivos con un número bajo de pines, cada pin puede interactuar con varios periféricos internos, con la función de pin seleccionada por software. Esto permite que una parte se use 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 usan 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 bit 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 suele ser difícil. Los proveedores de microcontroladores a menudo intercambian frecuencias operativas y flexibilidad de diseño del sistema frente a los requisitos de tiempo de comercialización de sus clientes y el menor costo general del sistema. Los fabricantes tienen que 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 construidos 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. Por ejemplo, un procesador de propósito general puede requerir varias instrucciones para probar un bit en un registro y una bifurcación si el bit está configurado, mientras que un microcontrolador podría tener una sola instrucción para proporcionar esa función comúnmente requerida.
Los microcontroladores tradicionalmente no tienen un coprocesador matemático, por lo que la aritmética de coma flotante la realiza el software. Sin embargo, algunos diseños recientes incluyen funciones optimizadas de FPU y DSP. Un ejemplo sería la línea basada en PIC32 MIPS de Microchip.
Entornos de programación
Los microcontroladores se programaron originalmente solo en lenguaje ensamblador, pero ahora también se usan comúnmente varios lenguajes de programación de alto nivel, como C, Python y JavaScript, para apuntar a microcontroladores y sistemas integrados. Los compiladores para lenguajes de uso general suelen tener algunas restricciones y 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 a menudo hacen que las herramientas estén disponibles gratuitamente 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, lo que impide 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 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 las 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 los primeros microcontroladores Intel 8052; BASIC y FORTH en el Zilog Z8, así como en algunos dispositivos modernos. Por lo general, estos intérpretes admiten la programación interactiva.
Hay simuladores disponibles para algunos microcontroladores. Estos permiten a un 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 del procesador interno 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 estarán limitados por no poder simular mucho más 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 se integran 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 y/o manipulación de estados internos mientras se ejecuta. 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.
Tipos
A partir de 2008, existen varias docenas de arquitecturas y proveedores de microcontroladores, entre ellos:
- procesadores de núcleo ARM (muchos proveedores)
- Los núcleos ARM Cortex-M están dirigidos específicamente hacia aplicaciones microcontroladoras
- Microchip Technology Atmel AVR (8-bit), AVR32 (32-bit), y AT91SAM (32-bit)
- El núcleo M8C de Cypress Semiconductor utilizado en su PSoC (Programable System-on-Chip)
- Freescale ColdFire (32-bit) y S08 (8-bit)
- Freescale 68HC11 (8-bit), y otros basados en la familia Motorola 6800
- Intel 8051, también fabricado por NXP Semiconductors, Infineon y muchos otros
- Infineon: 8-bit XC800, 16-bit XE166, 32-bit XMC4000 (ARM basado Cortex M4F), 32-bit TriCore y, 32-bit Aurix Tricore Microcontroladores de bits
- Maxim Integrated MAX32600, MAX32620, MAX32625, MAX32630, MAX32650, MAX32640
- MIPS
- Microchip Technology PIC, (8-bit PIC16, PIC18, 16-bit dsPIC33 / PIC24), (32-bit PIC32)
- NXP Semiconductors LPC1000, LPC2000, LPC3000, LPC4000 (32-bit), LPC900, LPC700 (8-bit)
- Parallax Propeller
- PowerPC ISE
- Conejo 2000 (8-bit)
- Renesas Electronics: RL78 16-bit MCU; RX 32-bit MCU; SuperH; V850 32-bit MCU; H8; R8C 16-bit MCU
- Laboratorios de Silicio Pipelined 8-bit 8051 microcontroladores y microcontroladores ARM mixtos basados en 32-bit
- STMicroelectronics STM8 (8-bit), ST10 (16-bit), STM32 (32-bit), SPC5 (automotive 32-bit)
- Texas Instruments TI MSP430 (16-bit), MSP432 (32-bit), C2000 (32-bit)
- Toshiba TLCS-870 (8-bit/16-bit)
Existen muchos otros, algunos de los cuales se utilizan en una gama muy limitada de aplicaciones o se parecen más a los procesadores de aplicaciones que a los 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 varias arquitecturas.
Latencia de interrupción
A diferencia de las computadoras de propósito general, los microcontroladores que se usan en los sistemas integrados a menudo buscan optimizar la latencia de interrupción sobre el rendimiento de las instrucciones. Los problemas incluyen reducir la latencia y hacer que sea más predecible (para admitir el control en tiempo real).
Cuando un dispositivo electrónico provoca una interrupción, durante el cambio de contexto se deben guardar los resultados intermedios (registros) antes de que se pueda ejecutar el software responsable de manejar la interrupción. También deben restaurarse después de que finalice el controlador de interrupciones. Si hay más registros de procesador, este proceso de guardado y restauración puede llevar más tiempo, lo que aumenta la latencia. (Si un ISR no requiere el uso de algunos registros, simplemente puede 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 centrales de procesamiento (no deseable porque ralentiza sustancialmente la mayor parte 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 consiste en gastar compuertas de silicio en "registros de sombra": uno o más registros duplicados utilizados solo por el software de interrupción, quizás admitiendo una pila dedicada.
Otros factores que afectan la latencia de interrupción incluyen:
- Ciclos necesarios para completar las actividades actuales de la CPU. Para minimizar esos costos, los microcontroladores tienden a tener oleoductos cortos (a menudo tres instrucciones o menos), pequeños búferes de escritura, y asegurar que las instrucciones más largas sean continuas o restarables. Los principios de diseño de RISC garantizan que la mayoría de las instrucciones tomen el mismo número de ciclos, ayudando a evitar la necesidad de la mayoría de la lógica de continuación/resto.
- La longitud de cualquier sección crítica que necesite ser interrumpida. La entrada a una sección crítica restringe el acceso a la estructura de datos concurrente. Cuando una estructura de datos debe ser accedida por un controlador de interrupción, la sección crítica debe bloquear esa interrupción. Por lo tanto, la interrupción de la latencia se aumenta por cuanto se bloquea la interrupción. Cuando hay fuertes limitaciones externas en la latencia del sistema, los desarrolladores a menudo necesitan herramientas para medir las demoras interrumpidas y detectar qué secciones críticas causan desaceleraciones.
- Una técnica común bloquea todas las interrupciones durante la sección crítica. Esto es fácil de implementar, pero a veces secciones críticas consiguen incómodamente largo.
- Una técnica más compleja bloquea las interrupciones que pueden desencadenar el acceso a esa estructura de datos. Esto se basa a menudo en prioridades interrumpidas, que tienden a no corresponder bien a las estructuras de datos pertinentes del sistema. En consecuencia, esta técnica se utiliza principalmente en entornos muy limitados.
- Los procesadores pueden tener soporte de hardware para algunas secciones críticas. Ejemplos incluyen apoyar el acceso atómico a bits o bytes dentro de una palabra, u otros primitivos de acceso atómico como los primitivos de acceso exclusivo LDREX/STREX introducidos en la arquitectura ARMv6.
- Anidación interrumpida. Algunos microcontroladores permiten que las interrupciones de mayor prioridad interrumpan las de menor prioridad. Esto permite que el software administre latencia dando interrupciones críticas de mayor prioridad (y por lo tanto menor y más predecible latencia) que las menos críticas.
- Tasa de desencadenante. Cuando las interrupciones ocurren de vuelta a atrás, los microcontroladores pueden evitar un ciclo adicional de ahorro/restore mediante una forma de optimización de llamadas a la cola.
Los microcontroladores de gama baja tienden a admitir menos controles de latencia de interrupción que los de gama alta.
Tecnología de memoria
Por lo general, se usan dos tipos diferentes de memoria con microcontroladores, una memoria no volátil para almacenar firmware y una memoria de lectura y escritura para datos temporales.
Datos
Desde los primeros microcontroladores hasta la actualidad, la SRAM de seis transistores casi siempre se usa como memoria de trabajo de lectura/escritura, y se usan algunos transistores más por bit en el archivo de registro.
Además de la SRAM, algunos microcontroladores también tienen una EEPROM interna para el almacenamiento de datos; e incluso los que no tienen (o no tienen suficiente) a menudo están conectados a un chip EEPROM externo (como el BASIC Stamp) o un chip de memoria flash externo.
Algunos microcontroladores a partir de 2003 tienen "autoprogramables" memoria flash.
Firmware
Los primeros microcontroladores usaban 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 usaba una ventana translúcida para permitir el borrado a través de la luz ultravioleta, mientras que las versiones de producción no tenían esa ventana, siendo OTP (programable una sola vez). Las actualizaciones de firmware equivalían a reemplazar el propio microcontrolador, por lo que muchos productos no se podían actualizar.
Motorola MC68HC805 fue el primer microcontrolador en usar EEPROM para almacenar el firmware. Los microcontroladores EEPROM se hicieron más populares en 1993 cuando Microchip introdujo PIC16C84 y Atmel introdujo un microcontrolador de 8051 núcleos que fue el primero en utilizar la memoria Flash NOR para almacenar el firmware. Casi todos los microcontroladores de hoy en día usan memoria flash, algunos modelos usan FRAM y algunas piezas de muy bajo costo todavía usan OTP o Mask ROM.
Contenido relacionado
Intel 80186
Impresora de línea
Pulsejet