Por qué yo recomiendo el PIC16F628A o el PIC16F88
para reemplazarlo
por Eduardo J. Carletti
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.
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?
16F84A | 16F628A | |
Memoria programa | 1K | 2K |
Memoria datos | 68 bytes | 224 bytes |
EEPROM | 64 bytes | 128 bytes |
Timers | 1 | 3 |
PWM | - | 1 |
Reg. comparación/captura | - | sí |
Comparadores | - | 2 |
Referencias de voltaje | - | 1 |
Oscilador interno reloj | - | 37 KHz / 4 MHz |
Patas usables E/S | 13 | 16 |
Programación a bajo voltaje | - | sí |
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.