stringtranslate.com

Microcontroladores PIC

Microcontroladores PIC en paquetes DIP y QFN
Microcontrolador PDIP PIC24 de 16 bits y 28 pines junto a una regla métrica
Matriz de un microcontrolador CMOS PIC12C508 de 8 bits, totalmente estático, basado en EEPROM / EPROM / ROM fabricado por Microchip Technology mediante un proceso de 1200 nanómetros
Matriz de un microcontrolador de 8 bits basado en ROM CMOS PIC16C505 fabricado por Microchip Technology mediante un proceso de 1200 nanómetros

PIC (generalmente pronunciado [pʰɪk] ) es una familia de microcontroladores fabricados por Microchip Technology , derivados del PIC1650 [1] [2] desarrollado originalmente por la División de Microelectrónica de General Instrument . El nombre PIC inicialmente se refería a Controlador de interfaz periférica , [3] y actualmente se expande como Computadora inteligente programable . [4] Las primeras partes de la familia estuvieron disponibles en 1976; En 2013, la empresa había enviado más de doce mil millones de piezas individuales, utilizadas en una amplia variedad de sistemas integrados . [5]

Originalmente, el PIC estaba destinado a ser utilizado con el General Instrument CP1600 , el primer microprocesador de 16 bits de un solo chip disponible comercialmente . El CP1600 tenía un bus complejo que dificultaba la interfaz, y el PIC se introdujo como un dispositivo complementario que ofrecía ROM para almacenamiento de programas, RAM para manejo temporal de datos y una CPU simple para controlar las transferencias. Si bien ofrecía una potencia considerable, el marketing de GI fue limitado y el CP1600 no fue un éxito. Cuando la empresa escindió su división de chips para formar Microchip en 1985, las ventas del CP1600 estaban prácticamente muertas. En ese momento, PIC había formado un mercado propio importante y se convirtió en uno de los productos principales de la nueva empresa.

Los primeros modelos solo tenían una máscara ROM para el almacenamiento de códigos, pero con su versión derivada pronto se actualizó para usar EPROM y luego EEPROM , lo que hizo posible que los usuarios finales programaran los dispositivos en sus propias instalaciones. Todos los modelos actuales utilizan memoria flash para el almacenamiento de programas y los modelos más nuevos permiten que el PIC se reprograme solo. Desde entonces, la línea ha experimentado cambios significativos; La memoria ahora está disponible en 8 bits, 16 bits y, en los últimos modelos, 32 bits de ancho. Las instrucciones del programa varían en el número de bits según la familia de PIC y pueden tener 12, 14, 16 o 24 bits de longitud. El conjunto de instrucciones también varía según el modelo, y los chips más potentes añaden instrucciones para funciones de procesamiento de señales digitales . Las implementaciones de hardware de los dispositivos PIC van desde chips SMD de 6 pines, chips DIP de 8 pines hasta chips SMD de 144 pines, con pines de E/S discretas, módulos ADC y DAC y puertos de comunicaciones como UART , I2C , CAN y incluso USB . Existen variaciones de baja potencia y alta velocidad para muchos tipos.

El fabricante suministra software informático para desarrollo conocido como MPLAB X , ensambladores y compiladores C/C++, y hardware de programador/depurador de las series MPLAB y PICKit . También se encuentran disponibles herramientas de terceros y algunas de código abierto. Algunas piezas tienen capacidad de programación en circuito; Hay disponibles programadores de desarrollo de bajo costo, así como programadores de producción de alto volumen.

Los dispositivos PIC son populares tanto entre los desarrolladores industriales como entre los aficionados debido a su bajo costo, amplia disponibilidad, gran base de usuarios, una extensa colección de notas de aplicación, disponibilidad de herramientas de desarrollo gratuitas o de bajo costo, programación en serie y capacidad de memoria flash reprogramable. .

Historia

Concepto original

Varios microcontroladores PIC antiguos (EPROM)

El PIC original estaba destinado a ser utilizado con la nueva unidad central de procesamiento (CPU) CP1600 de 16 bits de General Instrument . Para encajar buses de direcciones y datos de 16 bits en un chip de paquete en línea dual (DIP) de 40 pines estándar en ese momento , los dos buses compartían el mismo conjunto de 16 pines de conexión. Para comunicarse con la CPU, los dispositivos tenían que observar otros pines de la CPU para determinar si la información en el bus era una dirección o datos. Dado que sólo se presentaba uno de estos a la vez, los dispositivos tenían que observar el bus para entrar en modo de dirección, ver si esa dirección era parte de su rango de entrada/salida asignada en memoria , "bloquear" esa dirección y luego esperar a que Modo de datos para encender y luego leer el valor. Además, el 1600 usaba varios pines externos para seleccionar con qué dispositivo intentaba hablar, lo que complicaba aún más la interfaz.

Como la interfaz de dispositivos con el 1600 puede ser compleja, GI también lanzó una serie de chips de soporte con todos los circuitos necesarios incorporados. Estos incluían controladores de teclado, interfaces de pletina de casete para almacenamiento y una gran cantidad de sistemas similares. Para sistemas más complejos, GI introdujo el PIC de 8 bits en 1975. La idea era que un dispositivo usara el PIC para manejar todas las interfaces con el CP1600 de la computadora host, pero también usara su propio procesador interno para manejar el dispositivo real que era. conectado a. Por ejemplo, se podría implementar una unidad de disquete con un PIC comunicándose con la CPU por un lado y el controlador del disquete por el otro. De acuerdo con esta idea, lo que hoy se conocería como microcontrolador , el PIC incluía una pequeña cantidad de memoria de solo lectura (ROM) que se escribiría con el código del controlador del dispositivo del usuario, y una memoria de acceso aleatorio (RAM) separada para almacenar en búfer y trabajar con datos. Estos se conectaron por separado, lo que convirtió al PIC en un sistema de arquitectura Harvard con código y datos administrados en vías internas separadas.

En teoría, la combinación de controladores de dispositivo 1600 CPU y PIC proporcionó un sistema de control de dispositivo de muy alto rendimiento, similar en potencia y rendimiento a los controladores de canal que se ven en las computadoras centrales . En el ejemplo del controlador de disquete, por ejemplo, un solo PIC podría controlar la unidad, proporcionar una cantidad razonable de almacenamiento en búfer para mejorar el rendimiento y luego transferir datos hacia y desde la computadora host mediante acceso directo a la memoria (DMA) o mediante un código relativamente simple en la CPU. La desventaja de este enfoque fue el costo; Si bien el PIC no era necesario para dispositivos de baja velocidad como un teclado, muchas tareas requerirían uno o más PIC para construir un sistema completo.

Si bien el concepto de diseño tenía una serie de características atractivas, General Instrument nunca comercializó con fuerza el 1600, prefiriendo tratar sólo con grandes clientes e ignorando el mercado de gama baja. Esto dio como resultado una muy poca aceptación del sistema, siendo Intellivision el único uso realmente extendido con alrededor de tres millones de unidades. Cuando GI escindió su división de chips para formar Microchip Technology en 1985, terminó la producción del CP1600. Sin embargo, en ese momento, PIC había desarrollado un gran mercado de clientes que lo utilizaban para una amplia variedad de funciones, y PIC pasó a convertirse en uno de los productos principales de la nueva empresa.

Después del 1600

En 1985, General Instrument vendió su división de microelectrónica y los nuevos propietarios cancelaron casi todo lo que en ese momento estaba en su mayor parte obsoleto. El PIC, sin embargo, se actualizó con una EPROM interna para producir un controlador de canal programable . Al mismo tiempo, Plessey en el Reino Unido lanzó procesadores NMOS numerados PIC1650 y PIC1655 según el diseño GI, utilizando los mismos conjuntos de instrucciones, ya sea con máscara de usuario programable o versiones preprogramadas para marcadores automáticos e interfaces de teclado. [6]

En 1998, Microchip presentó el PIC 16F84, una versión borrable y programable mediante flash de su exitoso PIC16C84 programable en serie. En 2001, Microchip introdujo más dispositivos programables flash y la producción total comenzó en 2002. [7]

Hoy en día, hay disponible una gran variedad de PIC con varios periféricos integrados ( módulos de comunicación en serie , UART , núcleos de control de motores, etc.) y memoria de programa desde 256 palabras hasta 64 000 palabras y más (una "palabra" es una instrucción en lenguaje ensamblador). , cuya longitud varía de 8 a 16 bits , dependiendo de la microfamilia PIC específica).

PIC y PICmicro ahora son marcas comerciales registradas de Microchip Technology. Generalmente se piensa que PIC significa Controlador de interfaz periférica , aunque el acrónimo original de General Instruments para los dispositivos PIC1640 y PIC1650 iniciales era " Controlador de interfaz programable ". [3] El acrónimo fue rápidamente reemplazado por " Computadora inteligente programable ". [4]

El Microchip 16C84 ( PIC16x84 ), introducido en 1993, fue la primera [8] CPU de Microchip con memoria EEPROM en chip.

En 2013, Microchip enviaba más de mil millones de microcontroladores PIC cada año. [5] [ dudoso ]

Familias de dispositivos

Los microchips PIC están diseñados con una arquitectura Harvard y se ofrecen en varias familias de dispositivos. Las familias de gama básica y media utilizan memoria de datos de 8 bits de ancho, y las familias de gama alta utilizan memoria de datos de 16 bits. La última serie, PIC32MZ, es un microcontrolador basado en MIPS de 32 bits . Los tamaños de las palabras de instrucción son 12 bits (PIC10 y PIC12), 14 bits (PIC16) y 24 bits (PIC24 y dsPIC). Las representaciones binarias de las instrucciones de la máquina varían según la familia y se muestran en los listados de instrucciones PIC .

Dentro de estas familias, los dispositivos pueden denominarse PICnnCxxx (CMOS) o PICnnFxxx (Flash). Los dispositivos "C" generalmente se clasifican como "No aptos para nuevos desarrollos" (Microchip no los promueve activamente). La memoria de programa de los dispositivos "C" se describe de diversas formas como OTP, ROM o EEPROM. En octubre de 2016, el único producto OTP clasificado como "En producción" es el pic16HV540. Los dispositivos "C" con ventanas de cuarzo (para el borrado de rayos UV) ya no están disponibles en general.

PIC10 y PIC12

Estos dispositivos cuentan con una memoria de código de 12 bits de ancho, un archivo de registro de 32 bytes y una pequeña pila de llamadas de dos niveles de profundidad. Están representados por la serie PIC10, así como por algunos dispositivos PIC12 y PIC16. Los dispositivos básicos están disponibles en paquetes de 6 a 40 pines.

Generalmente, los primeros 7 a 9 bytes del archivo de registro son registros de propósito especial y los bytes restantes son RAM de propósito general. Los punteros se implementan utilizando un par de registros: después de escribir una dirección en el FSR (registro de selección de archivos), el registro INDF (f indirecto) se convierte en un alias para el registro direccionado. Si se implementa RAM almacenada, el número de banco se selecciona mediante los 3 bits superiores del FSR. Esto afecta a los números de registro 16 a 31; Los registros 0–15 son globales y no se ven afectados por los bits de selección de banco.

Debido al espacio de registro muy limitado (5 bits), a 4 registros raramente leídos no se les asignaron direcciones, sino que se escribieron mediante instrucciones especiales ( OPTIONy TRIS).

El espacio de direcciones ROM es 512 y solo puede especificar direcciones en la primera mitad de cada página de 512 palabras. Es decir, la instrucción CALL especifica los 9 bits inferiores de la dirección, pero sólo los 8 bits inferiores de esa dirección son un parámetro de la instrucción, mientras que el noveno bit (bit 8) está implícitamente especificado como 0 por la propia instrucción CALL.

Las tablas de búsqueda se implementan mediante un cálculo GOTO(asignación al registro PCL) en una tabla de RETLWinstrucciones. RETLW devuelve en el registro W una constante inmediata de 8 bits que está codificada en la instrucción.

Este "núcleo básico" no admite interrupciones ; todas las E/S deben ser sondeadas . Hay algunas variantes de "línea base mejorada" con soporte para interrupciones y una pila de llamadas de cuatro niveles.

Los dispositivos PIC10F32x cuentan con una memoria de código de rango medio de 14 bits de ancho de 256 o 512 palabras, un archivo de registro SRAM de 64 bytes y una pila de hardware de 8 niveles de profundidad. Estos dispositivos están disponibles en paquetes SMD de 6 pines y DIP de 8 pines (con dos pines sin usar). Sólo hay disponibles una entrada y tres pines de E/S. Hay disponible un conjunto complejo de interrupciones. Los relojes son un oscilador interno de alta frecuencia calibrado de 16 MHz con una opción de velocidades seleccionables mediante software y una fuente de baja potencia de 31 kHz.

PIC16

Microchip PIC16C58A
PIC16LF870 en zócalo SOIC

Estos dispositivos cuentan con una memoria de código de 14 bits de ancho y una pila de llamadas profunda mejorada de 8 niveles. El conjunto de instrucciones difiere muy poco de los dispositivos básicos, pero los dos bits de código de operación adicionales permiten direccionar directamente 128 registros y 2048 palabras de código. Hay algunas instrucciones diversas adicionales y dos instrucciones literales adicionales de 8 bits, sumar y restar. El núcleo de gama media está disponible en la mayoría de los dispositivos etiquetados como PIC12 y PIC16.

Los primeros 32 bytes del espacio de registro se asignan a registros de propósito especial; los 96 bytes restantes se utilizan para RAM de uso general. Si se utiliza RAM almacenada, los 16 registros superiores (0x70–0x7F) son globales, al igual que algunos de los registros de propósito especial más importantes, incluido el registro STATUS, que contiene los bits de selección del banco de RAM. (Los otros registros globales son FSR e INDF, los 8 bits bajos del contador de programa PCL, el registro de precarga alta de la PC PCLATH y el registro maestro de control de interrupciones INTCON).

El registro PCLATH proporciona bits de dirección de instrucción de alto orden cuando los 8 bits proporcionados por una escritura en el registro PCL, o los 11 bits proporcionados por una instrucción GOTOo CALL, no son suficientes para direccionar el espacio ROM disponible.

PIC17

La serie PIC17 nunca se hizo popular y ha sido reemplazada por la arquitectura PIC18 (sin embargo, vea los clones a continuación). La serie PIC17 no se recomienda para diseños nuevos y la disponibilidad puede estar limitada a los usuarios.

Las mejoras con respecto a los núcleos anteriores son códigos de operación de 16 bits de ancho (que permiten muchas instrucciones nuevas) y una pila de llamadas profunda de 16 niveles. Los dispositivos PIC17 se produjeron en paquetes de 40 a 68 pines.

La serie PIC17 introdujo una serie de nuevas características importantes: [9]

Una limitación significativa fue que el espacio de RAM estaba limitado a 256 bytes (26 bytes de registros de funciones especiales y 232 bytes de RAM de uso general), con cambios de banco incómodos en los modelos que admitían más.

PIC18

En 2000, Microchip introdujo la arquitectura PIC18. A diferencia de la serie PIC17, ha demostrado ser muy popular, con una gran cantidad de variantes de dispositivos actualmente en fabricación. A diferencia de los dispositivos anteriores, que a menudo se programaban en lenguaje ensamblador , C se ha convertido en el lenguaje de desarrollo predominante. [10]

La serie PIC18 hereda la mayoría de las características e instrucciones de la serie PIC17, al tiempo que agrega una serie de características nuevas importantes:

El espacio de RAM es de 12 bits, direccionado mediante un registro de selección de banco (BSR) de 4 bits y un desplazamiento de 8 bits en cada instrucción. Un bit de "acceso" adicional en cada instrucción selecciona entre el banco 0 ( a =0) y el banco seleccionado por el BSR ( a =1).

También está disponible una pila de 1 nivel para los registros STATUS, WREG y BSR. Se guardan en cada interrupción y pueden restaurarse al regresar. Si las interrupciones están deshabilitadas, también se pueden usar en llamada/retorno de subrutina configurando el bit s (agregando ", FAST" a la instrucción).

La función de incremento/decremento automático se mejoró eliminando los bits de control y agregando cuatro nuevos registros indirectos por FSR. Dependiendo del registro de archivo indirecto al que se acceda, es posible realizar un postdecremento, un postincremento o un preincremento del FSR; o forme la dirección efectiva agregando W a FSR.

En dispositivos PIC18 más avanzados, está disponible un "modo extendido" que hace que el direccionamiento sea aún más favorable al código compilado:

Los dispositivos PIC18 todavía están desarrollados (2021) y equipados con CIP (periféricos independientes del núcleo)

PIC24 y dsPIC

En 2001, Microchip introdujo la serie de chips dsPIC, [11] que entró en producción en masa a finales de 2004. Son los primeros microcontroladores inherentemente de 16 bits de Microchip. Los dispositivos PIC24 están diseñados como microcontroladores de uso general. Los dispositivos dsPIC incluyen además capacidades de procesamiento de señales digitales .

Aunque sigue siendo similar a las arquitecturas PIC anteriores, existen mejoras significativas: [12]

Algunas características son:

Los dsPIC se pueden programar en C utilizando el compilador XC16 de Microchip (anteriormente llamado C30), que es una variante de GCC .

La ROM de instrucciones tiene 24 bits de ancho. El software puede acceder a la ROM en palabras de 16 bits, donde las palabras pares contienen los 16 bits menos significativos de cada instrucción y las palabras impares contienen los 8 bits más significativos. La mitad superior de las palabras impares se lee como cero. El contador del programa tiene 23 bits de ancho, pero el bit menos significativo siempre es 0, por lo que hay 22 bits modificables.

Las instrucciones vienen en dos variedades principales, y las operaciones más importantes (sumar, xor, desplazamientos, etc.) permiten ambas formas:

Línea basada en MIPS PIC32M

PIC32MX

En noviembre de 2007, Microchip presentó la familia PIC32MX de microcontroladores de 32 bits, basados ​​en el MIPS32 M4K Core . [13] El dispositivo se puede programar utilizando el compilador Microchip MPLAB C para MCU PIC32 [ enlace muerto permanente ] , una variante del compilador GCC. Los primeros 18 modelos actualmente en producción (PIC32MX3xx y PIC32MX4xx) son compatibles pin a pin y comparten el mismo conjunto de periféricos con la familia PIC24FxxGA0xx de dispositivos (16 bits), lo que permite el uso de bibliotecas, herramientas de software y hardware comunes. Hoy en día, desde 28 pines en pequeños paquetes QFN hasta dispositivos de alto rendimiento con Ethernet, CAN y USB OTG, está disponible una gama completa de microcontroladores de 32 bits de rango medio.

La arquitectura PIC32 aportó una serie de características nuevas al portafolio de Microchip, que incluyen:

PIC32MZ

En noviembre de 2013, Microchip presentó la serie de microcontroladores PIC32MZ, basada en el núcleo MIPS M14K. La serie PIC32MZ incluye: [15] [16]

En 2015, Microchip lanzó la familia PIC32MZ EF, utilizando el procesador MIPS M5150 Warrior M-class actualizado. [17] [18]

En 2017, Microchip presentó la familia PIC32MZ DA, que presenta un controlador de gráficos integrado, un procesador de gráficos y 32 MB de DRAM DDR2. [19] [20]

PIC32MM

En junio de 2016, Microchip presentó la familia PIC32MM, especializada en aplicaciones de bajo consumo y bajo coste. [21] El PIC32MM presenta periféricos independientes del núcleo, modos de suspensión de hasta 500 nA y paquetes de 4 x 4 mm. [22] Los microcontroladores PIC32MM utilizan MIPS Technologies M4K, un procesador MIPS32 de 32 bits . Están pensados ​​para un consumo de energía muy bajo y limitados a 25 MHz. Su principal ventaja es que soportan instrucciones de 16 bits de MIPS, lo que hace que el tamaño del programa sea mucho más compacto (alrededor del 40%).

PIC32MK

Microchip presentó en 2017 la familia PIC32MK, especializada en control de motores, control industrial, Internet industrial de las cosas (IIoT) y aplicaciones CAN multicanal. [23]

Arquitectura central

La arquitectura PIC se caracteriza por sus múltiples atributos:

No hay distinción entre espacio de memoria y espacio de registro porque la RAM cumple la función tanto de la memoria como de los registros, y generalmente se hace referencia a la RAM simplemente como archivo de registro o simplemente como registros.

Espacio de datos (RAM)

Los PIC tienen un conjunto de registros que funcionan como RAM de uso general. Los registros de control de propósito especial para los recursos de hardware en el chip también se asignan al espacio de datos. La direccionabilidad de la memoria varía según la serie del dispositivo, y todos los tipos de dispositivos PIC tienen algún mecanismo bancario para extender el direccionamiento a memoria adicional (pero algunos modelos de dispositivos solo tienen implementado un banco). Series posteriores de dispositivos cuentan con instrucciones de movimiento, que pueden cubrir todo el espacio direccionable, independientemente del banco seleccionado. En dispositivos anteriores, cualquier movimiento de registro debía realizarse a través del acumulador.

Para implementar el direccionamiento indirecto, se utilizan un "registro de selección de archivos" (FSR) y un "registro indirecto" (INDF). Se escribe un número de registro en el FSR, después de lo cual las lecturas o escrituras en INDF serán en realidad desde o hacia el registro señalado por el FSR. Los dispositivos posteriores ampliaron este concepto con incrementos/decrementos posteriores y previos para una mayor eficiencia en el acceso a los datos almacenados secuencialmente. Esto también permite que FSR sea tratado casi como un puntero de pila (SP).

La memoria de datos externa no es direccionable directamente excepto en algunos dispositivos PIC18 con un alto número de pines. Sin embargo, los puertos de E/S generales se pueden usar para implementar un bus paralelo o una interfaz serie para acceder a la memoria externa y otros periféricos (usando subrutinas), con la salvedad de que dicho acceso a la memoria programada es (por supuesto) mucho más lento que el acceso a la memoria externa. memoria nativa del PIC MCU.

Espacio de código

El espacio de código generalmente se implementa como ROM en chip , EPROM o ROM flash . En general, no existe ninguna disposición para almacenar código en una memoria externa debido a la falta de una interfaz de memoria externa. Las excepciones son PIC17 y dispositivos PIC18 seleccionados con un alto número de pines. [25]

Tamaño de la palabra

Todos los PIC manejan (y abordan) datos en fragmentos de 8 bits. Sin embargo, la unidad de direccionabilidad del espacio de código no es generalmente la misma que la del espacio de datos. Por ejemplo, los PIC de las familias de línea base (PIC12) y de rango medio (PIC16) tienen memoria de programa direccionable en el mismo tamaño de palabra que el ancho de la instrucción, es decir, 12 o 14 bits respectivamente. Por el contrario, en la serie PIC18 la memoria del programa se direcciona en incrementos de 8 bits (bytes), lo que difiere del ancho de instrucción de 16 bits.

Para que quede claro, la capacidad de la memoria del programa generalmente se indica en número de instrucciones (de una sola palabra), en lugar de en bytes.

pilas

Los PIC tienen una pila de llamadas de hardware , que se utiliza para guardar direcciones de retorno. La pila de hardware no es accesible mediante software en dispositivos anteriores, pero esto cambió con los dispositivos de la serie PIC18.

En las primeras series faltaba soporte de hardware para una pila de parámetros de propósito general, pero esto mejoró enormemente en la serie PIC18, haciendo que la arquitectura de la serie PIC18 sea más amigable para los compiladores de lenguajes de alto nivel.

Conjunto de instrucciones

Los conjuntos de instrucciones PIC varían desde aproximadamente 35 instrucciones para los PIC de gama baja hasta más de 80 instrucciones para los PIC de gama alta. El conjunto de instrucciones incluye instrucciones para realizar una variedad de operaciones en registros directamente, en el acumulador y una constante literal, o en el acumulador y un registro , así como para ejecución condicional y bifurcación de programas.

Algunas operaciones, como la configuración y prueba de bits, se pueden realizar en cualquier registro numerado, pero las operaciones aritméticas de bioperandos siempre involucran a W (el acumulador), escribiendo el resultado en W o en el otro registro de operando. Para cargar una constante, es necesario cargarla en W antes de poder moverla a otro registro. En los núcleos más antiguos, todos los movimientos de registro debían pasar por W, pero esto cambió en los núcleos de "gama alta".

Los núcleos PIC tienen instrucciones de omisión, que se utilizan para ejecución condicional y bifurcación. Las instrucciones de omisión son "omitir si el bit está establecido" y "omitir si el bit no está establecido". Debido a que los núcleos anteriores a PIC18 solo tenían instrucciones de rama incondicionales, los saltos condicionales se implementan mediante un salto condicional (con la condición opuesta) seguido de una rama incondicional. Los saltos también son útiles para la ejecución condicional de cualquier instrucción siguiente inmediata. Es posible saltarse instrucciones. Por ejemplo, la secuencia de instrucciones "omitir si A; omitir si B; C" ejecutará C si A es verdadero o si B es falso.

La serie PIC18 implementó registros de sombra: estos son registros que guardan varios registros importantes durante una interrupción, proporcionando soporte de hardware para guardar automáticamente el estado del procesador al atender interrupciones.

En general, las instrucciones PIC se dividen en cinco clases:

Actuación

Las decisiones arquitectónicas están dirigidas a la maximización de la relación velocidad-coste. La arquitectura PIC estuvo entre los primeros diseños de CPU escalares [ cita necesaria ] y sigue estando entre los más simples y baratos. La arquitectura de Harvard, en la que las instrucciones y los datos provienen de fuentes separadas, simplifica enormemente el tiempo y el diseño de microcircuitos, y esto beneficia la velocidad del reloj, el precio y el consumo de energía.

El conjunto de instrucciones PIC es adecuado para la implementación de tablas de búsqueda rápida en el espacio del programa. Estas búsquedas requieren una instrucción y dos ciclos de instrucción. Muchas funciones se pueden modelar de esta manera. La optimización se ve facilitada por el espacio de programa relativamente grande del PIC (por ejemplo, palabras de 4096 × 14 bits en el 16F690) y por el diseño del conjunto de instrucciones, que permite constantes integradas. Por ejemplo, el objetivo de una instrucción de bifurcación puede estar indexado por W y ejecutar un "RETLW", que hace lo que se nombra: regresar con literal en W.

La latencia de interrupción es constante en tres ciclos de instrucción. Las interrupciones externas deben sincronizarse con el ciclo de instrucción de cuatro relojes; de lo contrario, puede haber una fluctuación del ciclo de una instrucción. Las interrupciones internas ya están sincronizadas. La latencia de interrupción constante permite a los PIC lograr secuencias de temporización de baja fluctuación impulsadas por interrupciones. Un ejemplo de esto es un generador de impulsos de sincronización de vídeo. Esto ya no es cierto en los modelos PIC más nuevos, porque tienen una latencia de interrupción síncrona de tres o cuatro ciclos.

Ventajas

Limitaciones

Las siguientes limitaciones de pila se abordaron en la serie PIC18 , pero aún se aplican a núcleos anteriores:

Con la memoria de programa paginada, hay dos tamaños de página de los que preocuparse: uno para CALL e GOTO y otro para GOTO calculado (normalmente utilizado para búsquedas de tablas). Por ejemplo, en PIC16, CALL e GOTO tienen 11 bits de direccionamiento, por lo que el tamaño de página es de 2048 palabras de instrucción. Para GOTO calculados, donde se agrega a PCL, el tamaño de página es de 256 palabras de instrucción. En ambos casos, los bits de dirección superiores los proporciona el registro PCLATH. Este registro debe cambiarse cada vez que el control se transfiere entre páginas. PCLATH también debe ser preservado por cualquier manejador de interrupciones. [27]

Desarrollo del compilador

Si bien hay varios compiladores comerciales disponibles, en 2008, Microchip lanzó sus propios compiladores C, C18 y C30, para la línea de procesadores 18F, 24F y 30/33F.

A partir de 2013, Microchip ofrece su serie XC de compiladores, para usar con MPLAB X. Microchip eventualmente eliminará sus compiladores más antiguos, como el C18, y recomienda utilizar los compiladores de la serie XC para nuevos diseños. [28]

El conjunto de instrucciones RISC del código del lenguaje ensamblador PIC puede dificultar la comprensión del flujo general. El uso sensato de macros simples puede aumentar la legibilidad del lenguaje ensamblador PIC. Por ejemplo, el ensamblador original de Parallax PIC ("SPASM") tiene macros que ocultan W y hacen que el PIC parezca una máquina de dos direcciones. Tiene instrucciones macro como mov b, a(mover los datos de la dirección a a la dirección b ) y add b, a(agregar datos de la dirección a a los datos en la dirección b ). También oculta las instrucciones de salto al proporcionar instrucciones macro de rama de tres operandos, como cjne a, b, dest(comparar a con b y saltar al destino si no son iguales).

Funciones de hardware

Los dispositivos PIC generalmente presentan:

Variantes

Dentro de una serie, todavía hay muchas variantes de dispositivos dependiendo de los recursos de hardware que presenta el chip:

Tendencias

La primera generación de PIC con almacenamiento EPROM ha sido sustituida casi por completo por chips con memoria flash . Asimismo, el conjunto de instrucciones original de 12 bits del PIC1650 y sus descendientes directos ha sido reemplazado por conjuntos de instrucciones de 14 y 16 bits. Microchip todavía vende versiones OTP (programables una sola vez) y con ventana (borrables por UV) de algunos de sus PIC basados ​​en EPROM para soporte heredado o pedidos por volumen. El sitio web de Microchip enumera los PIC que no se pueden borrar eléctricamente como OTP. Se pueden solicitar versiones con ventana borrables por rayos UV de estos chips.

Número de pieza

La F en el número de pieza de PICMicro generalmente indica que PICmicro usa memoria flash y se puede borrar electrónicamente. Por el contrario, una C generalmente significa que sólo se puede borrar exponiendo el troquel a luz ultravioleta (lo cual sólo es posible si se utiliza un estilo de paquete con ventana). Una excepción a esta regla es el PIC16C84, que utiliza EEPROM y, por lo tanto, se puede borrar eléctricamente.

Una L en el nombre indica que la pieza funcionará a un voltaje más bajo, a menudo con límites de frecuencia impuestos. [29] Las piezas diseñadas específicamente para funcionamiento de bajo voltaje, dentro de un rango estricto de 3 a 3,6 voltios, están marcadas con una J en el número de pieza. Estas piezas también son excepcionalmente tolerantes a E/S, ya que aceptarán hasta 5 V como entradas. [29]

Herramientas de desarrollo

Microchip proporciona un paquete IDE gratuito llamado MPLAB X , que incluye un ensamblador, un enlazador, un simulador de software y un depurador. También venden compiladores de C para PIC10, PIC12, PIC16, PIC18, PIC24, PIC32 y dsPIC, que se integran perfectamente con MPLAB X. También hay disponibles versiones gratuitas de los compiladores de C con todas las funciones. Pero para las versiones gratuitas, las optimizaciones se desactivarán después de 60 días. [30]

Varios terceros desarrollan compiladores de lenguaje C para PIC, muchos de los cuales se integran a MPLAB y/o cuentan con su propio IDE. MeLabs, Inc. ofrece un compilador con todas las funciones para el lenguaje PICBASIC para programar microcontroladores PIC. Mikroelektronika ofrece compiladores PIC en lenguajes de programación C, BASIC y Pascal.

Existe un lenguaje de programación gráfico, Flowcode , capaz de programar dispositivos PIC de 8 y 16 bits y generar código C compatible con PIC. Existe en numerosas versiones, desde una demostración gratuita hasta una edición profesional más completa.

Proteus Design Suite puede simular muchos de los dispositivos PIC populares de 8 y 16 bits junto con otros circuitos conectados al PIC en el esquema. El programa a simular puede desarrollarse dentro del propio Proteus, MPLAB o cualquier otra herramienta de desarrollo. [31]

Programadores de dispositivos

Este es un programador de la era 2003 para la familia de microcontroladores Microchip "PIC". Se conecta mediante un cable RS 232 a un PC compatible con software de desarrollo en funcionamiento. En 2003, esta unidad costaba 300 dólares canadienses (unos 200 dólares estadounidenses en ese momento).

Los dispositivos llamados " programadores " se utilizan tradicionalmente para introducir el código del programa en el PIC de destino. La mayoría de los PIC que Microchip vende actualmente cuentan con capacidades ICSP (programación en serie en circuito) y/o LVP (programación de bajo voltaje), lo que permite programar el PIC mientras está ubicado en el circuito de destino .

Microchip ofrece programadores/depuradores en las series MPLAB y PICKit . MPLAB ICD4 y MPLAB REAL ICE son los programadores y depuradores actuales para ingeniería profesional, mientras que PICKit 3 es una línea de programadores/depuradores de bajo costo para aficionados y estudiantes.

Carga de arranque

Muchos de los PIC basados ​​en flash de gama alta también pueden autoprogramarse (escribir en su propia memoria de programa), un proceso conocido como carga de arranque. Las placas de demostración están disponibles con un pequeño gestor de arranque programado de fábrica que se puede utilizar para cargar programas de usuario a través de una interfaz como RS-232 o USB , eliminando así la necesidad de un dispositivo programador.

Alternativamente, hay disponible un firmware de cargador de arranque que el usuario puede cargar en el PIC mediante ICSP. Después de programar el gestor de arranque en el PIC, el usuario puede reprogramar el dispositivo mediante RS232 o USB, junto con un software informático especializado.

Las ventajas de un gestor de arranque sobre ICSP son velocidades de programación más rápidas, ejecución inmediata del programa después de la programación y la capacidad de depurar y programar utilizando el mismo cable.

Tercero

Hay muchos programadores para microcontroladores PIC, desde diseños extremadamente simples que se basan en ICSP para permitir la descarga directa de código desde una computadora host, hasta programadores inteligentes que pueden verificar el dispositivo en varios voltajes de suministro. Muchos de estos programadores complejos utilizan un PIC preprogramado para enviar los comandos de programación al PIC que se va a programar. El tipo de programador inteligente es necesario para programar modelos PIC anteriores (principalmente tipo EPROM) que no admiten la programación en circuito.

Los programadores de terceros abarcan desde planos para construir los suyos propios hasta kits de autoensamblaje y unidades listas para usar completamente probadas. Algunos son diseños simples que requieren una PC para realizar la señalización de programación de bajo nivel (estos generalmente se conectan al puerto serie o paralelo y constan de unos pocos componentes simples), mientras que otros tienen la lógica de programación incorporada (estos generalmente usan un puerto serie). o conexión USB, suelen ser más rápidos y, a menudo, se construyen utilizando los propios PIC para el control).

Depuración

Depuración en circuito

Todos los dispositivos PIC más nuevos cuentan con una interfaz ICD (depuración en circuito), integrada en el núcleo de la CPU, que permite la depuración interactiva del programa junto con MPLAB IDE. Los depuradores MPLAB ICD y MPLAB REAL ICE pueden comunicarse con esta interfaz mediante la interfaz ICSP .

Sin embargo, este sistema de depuración tiene un precio, a saber, un número limitado de puntos de interrupción (1 en dispositivos más antiguos, 3 en dispositivos más nuevos), pérdida de algunas E/S (con la excepción de algunos PIC de 44 pines de montaje en superficie que tienen líneas dedicadas para la depuración). y pérdida de algunas funciones del chip.

Algunos dispositivos no tienen soporte de depuración en el chip debido al costo o a la falta de pines. Algunos chips más grandes tampoco tienen módulo de depuración. Para depurar estos dispositivos, se requiere una versión -ICD especial del chip montada en una placa secundaria que proporciona puertos dedicados. Algunos de estos chips de depuración pueden funcionar como más de un tipo de chip mediante el uso de puentes seleccionables en la placa secundaria. Esto permite que arquitecturas prácticamente idénticas que no cuentan con todos los dispositivos periféricos en el chip sean reemplazadas por un único chip ICD. Por ejemplo: el 16F690-ICD funcionará como una de seis partes diferentes, cada una de las cuales incluye ninguno, algunos o todos los cinco periféricos en el chip. [32]

Emuladores en circuito

Microchip ofrece tres emuladores completos en circuito : el MPLAB ICE2000 (interfaz paralela, un convertidor USB disponible); el MPLAB ICE4000 más nuevo (conexión USB 2.0); y más recientemente, el REAL ICE (conexión USB 2.0). Todas estas herramientas se utilizan normalmente junto con MPLAB IDE para la depuración interactiva a nivel de origen del código que se ejecuta en el destino.

Sistemas operativos

Los proyectos PIC pueden utilizar sistemas operativos en tiempo real como FreeRTOS , AVIX RTOS, uRTOS, Salvo RTOS u otras bibliotecas similares para la programación y priorización de tareas .

Un proyecto de código abierto de Serge Vakulenko adapta 2.11BSD a la arquitectura PIC32, bajo el nombre RetroBSD. Esto trae al microcontrolador un sistema operativo familiar tipo Unix, incluido un entorno de desarrollo integrado, dentro de las limitaciones del hardware integrado. [33]

Clones

Paralaje

Parallax produjo una serie de microcontroladores tipo PICmicro conocidos como Parallax SX . Actualmente está descatalogado. Diseñados para ser arquitectónicamente similares a los microcontroladores PIC utilizados en las versiones originales del BASIC Stamp , los microcontroladores SX reemplazaron al PIC en varias versiones posteriores de ese producto.

Los SX de Parallax son microcontroladores RISC de 8 bits, que utilizan una palabra de instrucción de 12 bits, que funcionan rápidamente a 75 MHz (75 MIPS). Incluyen hasta 4096 palabras de 12 bits de memoria flash y hasta 262 bytes de memoria de acceso aleatorio , un contador de ocho bits y otra lógica de soporte. Hay módulos de biblioteca de software para emular interfaces I²C y SPI , UART, generadores de frecuencia, contadores de medidas y convertidores A/D PWM y sigma-delta. Otras interfaces son relativamente fáciles de escribir y los módulos existentes se pueden modificar para obtener nuevas funciones.

PKK Milandr

1886VE2U

El PKK ruso Milandr produce microcontroladores que utilizan la arquitectura PIC17 como la serie 1886. [34] [35] [36] [37] La ​​memoria de programa consta de una memoria Flash de hasta 64 kB en el 1886VE2U ( ruso : 1886ВЕ2У ) o EEPROM de 8 kB en el 1886VE5U ( 1886ВЕ5У ). Los modelos 1886VE5U ( 1886ВЕ5У ) a 1886VE7U ( 1886ВЕ7У ) están especificados para el rango de temperatura militar de -60 °C a +125 °C. Las interfaces de hardware en las distintas partes incluyen USB, CAN, I2C, SPI, así como convertidores A/D y D/A. El 1886VE3U ( 1886ВЕ3У ) contiene un acelerador de hardware para funciones criptográficas según GOST 28147-89 . Incluso hay chips endurecidos por radiación con las designaciones 1886VE8U ( 1886ВЕ8У ) y 1886VE10U ( 1886ВЕ10У ). [38]

ELAN Microelectrónica

ELAN Microelectronics Corp. en Taiwán fabrica una línea de microcontroladores basados ​​en la arquitectura PIC16, con instrucciones de 13 bits y un espacio de direcciones RAM más pequeño (6 bits). [39]

Semiconductores Holtek

Holtek Semiconductor fabrica una gran cantidad de microcontroladores muy baratos [40] (tan solo 8,5 centavos en cantidad [41] ) con un conjunto de instrucciones de 14 bits sorprendentemente similar al PIC16.

Otros fabricantes en Asia

Muchos microcontroladores OTP de costo ultrabajo de fabricantes asiáticos, que se encuentran en la electrónica de consumo de bajo costo, se basan en la arquitectura PIC o en una forma modificada. La mayoría de los clones solo se dirigen a las piezas de referencia (PIC16C5x/PIC12C50x). Microchip ha intentado demandar a algunos fabricantes cuando la copia es particularmente atroz, [42] [43] sin éxito. [44] [45] [ se necesita una mejor fuente ]

Ver también

Referencias

  1. ^ "Copia archivada" (PDF) . Archivado desde el original (PDF) el 23 de marzo de 2012 . Consultado el 29 de junio de 2011 .{{cite web}}: Mantenimiento CS1: copia archivada como título ( enlace )
  2. ^ "Árbol genealógico PICmicro", Presentación del seminario PIC16F "Copia archivada" (PDF) . Archivado desde el original (PDF) el 2 de marzo de 2012 . Consultado el 2 de agosto de 2011 .{{cite web}}: Mantenimiento CS1: copia archivada como título ( enlace )
  3. ^ ab "MOS DATA 1976", Libro de datos de instrumentos generales de 1976
  4. ^ ab "Catálogo de datos de 1977", Micro Electronics de General Instrument Corporation "Copia archivada" (PDF) . Archivado desde el original (PDF) el 15 de agosto de 2011 . Consultado el 2 de agosto de 2011 .{{cite web}}: Mantenimiento CS1: copia archivada como título ( enlace )
  5. ^ ab Lawson, Eric (16 de mayo de 2013). "Microchip Technology ofrece el microcontrolador PIC® número 12 mil millones al fabricante líder de motores, Nidec Corporation". Comunicado de prensa sobre microchips. Archivado desde el original el 21 de julio de 2013 . Consultado el 21 de diciembre de 2017 . Microchip entregó este MCU número 12 mil millones aproximadamente 10 meses después de entregar el número 11 mil millones.
  6. ^ Manual de circuitos integrados de televisión por cable vía satélite de Plessey, mayo de 1986
  7. ^ Dunn, D. (31 de agosto de 2001). "Microchip que ofrece flash a precios OTP". EETimes .
  8. ^ "Salón de la fama del chip: microcontrolador PIC 16C84 con tecnología de microchip". Espectro IEEE . 30 de junio de 2017 . Consultado el 16 de septiembre de 2018 .
  9. ^ "Hoja de datos del microcontrolador PIC17C4x" (PDF) . Tecnología de microchips. 1996. DS30412C . Consultado el 16 de agosto de 2016 .
  10. ^ "Microchip PIC micros y C: código fuente y de muestra". www.microchipc.com . Consultado el 7 de abril de 2018 .
  11. ^ "LA TECNOLOGÍA DE MICROCHIP ESTRENA LOS MICROCONTROLADORES DE 16 BITS DE MAYOR RENDIMIENTO DEL MUNDO". Pastilla. 2001-10-01. Archivado desde el original el 11 de junio de 2004 . Consultado el 14 de diciembre de 2022 .
  12. ^ "Descripción general de la familia PIC24H" (PDF) . Consultado el 23 de septiembre de 2007 .
  13. ^ "MIPS32® M4K® Core - Tecnologías MIPS -MIPS en todas partes - Tecnologías MIPS". Archivado desde el original el 2 de febrero de 2009 . Consultado el 21 de enero de 2009 .
  14. ^ "MCU PIC de 32 bits" . Consultado el 13 de octubre de 2010 .
  15. ^ "MCU de 32 bits: tecnología de microchip". www.microchip.com . Consultado el 7 de abril de 2018 .
  16. ^ "Las MCU de 32 bits PIC32MZ de Microchip tienen un rendimiento líder en su clase de 330 DMIPS y 3,28 CoreMarks™/MHz; una densidad de código un 30% mejor". Pastilla. 2013-11-18. Archivado desde el original el 21 de noviembre de 2013 . Consultado el 14 de diciembre de 2022 .
  17. ^ "Bienvenidos al Blog de Imaginación". imgtec.com . Consultado el 7 de abril de 2018 .
  18. ^ "PIC32MZ EF | Tecnología de microchip".
  19. ^ "Microchip presenta la primera MCU de la industria con GPU 2D integrada y memoria DDR2 integrada para capacidades gráficas innovadoras". Archivado desde el original el 2017-07-20 . Consultado el 9 de agosto de 2023 .
  20. ^ "Familia PIC32MZ DA". Pastilla. Archivado desde el original el 2018-04-02 . Consultado el 14 de diciembre de 2022 .
  21. ^ "Microchip lanza la familia PIC32 rentable y de menor consumo de energía: tecnología de microchip". www.microchip.com . Consultado el 7 de abril de 2018 .
  22. ^ "Familia PIC32MM de microcontroladores de 32 bits de extrema baja potencia (XLP) y bajo costo" . Consultado el 9 de agosto de 2023 .
  23. ^ "Familia PIC32MK". Pastilla. Archivado desde el original el 16 de marzo de 2018 . Consultado el 14 de diciembre de 2022 .
  24. ^ "Hoja de datos PIC16F84A" (PDF) .
  25. ^ Rovnak, Tim (2003). "AN869: Técnicas de interfaz de memoria externa para PIC18F8XXX" (PDF) . Tecnología de microchips. DS00869B . Consultado el 24 de agosto de 2009 .
  26. ^ "Selector avanzado de piezas de microchip". Pastilla. Archivado desde el original el 10 de enero de 2016 . Consultado el 14 de diciembre de 2022 .
  27. ^ "Desaceleración 208.80.153.50,10-192-48-43&c=1&t=43197.5553483796". massmind.org . Consultado el 7 de abril de 2018 .
  28. ^ "MPLAB® XC: Soluciones de compilación". microchip.com . Consultado el 7 de abril de 2018 .
  29. ^ ab "Centro de diseño 3V" . Consultado el 2 de agosto de 2011 .
  30. ^ "Compilador MPLAB XC8 para MCU PIC10/12/16/18".
  31. ^ "Cómo simular el microcontrolador PIC en Proteus Design Suite 8 - Galería de circuitos". 2013-08-02 . Consultado el 12 de julio de 2016 .
  32. ^ Documento de microchip n.º DS51292R
  33. ^ "inicio - RetroBSD". retrobsd.org . Consultado el 7 de abril de 2018 .
  34. ^ "Milandr K1886VE: el PIC que fue a Rusia". La choza de la CPU. 10 de marzo de 2016 . Consultado el 21 de julio de 2016 .
  35. ^ "Высокопроизводительные 8-ми разрядные КМОП microcontroladores 1886ВЕ1 y 1886ВЕ2. Перечень отличий от ближайшего функ ционального аналога PIC17C756A" [Microcontroladores CMOS de 8 bits de alto rendimiento 1886VE1 y 1886VE2. Lista de diferencias con el analógico funcional más cercano PIC17C756A.] (PDF) (en ruso). Moscú: PKK Milandr. 7 de septiembre de 2006. Archivado desde el original (PDF) el 5 de febrero de 2017 . Consultado el 23 de octubre de 2017 .
  36. ^ "Каталог продукции группы компаний" Миландр "2017" [Catálogo de productos del Grupo Milandr 2017] (PDF) (en ruso). Moscú: PKK Milandr. Archivado desde el original (PDF) el 27 de octubre de 2017 . Consultado el 18 de abril de 2018 .
  37. ^ "1886ая серия" [serie de 1886] (en ruso) . Consultado el 21 de julio de 2016 .
  38. ^ "Parte II: ¿Cómo" abrir "el microchip y qué hay dentro? Z80, Multiclet, MSP430, PIC y más". ZeptoBares. 21 de febrero de 2013 . Consultado el 11 de abril de 2017 .
  39. ^ "義隆電子股份有限公司義隆電子,再創未來!".
  40. ^ Carlson, Jay (15 de septiembre de 2017). "Holtek HT-66". "El increíble microcontrolador de 1 dólar ". Consultado el 8 de julio de 2019 .
  41. ^ Aufranc, Jean-Luc (3 de agosto de 2016). "¿Cuál es la MCU más barata? Mi prueba: MCU Holtek HT48R002 de 8 bits que se vende por $ 0,085". Blog de software CNX . Consultado el 8 de julio de 2019 .
  42. ^ "Microchip Technology presenta una demanda por infracción de derechos de autor contra MICON Design Technology CO. LTD" (PDF) (Presione soltar). 29 de enero de 1999 . Consultado el 23 de octubre de 2017 .
  43. ^ "Microchip Technology emprende acciones legales contra el circuito integrado Haier de Shanghai" (PDF) (Presione soltar). 5 de julio de 2007 . Consultado el 23 de octubre de 2017 .
  44. ^ Fuller, Brian (1 de mayo de 2013). "¿Luchar contra la falsificación china? Olvídalo". Noticias de negocios electrónicos .
  45. ^ "El chip Haier Integrated ganará la batalla de las patentes contra el microchip estadounidense". Componentes electrónicos sb2a0 (blog). 18 de mayo de 2015 . Consultado el 8 de julio de 2019 .

Otras lecturas

enlaces externos