Un recambio "generacional" para el PIC16F84A

Por qué yo recomiendo el PIC16F628A o el PIC16F88
para reemplazarlo

por Eduardo J. Carletti


Veamos primero por qué es tan popular el PIC 16F84A

Es muy probable que sea porque hay miles de ejemplos en Internet y en libros y revistas para el 16F84A, debido a que hace años que se diseña sobre él, como procesador básico, y es uno de los primeros de Microchip Inc.

Pero el PIC16F84A se ha vuelto obsoleto. No lo digo yo, lo ha dicho su fabricante, aunque ahora quitó de su sitio toda referencia a este tema y parece respaldar al 84A como componente totalmente actual.

 
¿Lo reemplazamos?

¿De la amplia gama de microcontroladores de Microchip, una lista que a veces marea, qué podríamos elegir?
Yo utilizo el PIC 16F628A (y opcionalmente el hermanito PIC 16F627A, con la mitad de memoria) en gran parte de los proyectos que encaro y encararé, excepto cuando las prestaciones de este microcontrolador no son suficientes para la función requerida.
Pero no es capricho: veamos las razones
La razón principal de la elección —y es por esto que lo recomiendo— es que es pata a pata compatible con el PIC 16F84A. Y los programas son directamente compatibles, con la única salvedad de que la memoria RAM se encuenta en otra dirección. Transformar un programa hecho para el PIC 16F84A para utilizarlo en el PIC 16F628A es una cosa de segundos. Y a nivel de hardware, sólo hay que desenchufar uno y enchufar el otro.
Distribución de patas (con sus funciones) del PIC 16F628A y el PIC16F84A.

El PIC 16F84A puede estar muy bien como elección para comenzar, pero la única razón que va quedando para hacerlo es que la mayoría de los ejemplos de programa y de circuito que se encuentran por allí están realizados sobre él. En base a lo dicho en el párrafo anterior, entonces el PIC 16F628A es igual de elegible, ya que es un reemplazo prácticamente directo de nuestro famoso microcontrolador "de batalla". ¿Pero por qué cambiar, si ambos están disponibles en el mercado? Por una razón muy simple: el PIC 16F628A tiene más memoria de programa (el doble), más RAM, más EEPROM, más modos de uso, más timers, y más prestaciones, incluyendo un puerto serie implementado por hardware... y el PIC 16F628A, por lo menos en Argentina, cuesta menos... ¿Por qué no cambiar, entonces?
COMPARACIÓN
16F84A16F628A
Memoria programa1K2K
Memoria datos68 bytes224 bytes
EEPROM64 bytes128 bytes
Timers13
PWM-1
Reg. comparación/captura-
Comparadores-2
Referencias de voltaje-1
Oscilador interno reloj-37 KHz / 4 MHz
Patas usables E/S1316
Programación a bajo voltaje-
Precio en Buenos Aires (Cika)us$ 3,51 (4 MHz)
us$ 7,02 (20 MHz)
u$s 3 (20 MHz)

Una pequeña nota final: en la inicialización del PIC16F628A, si no se utilizan los comparadores, conviene poner estas dos líneas:
  movlw b'00000111'  ; Deshabilita comparadores. Es
  movwf CMCON  ; conveniente en el PIC 16F628A
Se deben inhibir los comparadores porque sus entradas son iniciadas en modo analógico.

Otra interesante opción: el PIC 16F88
Otro microcontrolador a tener en cuenta, porque es pin a pin compatible con el PIC 16F84A y porque la convesión de programas es igual de fácil que con el PIC 16F628A, es el PIC 16F88. El PIC 16F88 es un poco más costoso que el PIC 16F628A, pero ofrece más prestaciones. Es importante remarcar que si bien el PIC 16F88 es compatible pin a pin con el PIC 16F84A, pero con mayores prestaciones y módulos, no es totalmente pin a pin compatible con el PIC 16F628A, porque el port serial (USART) utiliza pines diferentes en cada microcontrolador.
Además de tamaños mayores en las memorias, que son de 4096 instrucciones en la flash de programa, 368 bytes en la RAM estática y 256 bytes en la EEPROM (contra 2048, 224 bytes y 128 bytes respectivamente en el PIC 16F628A), las dos diferencias más importantes son que tiene un convertidor analógico digital de 10 bits, con 7 canales, y el hecho de que se puede trabajar con un bootloader (un pequeño programa que se ocupa de cargar dinámicamente el programa principal a través de una línea serie conectada, por ejemplo, a una PC).
Otras mejoras con respecto al PIC 16F628A son: 1) Tiene un oscilador interno sin conexiones al exterior que puede ofrecer las siguientes opciones: 31 kHz, 125 kHz, 250 kHz, 500 kHz, 1 MHz, 2 MHz, 4 MHz y 8 MHz (en lugar de la única opción de 4 MHz en el PIC 16F628A). 2) Tiene un port serie sincrónico que se puede configurar como SPI en modos master y slave, y como I2C en modo slave.
Son importantes diferencias, y se obtienen por un valor adicional de unos 2 u$s con respecto al PIC 16F628A.