Microcontrolador PIC chas la mayoría estaban obsoletos. El PIC, sin embargo, se mejoró con EPROM con EPROM para para conseguir un controlador un controlador de canal programable. canal programable. Hoy en día multitud de PIC vienen con varios periféricos incluidos (módulos de comunicación serie, UART serie, UART,, 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 o 32 bits, depenensamblador diendo de la familia específica de PICmicro).
General Instrument PIC1650.
1
Juego Juego de instr instrucc uccio ione ness y entor entorno no de programación
El PIC usa un juego un juego de instrucciones, instrucciones, cuyo número puede variar desde 35 para PIC de gama baja a 70 para los de gama alta. Las instrucciones instrucciones se clasifican clasifican entre las que realizan operaciones operaciones entre el acumulador el acumulador y y una constanViejos microcontroladores PIC (EPROM). te, entre el acumulador y una posición de memoria, instrucciones de condicionamiento y de salto/retorno, imLos PIC son una familia de microcontroladores tipo plementación de interrupciones de interrupciones y y una para pasar a modo RISC fabricados RISC fabricados por Microchip Technology Inc. y de- de bajo consumo llamada sleep. rivados del PIC1650, originalmente desarrollado por la Microc Microchip hip proporc proporciona iona un ento entorno rno de des desarrol arrollo lo fr freew eeware are división de microelectrónica de microelectrónica de de General General Instrument. Instrument . llamado MPLAB llamado MPLAB que que incluye un simulador un simulador software software y un El nombre actual no es un acrónimo acrónimo.. En realidad, el nombre completo es PICmicro, aunque generalmente se utiliza como P eripheral (controlador de eripheral I nterface nterface C ontroller ontroller (controlador interfaz periférico).
ensamblador.. Otrasempr ensamblador Otras empresas esas desarrol desarrollan lan compilad compiladore oress C y BASIC BASIC.. Microchip también vende compiladores para los PIC de gama alta (“C18” para la serie F18 y “C30” para los dsPIC) y se puede descargar una edición para inhabilita algunas opciones opciones desEl PIC original se diseñó para ser usado con la nueva estudiantes del C18 que inhabilita pués de un tiempo de evaluación. evaluaci ón. CPU de CPU de 16 bits 16 bits CP16000. CP16000. Siendo en general una buena CPU, ésta tenía malas prestaciones de entrada y salida, salida , Para el lenguaje el lenguaje de programaci programación ón Pascal Pascal existe existe un comy el PIC de 8 bits se desarrolló en 1975 para mejorar el pilador de código de código abierto, abierto, JAL JAL,, lo mismo que PicForth que PicForth rendimi rendimiento ento del sistema sistema quitando quitando peso de entrada/salida a para el lenguaje Forth lenguaje Forth.. GPUTILS GPUTILS es es una colección de la CPU. CPU. El PIC PIC util utiliz izab abaa microcódigo simplealmacenad simple almacenadoo herramientas distribuidas bajo licencia GPL licencia GPL que que incluye en ROM para para reali realizar zar estas estas tareas tareas;; y aunqu aunquee el términ términoo no ensamblador y enlazador, y funciona en Linux Linux,, MacOS se usaba por aquel entonces, se trata de un diseño RISC y Microsoft Windows. Windows . GPSIM GPSIM es es otra herramienta libre que ejecuta una instrucción una instrucción cada cada 4 ciclos 4 ciclos del del oscilador oscilador.. que permite simular diversos dispositivos hardware coEn 1985 la división de microelectrónica de microelectrónica de de General Ins- nectados al PIC. trument se separa como compañía independiente que es incorpor incorporada ada como filial filial (el 14 de di dici ciem embr bree de 1987 1987 camcambia el nombre a Microchip a Microchip Technology y Technology y en 1989 es adquirida por un grupo de inversores) y el nuevo propietario canceló casi todos los desarrollos, que para esas fe-
Uno Uno de los los más modern modernos os y comp comple letos tos compi compilad lador ores es para para lenguaje C es [mikroC], que es un ambiente de desarrollo con editor de texto, bibliotecas texto, bibliotecas con con múltiples funciones para todos los módulos y herramientas incorporadas para facilitar enormemente el proceso de programación. 1
2
3 PROGRAMACIÓN DEL PIC
2
Arquitectura central
ser usados para acceder memoria externa o adicional. Las series más recientes de dispositivos disponen de funcioLa arquitectura del PIC es sumamente minimalista. Está nes que pueden cubrir todo el espacio direccionable,independientemente del banco de memoria seleccionado. En caracterizada por las siguientes prestaciones: los dispositivos anteriores, esto debía lograrse mediante el uso del acumulador. Área de código y de datos separadas (Arquitectura Para implementar direccionamiento indirecto, se usa un Harvard). registro de “selección de registro de archivo” (FSR) y uno Un reducido número de instrucciones de longitud fi- de “registro indirecto” (INDF): Un número de registro es ja. escrito en el FSR, haciendo que las lecturas o escrituras al Implementa segmentación de tal modo que la mayo- INDF serán realmente hacia o desde el registro apuntado ría de instrucciones duran 1 tiempo de instrucción (o por el FSR. Los dispositivos más recientes extienden es4 tiempos de reloj). Pueden haber instrucciones de te concepto con post y preincrementos/decrementos para dos tiempos de instrucción (saltos, llamadas y retor- mayor eficiencia al acceder secuencialmente a la infornos de subrutinas y otras) o inclusive con más tiem- mación almacenada. Esto permite que se pueda tratar al po de instrucción en PIC de gama alta. Esto implica FSR como un puntero de pila. que el rendimiento real de instrucciones por segundo La memoria de datos externa no es directamente direcdel procesador es de al menos 1/4 de la frecuencia cionable excepto en algunos microcontroladores PIC 18 del oscilador. de gran cantidad de pines. •
•
•
•
•
•
•
•
•
Un solo acumulador (W), cuyo uso (como operador de origen) es implícito (no está especificado en la 2.2 instrucción).
Tamaño de palabra
Todas las posiciones de la RAM funcionan como re- El tamaño de palabra de los microcontroladores PIC es gistros de origen y/o de destino de operaciones ma- fuente de muchas confusiones. Todos los PIC (excepto los dsPIC) manejan datos en trozos de 8 bits, con lo que se temáticas y otras funciones. [1] deberían llamar microcontroladores de 8 bits. Pero a difeUna pila de hardware para almacenar instrucciones rencia de la mayoría de las CPU, el PIC usa arquitectura de regreso de funciones. Harvard, por lo que el tamaño de las instrucciones puede ser distinto del de la palabra de datos. De hecho, las dife Una relativamente pequeña cantidad de espacio de rentes familias de PIC usan tamaños de instrucción disdatos direccionable (típicamente, 256 bytes), extentintos, lo que hace difícil comparar el tamaño del código sible a través de manipulación de bancos de memodel PIC con el de otros microcontroladores. Por ejemria. plo, un microcontrolador tiene 6144 bytes de memoria El espacio de datos está relacionado con el CPU, de programa: para un PIC de 12 bits esto significa 4096 palabras y para uno de 16 bits, 3072 palabras. 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 3 él (permitiendo saltos indirectos).
Programación del PIC
Para transferir el código de un ordenador al PIC normalmente se usa un dispositivo llamado programador.Lamayoría de PIC 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 2.1 Espacio de datos (RAM) pueden usarse otros pines como el GP0 y GP1 o el RA0 y Los microcontroladores PIC tienen una serie de regis- RA1) como reloj y datos y el MCLR para activar el modo tros que funcionan como una RAM de propósito general. programación aplicando un voltaje de 13 voltios. Existen Los registros de propósito específico para los recursos de muchos programadores de PIC, desde los más simples hardware disponibles dentro del propio chip también es- que dejan al software los detalles de comunicaciones, a tán direccionados en la RAM. La direccionabilidad de la los más complejos, que pueden verificar el dispositivo memoria varía dependiendo de la línea de dispositivos, y a diversas tensiones de alimentación e implementan en todos los dispositivos PIC tienen algún tipo de mecanis- hardware casi todas las funcionalidades. Muchos de esmo de manipulación de bancos de memoria que pueden tos programadores complejos incluyen ellos mismos PIC 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.
3 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 RS-232 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):
•
PIC EMU
•
ISEC
•
PIC CDlite
•
PIC Simulator
•
Crocodrile Clips
4
Características
Unabuena recopilación de herramientas de desarrollo paLos PIC actuales vienen con una amplia gama de mejoras ra PIC puede encontrarse Aquí. (Mayo de 2009). hardware incorporadas: 3.0.1
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 PIC y Atmel)
•
WinPic 800 (puerto paralelo, serie y USB)
•
•
•
•
•
•
PICKit 2 (USB)
•
PICKit 3 (USB)
•
Terusb1.0
•
Eclipse (PIC y AVR. USB)
•
MasterProg (USB)
•
ICD2 (Serie o full speed USB - 2 Mbits/s)
•
ICD3 (High speed USB - 480 Mbits/s)
3.0.3 •
•
•
Emuladores
Proteus - ISIS ICE2000 (puerto paralelo, convertidor a USB disponible) ICE4000 (USB)
Temporizadores de 8/16/32 bits Tecnología Nanowatt para modos de control de energía Periféricos serie síncronos y asíncronos: USART, AUSART, EUSART
•
Comparadores de tensión
•
Depuradores integrados
ICD (Serie)
Puertos de entrada/salida (típicamente 0 a 5.5 voltios)
Conversores analógico/digital de 8-10-12 bits
•
•
Memoria Flash y ROM disponible desde 256 bytes a 256 kilobytes
•
•
3.0.2
Núcleos de CPU de 8/16 bits con Arquitectura Harvard modificada
•
Módulos de captura y comparación PWM Controladores LCD Periférico MSSP para comunicaciones I²C, SPI, y I²S Memoria EEPROM interna con duración de hasta un millón de ciclos de lectura/escritura
•
Periféricos de control de motores
•
Soporte de interfaz USB
•
Soporte de controlador Ethernet
•
Soporte de controlador CAN
•
Soporte de controlador LIN
•
Soporte de controlador Irda
4
5 5.1
6 PIC MÁS COMÚNMENTE USADOS
Variaciones del PIC PIC modernos
Los viejos PIC 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 PIC para soporte de aplicaciones antiguas o grandes pedidos.
5.5
PIC 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 partir 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ógica, 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.
Se pueden considerar tres grandes gamas de MCUPIC 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 PIC con módulos de comu- 6 PIC más comúnmente usados nicación y protocolos avanzados (USB, Ethernet, Zigbee por ejemplo). PIC12C508/509 (Encapsulamiento reducido de 8 pines, oscilador interno, popular en pequeños diseños como el iPod remote). •
5.2
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 clones del PIC que funcionan mucho más rápido que el original. OpenCores tiene un núcleo del PIC16F84 escrito en Verilog.
5.3
•
•
•
•
PIC inalámbricos
El microcontrolador rfPIC integra todas las prestaciones del PICmicro de Microchip con la capacidad de comunicación inalámbrica 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.
•
•
•
5.4
PIC para procesado de señal (dsPIC)
Los dsPIC son el penúltimo lanzamiento de Microchip, comenzando a producirlos a gran escala a finales de 2004. Son los primeros PIC con bus de datos inherente de 16 bits. Incorporan todas las posibilidades de los anteriores PIC 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.
•
•
•
PIC12F629/675 PIC16F84 (Considerado obsoleto, pero imposible de descartar y muy popular) PIC16F84A (Actualización del anterior, la A indica que cuenta con módulos de comparación A/D, algunas versiones funcionan a 20 MHz, compatible 1:1) PIC16F628A/648A (Opciones típicas para migrar o actualizar desde diseños antiguos hechos con el PIC16F84A. Poseen módulos de comparación A/D, Capture & Compare CCP (PWM), comunicación en serie USART y oscilador interno, entre otras mejoras) PIC16F88 (Nuevo sustituto del PIC16F84A y superior al PIC16F648A con más memoria, oscilador interno, USART, SSP, comparador y convertidor A/D. Muy popular). PIC16F87X/87XA (“Hermanos mayores” del PIC16F84/84A, 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 ahora ya incluye oscilador interno, considerados los más cercanos a la familia 18F). PIC16F193x (Nueva gama media de PIC optimizado y con mucha RAM, ahora con 49 instrucciones frente al conjunto de 35 más común). PIC18F452 PIC18F2455 Con manejo de puerto USB 2.0
5
9.2 En inglés
•
•
PIC18F2520/4520 Múltiples comparadores y convertidores A/D. PIC18F2550/4550 Manejo de puertos USB 2.0 y muy versátil. Por ello, es muy común en el ámbito académico.
•
•
• •
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 son compatibles con USB 2.0).
9.2 •
•
•
7
PIC en Internet
Se puede encontrar extensa información y documentación sobre PIC 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 cracker; 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.
•
•
•
•
•
•
8
Monitorización y control vía In10 ternet
Con estos se pueden desarrollar sistemas sistemas SCADA, para adquirir y enviar datos al puerto serial de un computador utilizando, por ejemplo, transmisión UART y el protocolo RS-232, o implementando el protocolo TCP/IP directamente para construir un sistema completamente embebido.[2]
Robots Sitio de robótica con artículos de contenido técnico y didáctico Tutorial de programación PIC18F2550 y módulo USB con Visual C# Página de programación de Microcontroladores PIC En inglés www.locxtronic.com - Tutorial for PIC Programming In BASIC (en inglés). http://www.microchip.com La página oficial del fabricante PIC y otros componentes electrónicos semiconductores Página con enlaces a los documentos originales del PIC1650 YaPIDE Entorno de desarrollo y simulador para el PIC16F628 liberado bajo licencia GPL-2 PicForth Grupo de discusión sobre el PIC SDCC Small Device C Compiler , an Open Source compiler for microcontrollers, PIC 16x and 18x support is a WIP. Belle Research Guía para de programación del PIC para principiantes PIC Portal with huge Project database (en inglés).
Referencias
•
Aplicación Móvil
•
Versión Lite App
[1] Hoja de datos de un 16F84 (pdf), definición de instrucciones de lenguaje ensamblador de PIC16 e información sobre la RAM y su direccionabilidad. [2] PIC wifi projects
9
Enlaces externos
9.1 •
•
•
•
En español Tutorial de programación de PIC en Ensamblador en la Asociación de Robótica y Domótica de España. Proyelc, Tutoriales y Proyectos con microcontroladores PIC TodoPIC, todo en microcontroladores PIC MicroPIC, todo en microcontroladores PIC en español
6
11 ORIGEN DEL TEXTO Y LAS IMÁGENES, COLABORADORES Y LICENCIAS
11
Origen del texto y las imágenes, colaboradores y licencias
11.1 •
Texto
Microcontrolador PIC Fuente: https://es.wikipedia.org/wiki/Microcontrolador_PIC?oldid=89911545 Colaboradores: Murphy era un op-
timista, Marcelo Huerta, Edmont, Boticario, Xuankar, JMPerez, Beethoven, RobotQuistnix, Chobot, Yrbot, FlaBot, Xavimetal, YurikBot, Museo8bits, GermanX, Gaijin, KnightRider, Manolo456, No sé qué nick poner, Eskimbot, Chlewbot, Smrolando, Axxgreazz, CEM-bot, Damifb, Todopic, Gancuba, Montgomery, Thijs!bot, JoaquinFerrero, LMLM, JAnDbot, Kved, Rafa3040, Muro de Aguas, CommonsDelinker, Netito777, Pólux, BL, Biasoli, Bucephala, VolkovBot, Galandil, Nicoguaro, Matdrodes, BlackBeast, Shooke, Lucien leGrey, Muro Bot, SieBot, Loveless, Drinibot, Bopo~eswiki, Aleposta, HUB, Nicop, PixelBot, Lloizaga, Mendezmh, Lluvia, UA31, SergioN, AVBOT, MastiBot, Angel GN, Diegusjaimes, DominusDRR, A. B., Metaconta, Saloca, Luckas-bot, AqueronteBlog, Leon.campoverde, AlexFBP, Xqbot, Jkbw, JesusCEsteban, Lraingele, Imapix, Jcfidy, Sermed, Manuelferreria, PatruBOT, Ganímedes, EmausBot, Camiloasc1, Aladaris, Microc, PIC Suky, MadriCR, Erin2003, MerlIwBot, Forexpaul, Lockman akim, Elvisor, Helmy oved, Angeldefuego22, Legobot, Telfowiki2013, AVIADOR-bot y Anónimos: 172
11.2 •
Imágenes
Archivo:PIC1655A_GI.jpg Fuente: https://upload.wikimedia.org/wikipedia/commons/9/90/PIC1655A_GI.jpg Licencia: CCBY2.5 Co-
laboradores: No machine-readable source provided. Own work assumed (based on copyright claims). Artista original: No machine-readable author provided. Camillo assumed (based on copyright claims). •
Archivo:PIC16CxxxWIN.JPG Fuente: https://upload.wikimedia.org/wikipedia/commons/f/f8/PIC16CxxxWIN.JPG Licencia: CC BY
2.5 Colaboradores: No machine-readable source provided. Own work assumed (based on copyright claims). Artista original: No machinereadable author provided. Camillo assumed (based on copyright claims).
11.3 •
Licencia del contenido
Creative Commons Attribution-Share Alike 3.0