El nombre actual no es un
acrónimo. En realidad, el nombre completo es
PICmicro, aunque generalmente se utiliza como
Peripheral Interface Controller (controlador de interfaz periférico).
El PIC original se diseñó para ser usado con la nueva
CPU de 16
bitsentrada y salida,
y el PIC de 8 bits se desarrolló en 1975 para mejorar el rendimiento
del sistema quitando peso de E/S a la CPU. El PIC utilizaba
microcódigo simple almacenado en
ROM para realizar estas tareas; y aunque el término no se usaba por aquel entonces, se trata de un diseño
RISC que ejecuta una
instrucción cada 4
ciclos del
oscilador. CP16000. Siendo en general una buena CPU, ésta tenía malas prestaciones de
En 1985 la división de
microelectrónica de General Instrument se separa como compañía independiente que es incorporada como filial (el
14 de diciembre de 1987 cambia el nombre a
Microchip Technology
y en 1989 es adquirida por un grupo de inversores) y el nuevo
propietario canceló casi todos los desarrollos, que para esas fechas la
mayoría estaban obsoletos. El PIC, sin embargo, se mejoró con
EPROM para conseguir un
controlador de canal programable. Hoy en día multitud de PICs vienen con varios periféricos incluidos (módulos de comunicación serie,
UARTs, núcleos de control de motores, etc.) y con memoria de programa desde 512 a 32.000 palabras (una
palabra corresponde a una instrucción en
lenguaje ensamblador, y puede ser de 12, 14, 16 ó 32 bits, dependiendo de la familia específica de PICmicro).
Juego de instrucciones y entorno de programación
El PIC usa un
juego de instrucciones tipo
RISC,
cuyo número puede variar desde 35 para PICs de gama baja a 70 para los
de gama alta. Las instrucciones se clasifican entre las que realizan
operaciones entre el
acumulador
y una constante, entre el acumulador y una posición de memoria,
instrucciones de condicionamiento y de salto/retorno, implementación de
interrupciones y una para pasar a modo de bajo consumo llamada
sleep.
Microchip proporciona un
entorno de desarrollo freeware llamado
MPLABsimulador software y un
ensamblador. Otras empresas desarrollan compiladores
C y
BASIC.
Microchip también vende compiladores para los PICs de gama alta ("C18"
para la serie F18 y "C30" para los dsPICs) y se puede descargar una
edición para estudiantes del C18 que inhabilita algunas opciones después
de un tiempo de evaluación. que incluye un
Uno de los más modernos y completos compiladores para lenguaje C es
[mikroC], que es un ambiente de desarrollo con editor de texto,
bibliotecas
con múltiples funciones para todos los módulos y herramientas
incorporadas para facilitar enormemente el proceso de programación.
Arquitectura central
La arquitectura del PIC es sumamente minimalista. Esta caracterizada por las siguientes prestaciones:
- Área de código y de datos separadas (Arquitectura Harvard).
- Un reducido número de instrucciones de longitud fija.
- Implementa segmentación
de tal modo que la mayoria de instrucciones duran 1 tiempo de
instruccion (o 4 tiempos de reloj). Pueden haber instrucciones de dos
tiempos de instruccion (saltos, llamadas y retornos de subrutinas y
otras) o inclusive con mas tiempo de instruccion en PICs de gama alta.
Esto implica que el rendimiento real de instrucciones por segundo del
procesador es de al menos 1/4 de la frecuencia del oscilador.
- Un solo acumulador (W), cuyo uso (como operador de origen) es implícito (no está especificado en la instrucción).
- Todas las posiciones de la RAM funcionan como registros de origen y/o de destino de operaciones matemáticas y otras funciones.[1]
- Una pila de hardware para almacenar instrucciones de regreso de funciones.
- Una relativamente pequeña cantidad de espacio de datos direccionable
(típicamente, 256 bytes), extensible a través de manipulación de bancos
de memoria.
- El espacio de datos está relacionado con el CPU, puertos, y los registros de los periféricos.
- El contador de programa está también relacionado dentro del espacio
de datos, y es posible escribir en él (permitiendo saltos indirectos).
A diferencia de la mayoría de otros CPU, no hay distinción entre los
espacios de memoria y los espacios de registros, ya que la RAM cumple
ambas funciones, y esta es normalmente referida como "archivo de
registros" o simplemente, registros.
Espacio de datos (RAM)
Los microcontroladores PIC tienen una serie de registros que funcionan como una
RAM
de propósito general. Los registros de propósito específico para los
recursos de hardware disponibles dentro del propio chip también están
direccionados en la RAM. La direccionabilidad de la memoria varía
dependiendo de la línea de dispositivos, y todos los dispositivos PIC
tienen algún tipo de mecanismo de manipulación de bancos de memoria que
pueden ser usados para acceder memoria externa o adicional. Las series
más recientes de dispositivos disponen de funciones que pueden cubrir
todo el espacio direccionable, independientemente del banco de memoria
seleccionado. En los dispositivos anteriores, esto debía lograrse
mediante el uso del acumulador.
Para implementar direccionamiento indirecto, se usa un registro de
"selección de registro de archivo" (FSR) y uno de "registro indirecto"
(INDF): Un número de registro es escrito en el FSR, haciendo que las
lecturas o escrituras al INDF serán realmente hacia o desde el registro
apuntado por el FSR. Los dispositivos más recientes extienden este
concepto con post y preincrementos/decrementos para mayor eficiencia al
acceder secuencialmente a la información almacenada. Esto permite que se
pueda tratar al FSR como un puntero de pila.
La memoria de datos externa no es directamente direccionable excepto
en algunos microcontroladores PIC 18 de gran cantidad de pines.
Tamaño de palabra
El tamaño de palabra de los
microcontroladores
PIC es fuente de muchas confusiones. Todos los PICs (excepto los dsPIC)
manejan datos en trozos de 8 bits, con lo que se deberían llamar
microcontroladores de 8 bits. Pero a diferencia de la mayoría de las
CPU, el PIC usa
arquitectura Harvard,
por lo que el tamaño de las instrucciones puede ser distinto del de la
palabra de datos. De hecho, las diferentes familias de PICs usan tamaños
de instrucción distintos, lo que hace difícil comparar el tamaño del
código del PIC con el de otros microcontroladores. Por ejemplo, un
microcontrolador tiene 6144 bytes de memoria de programa: para un PIC de
12 bits esto significa 4096 palabras y para uno de 16 bits, 3072
palabras.
Programación del PIC
Para transferir el código de un
ordenador al PIC normalmente se usa un dispositivo llamado
programador. La mayoría de PICs que Microchip distribuye hoy en día incorporan ICSP (
In Circuit Serial Programming, programación serie incorporada) o LVP (
Low Voltage Programming,
programación a bajo voltaje), lo que permite programar el PIC
directamente en el circuito destino. Para la ICSP se usan los pines RB6 y
RB7 (En algunos modelos pueden usarse otros pines como el GP0 y GP1 o
el RA0 y RA1) como reloj y datos y el MCLR para activar el modo
programación aplicando un voltaje de 13 voltios. Existen muchos
programadores de PICs, desde los más simples que dejan al software los
detalles de comunicaciones, a los más complejos, que pueden verificar el
dispositivo a diversas tensiones de alimentación e implementan en
hardware casi todas las funcionalidades. Muchos de estos programadores
complejos incluyen ellos mismos PICs preprogramados como interfaz para
enviar las órdenes al PIC que se desea programar. Uno de los
programadores más simples es el
TE20, que utiliza la línea TX del puerto
RS232
como alimentación y las líneas DTR y CTS para mandar o recibir datos
cuando el microcontrolador está en modo programación. El software de
programación puede ser el ICprog, muy común entre la gente que utiliza
este tipo de microcontroladores. Entornos de programación basados en
intérpretes BASIC ponen al alcance de cualquiera proyectos que
parecieran ser ambiciosos.
Se pueden obtener directamente de Microchip muchos programadores/
depuradores (octubre de 2005):
Un buena recopilación de herramientas de desarrollo para PICs puede encontrarse
Aquí. (Mayo de 2009).
Programadores
- PICStart Plus (puerto serie y USB)
- Promate II (puerto serie)
- MPLAB PM3 (puerto serie y USB)
- ICD2 (puerto serie y USB)
- ICD3 (USB)
- PICKit 1 (USB)
- IC-Prog 1.06B
- PICAT 1.25 (puerto USB2.0 para PICs y Atmel)
- WinPic 800 (puerto paralelo, serie y USB)
- PICKit 2 (USB)
- PICKit 3 (USB)
- Terusb1.0
- Eclipse (PICs y AVRs. USB.)
- MasterProg (USB)
Depuradores integrados
- ICD (Serie)
- ICD2 (Serie ó full speed USB - 2M bits/s)
- ICD3 (High speed USB - 480M bits/s)
Emuladores
- Proteus - ISIS
- ICE2000 (puerto paralelo, convertidor a USB disponible)
- ICE4000 (USB)
- PIC EMU
- ISEC
- PIC CDlite
- PIC Simulator
Características
Los PICs actuales vienen con una amplia gama de mejoras hardware incorporadas:
Variaciones del PIC
PICs modernos
Los viejos PICs con memoria
PROM o
EPROM se están renovando gradualmente por chips con
memoria Flash.
Así mismo, el juego de instrucciones original de 12 bits del PIC1650 y
sus descendientes directos ha sido suplantado por juegos de
instrucciones de 14 y 16 bits. Microchip todavía vende versiones PROM y
EPROM de la mayoría de los PICs para soporte de aplicaciones antiguas o
grandes pedidos.
Se pueden considerar tres grandes gamas de MCUs PIC en la actualidad:
Los básicos (Linebase), los de medio rango (Mid Range) y los de alto
desempeño (high performance). Los PIC18 son considerandos de alto
desempeño y tienen entre sus miembros a PICs con módulos de comunicación
y protocolos avanzados (USB, Ethernet, Zigbee por ejemplo).
Clones del PIC
Por todos lados surgen compañías que ofrecen versiones del PIC más
baratas o mejoradas. La mayoría suelen desaparecer rápidamente. Una de
ellas que va perdurando es
Ubicom (antiguamente Scenix) que vende
clonesOpenCores tiene un núcleo del PIC16F84 escrito en
Verilog. del PIC que funcionan mucho más rápido que el original.
PICs wireless
El microcontrolador rfPIC integra todas las prestaciones del PICmicro de Microchip con la capacidad de comunicación
wireless UHF para aplicaciones
RF
de baja potencia. Estos dispositivos ofrecen un diseño muy comprimido
para ajustarse a los cada vez más demandados requerimientos de
miniaturización en aparatos electrónicos. Aun así, no parecen tener
mucha salida en el mercado.
PICs para procesado de señal (dsPICs)
Los
dsPICs
son el penúltimo lanzamiento de Microchip, comenzando a producirlos a
gran escala a finales de 2004. Son los primeros PICs con bus de datos
inherente de 16 bits. Incorporan todas las posibilidades de los
anteriores PICs y añaden varias operaciones de
DSP implementadas en hardware, como multiplicación con suma de acumulador (
multiply-accumulate, o
MAC),
barrel shifting,
bit reversion o multiplicación 16x16 bits.
PICs de 32 bits (PIC32)
Microchip Technology lanzó en noviembre de 2007 los nuevos
microcontroladores de 32 bits con una velocidad de procesamiento de
hasta 1.6 DMIPS/MHz con capacidad HOST USB. Sus frecuencias de reloj
pueden alcanzar los 80MHz a pa Trtir de cuarzos estándares de 4 a 5MHz
gracias a un PLL interno. Funcionan a 3.3V en sus puertos de entrada y
salida, aunque el fabricante indica que salvo en los pines con función
analógina, en la mayoría se toleran tensiones de hasta 5V. Disponen de
una arquitectura optimizada con alto grado de paralelismo y núcleo de
tipo M4K y una elevada capacidad de memoria RAM y FLASH ROM. Todo ello
hace que estos MCUs permiten un elevado procesamiento de información.
PICs más comúnmente usados
- PIC12C508/509 (encapsulamiento reducido de 8 pines, oscilador interno, popular en pequeños diseños como el iPod remote).
- PIC12F629/675
- PIC16F84 (Considerado obsoleto, pero imposible de descartar y muy popular)
- PIC16F84A (Buena actualización del anterior, algunas versiones funcionan a 20 MHz, compatible 1:1)
- PIC16F628A (Es la opción típica para iniciar una migración o
actualización de diseños antiguos hechos con el PIC16F84A. Posee puerto
serial, módulos de comparación análoga, PWM, módulo CCP, rango de
operación de voltaje aumentado, entre otras )
- PIC16F88 (Nuevo sustituto del PIC16F84A con más memoria, oscilador
interno, PWM, etc que podría convertirse en popular como su hermana).
- La subfamilia PIC16F87X y PIC16F87XA
(los hermanos mayores del PIC16F84 y PIC16F84A, con cantidad de mejoras
incluidas en hardware. Bastante común en proyectos de aficionados).
- PIC16F886/887 (Nuevo sustituto del 16F876A y 16F877A con la diferencia que el nuevo ya se incluye oscilador interno).
- PIC16F193x (Nueva gama media de PIC optimizado y con mucha RAM,
ahora con 49 instrucciones por primera vez frente a las 35 de toda la
vida).
- PIC18F2455 y similares con puerto USB 2.0
- PIC18F2550 manejo de puertos USB 2.0 y muy versatil.
- PIC18F452
- PIC18F4550
- dsPIC30F2010
- dsPIC30F3014
- dsPIC30F3011 (Ideales para control electrónico de motores eléctricos de inducción, control sobre audio, etc).
- PIC32 (Nueva gama de PIC de 32 bits, los más modernos ya compatible con USB 2.0).
PIC en Internet
Se puede encontrar mucha información y documentación sobre PICs en
Internet, principalmente por dos motivos:
[cita requerida]
el primero, porque han sido muy usados para romper los sistemas de
seguridad de varios productos de consumo masivo (televisión paga,
PlayStation, etc), lo que atrae la atención de los
crackers;
y segundo, porque el PIC16C84 fue uno de los primeros
microcontroladores fácilmente reprogramables para aficionados. Hay
muchos
foros y
listas de correo dedicados al PIC, en los que un usuario puede proponer sus dudas y recibir respuestas.
Pero también se puede enfocar el tema en relación a Internet por la
posibilidad que se tiene de desarrollar con los microcontroladores
sistemas SCADA vía Web, debido a que pueden adquirir y enviar datos al puerto serial de un computador utilizando transmisión
UART y el protocolo
RS232, también se tiene la posibilidad de implementar el protocolo
TCP/IP directamente.