Los PICs son microcontroladores RISC con una arquitectura harvard modificada fabricados por Microchip Technology Inc. Son dispositivos extremadamente versátiles. Se pueden usar en aplicaciones que van desde hacer parpadear algunos leds o controlar un robot simple hasta proyectos más complejos como un tarificador telefónico, un osciloscopio, un servidor web y prácticamente cualquier proyecto que se pueda imaginar.

El lenguaje de los PICs

Los microcontroladores PIC para su programación utilizan un número de instrucciones reducido (RISC) que varía de 35 instrucciones para la gama baja hasta alrededor de 70 para la gama alta. Este conjunto de instrucciones incluye instrucciones para realizar una variedad de operaciones entre el acumulador y una constante o entre el acumulador y una locación de memoria, así como para ejecución condicional de código, llamadas y saltos a otras rutinas y partes del programa. Para su programación Microchip proporciona un ambiente de desarrollo gratuito llamado MPLAB IDE que además incluye un simulador y un ensamblador.

Además de lenguaje ensamblador los PICs se pueden programar utilizando lenguajes de alto nivel como C y Basic, además es posible programarlos usando Pascal, Jal y Forth. En MicroPIC el lenguaje utilizado será ensamblador en un principio y posteriormente se dará el salto a Basic y C. El IDE utilizado también será MPLAB.

Elegir un PIC

¿Entonces, con qué PIC empezar? Para mí la respuesta es sencilla: 16F628a. Hace algunos años la opción obvia era el pic 16F84, un pic económico y fácil de encontrar que lo convertía en la elección de cualquier aficionado. El 16F628a se puede considerar como una actualización del 16F84, maneja el mismo conjunto de instrucciones y es compatible pin a pin con este pero tiene las ventajas de ser más barato, tiene el doble de memoria de programa, mucha más memoria RAM, 3 pines de I/O más (16 mientras que el 16F84 tiene solamente 13), un módulo USART (puerto serie) y algunas virtudes más, entre ellas un oscilador integrado de 4MHz lo que hace su uso aún más sencillo.

Además del 16F628 otros PICs que merecen la pena son el 16F877 y el 18F452. El 16F877 tiene los mismos periféricos que el 628 y algúnos más (entre ellos un convertidor analógico-digital), además cuenta con mayor capacidad de memoria de programa, más memoria RAM y muchos más pines I/O. El 18F452 forma parte de la nueva serie de microcontroladores PIC de 16-bit, ofrece un conjunto de instrucciones mejorado, mejores periféricos, el doble de memoria y una velocidad de trabajo hasta 2 veces mayor que un 16F877 a un precio no mucho mayor. Sin embargo el 16F628 tiene la ventaja de contar con un oscilador interno, razón por la cual será el PIC utilizado en la mayoría de los ejemplos y tutoriales.

Elegir un programador

Esta puede ser una cuestión complicada ya que existe una cantidad muy grande de programadores disponibles, unos con ventajas sobre otros, pero eso es algo que depende de cada usuario. Microchip comercializa una serie de programadores que se pueden utilizar directamente con MPLAB, algunos de estos programadores son: PICStart Plus, Promate II, MPLAB PM3, ICD2, PICKit 1 y PICKit 2, los primeros 2 con interfaz serial y los últimos 4 con interfaz USB. Además de los programadores de Microchip también existen otros programadores comerciales como el PIC-PG2 (serial), el PIC-PG3 (paralelo), o el PIC-MPC (USB) de Olimex.

No solo existen opciones comerciales, Olimex por ejemplo proporciona gratis los esquemas de  sus programadores. En internet es posible encontrar diagramas para distintos tipos de programadores, algunos con interfaz serial, otros utilizando el puerto paralelo, en los foros de solocódigo.com hay un tema sobre Programadores Para Microcontroladores Pic que vale la pena revisar. Personalmente yo recomiendo estos tres programadores, todos con interfaz serial:
  • Feng's RCD, programador sencillo que programa el 16F628 y el 16F628a
  • Feng's Multi PIC programmer, multiprogramador, funciona con todos los pics que he probado
  • PIC-PG2, al igual que el multiprogramador de Feng este funciona con extensa lista de PICs
Para programar los PICs hace falta algo más que el programador, también se ocupa un software compatible con ese programador. Dos programas muy buenos para dicha tarea son el IC Prog y el WinPic800.

¿Cómo comenzar?

Después de toda esta introducción la pregunta es ¿cómo comenzar? Bueno, eso en la próxima entrega ;-)