Antes de realizar la tarea PIC(la cual ya tengo algunas ideas, y la mayoría de las cosas que necesito), me puse a investigar sobre diversas cosas sobre los PIC, como su programación y su funcionamiento. Esto lo hice para saber como realizar las conexiones, ya que previamente había trabajado con los GAL en algunos proyectos básicos, y estoy familiarizado con ciertas reglas, como que cierto pin del chip debe ir a tierra y otro debe ir a a corriente.
Aunque no lo parezca esto es muy importante, sin saber esto uno puede simplemente quemar el microchip y darlo por perdido, es por esto que decidí investigar primero al respecto. Primero que nada ¿Qué es un PIC?.
Los PIC(Peripheral Interface Controller) son una familia de microcontroladores fabricados por Microchip Technology Inc. y derivados del PIC1650, originalmente desarrollado por la división de microelectrónica de General Instrument.
Los hay disponibles de distintas capacidades, desde algunos tipos básicos con poca memoria, hasta los que tienen convertidores Analógico a Digital (ADC) incluidos o incluso los que llevan dentro PWMs (Pulse Width Modulators = Moduladores de Ancho de Pulso)
Suponiendo que ya sabemos como se conecta el PIC, es decir, saber cuales son las entradas y salidas,que pines del PIC van a tierra, y cuales a corriente, podemos comenzar a programar el PIC. Lo anterior es muy importante saberlo, ya que sino terminaremos quemando el PIC desde antes de probar si nuestra programación funciona.
Programador PIC-500
Como mencioné, mi PIC es el PIC16F628A. El programador que compré es el PIC-500, que se conecta mediante cable serial, lo cual no lo hace muy portable en estos días ya que la mayoría de las PCs y laptops modernas no cuentan con esta entrada, pero en mi caso tengo una vieja PC que aún cuenta con entrada serial. El beneficio del programador PIC-500 es el precio, ya que es mucho más barato que el PIC-600, pero en fin de cuentas ambos pueden servir.
Referencias:
PIC - Descripción
Los PIC(Peripheral Interface Controller) son una familia de microcontroladores fabricados por Microchip Technology Inc. y derivados del PIC1650, originalmente desarrollado por la división de microelectrónica de General Instrument.
Los hay disponibles de distintas capacidades, desde algunos tipos básicos con poca memoria, hasta los que tienen convertidores Analógico a Digital (ADC) incluidos o incluso los que llevan dentro PWMs (Pulse Width Modulators = Moduladores de Ancho de Pulso)
Mi PIC - PIC16F628A
El PIC que compré, es el PIC16F628A, lo cual lo hace diferente a los demás y con diferentes características. El PIC16F628A cuenta con programación de bajo voltaje, modo reloj de baja velocidad, oscilador interno de 4MHz, memoria, y otras cosas más.
Las especificaciones del PIC16F628A:
Ahora para saber que tipo de conexiones podemos hacer, y que funciones tiene cada pin, necesitamos ver el diagrama del PIC en cuestión. Este dirá para que sirve cada pin del PIC, y donde debemos conectar a positivo y negativo para darle alimentación. El diagrama es el siguiente:
Viendo esto es difícil entender que es cada cosa, además de los voltajes positivo y negativo. Para esto se puede usar la siguiente tabla que describe el significado de cada pin.
Las especificaciones del PIC16F628A:
|
Ahora para saber que tipo de conexiones podemos hacer, y que funciones tiene cada pin, necesitamos ver el diagrama del PIC en cuestión. Este dirá para que sirve cada pin del PIC, y donde debemos conectar a positivo y negativo para darle alimentación. El diagrama es el siguiente:
Viendo esto es difícil entender que es cada cosa, además de los voltajes positivo y negativo. Para esto se puede usar la siguiente tabla que describe el significado de cada pin.
Nombre del Pin
|
Descripción
|
RA0/AN0 |
Puerto bidireccional.
Entrada del comparador análogo
|
RA1/AN1
|
Puerto bidireccional.
Entrada del comparador análogo
|
RA2/AN2/Vref
|
Puerto bidireccional.
Entrada del comparador análogo. Salida VREF
|
RA3/AN3/CMP1
|
Puerto bidireccional.
Entrada del comparador análogo. Salida del comparador 1
|
RA4/T0CKI/CMP2
|
Puerto bidireccional.
Input del timer 0.
Salida del comparador 2
|
RA5/MCLR/VPP
|
Puerto bidireccional.
Master Clear. Cuando es configurado, es un reset activo en el dispositivo. Voltaje de salida programado.
|
RA6/OSC2/CLKOUT
|
Puerto bidireccional.
Oscilador de cristal de salida.
Salida de reloj con un 1/4 de la frecuencia de OSC1.
|
RA7/OSC1/CLKIN
|
Puerto bidireccional.
Oscilador de cristal de entrada. Entrada de reloj externo.
|
RB0/INT
|
Puerto bidireccional (8 bits).
Interruptor externo
|
RB1/RX/DT
|
Puerto bidireccional (8 bits).
I/O de datos sincronizados.
Puerto recibidor USART.
|
RB2/TX/CK
|
Puerto bidireccional (8 bits).
Puerto transmisor USART.
I/O de reloj sincronizado
|
RB3/CCP1
|
Puerto bidireccional.
I/O de Comparación y Captura de PWM
|
RB4/PGM
|
Puerto bidireccional (8 bits)
Puerto de programación de bajo voltaje.
|
RB5
|
Puerto bidireccional (8 bits).
|
RB6/T1OSO/T1CKI/PGC
|
Puerto bidireccional (8 bits).
Salida del oscilador Timer1.
Reloj de programación ICSP.
|
RB7/T1OSI/PGD
|
Puerto bidireccional (8 bits).
Entrada del oscilador Timer1.
I/O de datos ICSP.
|
Vss
|
Referencia de tierra para los puertos de I/O
|
VDD
|
Suministro positivo para lógica y puertos de I/O
|
Con puertos bidireccionales, nos referimos a puertos que podemos usar tanto como entrada como de salida.El reloj o Clk, es usado frecuentemente para darle una temporización al microcontrolador, si es necesario.
Programación del PIC:
Suponiendo que ya sabemos como se conecta el PIC, es decir, saber cuales son las entradas y salidas,que pines del PIC van a tierra, y cuales a corriente, podemos comenzar a programar el PIC. Lo anterior es muy importante saberlo, ya que sino terminaremos quemando el PIC desde antes de probar si nuestra programación funciona.
Para programar el PIC es necesario lo siguiente:
- Tener un PIC
- Armar o comprar un programador de PICs
- Software para programar el PIC
- Software para compilar código en .hex
Como mencioné, mi PIC es el PIC16F628A. El programador que compré es el PIC-500, que se conecta mediante cable serial, lo cual no lo hace muy portable en estos días ya que la mayoría de las PCs y laptops modernas no cuentan con esta entrada, pero en mi caso tengo una vieja PC que aún cuenta con entrada serial. El beneficio del programador PIC-500 es el precio, ya que es mucho más barato que el PIC-600, pero en fin de cuentas ambos pueden servir.
El programador PIC-500 está basado en el programador JDM, la comunicación con la PC es a través del puerto serial RS232 y se recomienda usar el software IC Prog para cargar la información. Cuenta con una base de 8 y otra de 18 patas para memorias y PICs, respectivamente, cable DB9 de 1,8 m de longitud y software (ICprog). Soporta la siguiente variedad de PICs: 12C5XX, 12C67X, 24CXX, 16C55X, 16C61, 16C62X, 16C71, 16C71X, 16C8X, 16F8X y memorias 24LCxx.
mikroBasic for PIC
mikroBasic for PIC
El programador venía con un CD que contenía el programa ICprog, usado para cargar los .hex en el PIC, pero no tenía soporte para el PIC16F628A, por lo tanto descargue uno del siguiente link:
Y para programar el PIC use mikroBasic PRO for PIC, donde ya tenía incluido un pequeño ejemplo de un LED parpadeante, que usé para probar si funcionaba el programador. El código es muy sencillo, configura todos los puertos A, y puertos B como salidas(podemos ver aquí cuales son), y se hace un ciclo infinito donde se da una salida de 1 y luego 0, alternándose cada segundo. El código es el siguiente:
Escrito el código, debemos compilarlo dando click en build, en el programa mikroBasic, esto nos generara un archivo .hex en la carpeta donde estemos guardando nuestro código. Con esto ya podemos abrir ICprog y abrir dicho archivo .hex, para poder programarlo en el PIC.
Aquí un video del circuito funcionando:
Aquí un video del circuito funcionando:
Como se puede observar en el video, el PIC tiene dos conexiones, hacia el además del LED. En el pin 14, se conecta a corriente positiva, y en el pin 5 se conecta a tierra. Esto se debe hacer correctamente o el PIC puede quemarse o dejar de funcionar.