Logo Studenta

PIC16F87

¡Este material tiene más páginas!

Vista previa del material en texto

Microcontroladores
PIC16F87X
Los PIC16F87X forman una subfamilia de microcontroladores PIC de 8 bits, fabricados por
Microchip Technology Inc..
Cuentan con memoria de programa EEPROM Flash mejorada, permitiendo programarlos
fácilmente usando un programador de PIC. Esto facilita el diseño de proyectos, minimizando
el tiempo empleado en programar los microcontroladores.
Sus principales características son
• Módulo comparador analógico con dos comparadores analógicos, referencia de voltaje fija
(0.6V) y referencia de voltaje programable en el chip
• Puerto Serie Síncrono Maestro (MSSP): Soporta los modos SPI e I2C
• Arquitectura RISC
• Frecuencia de operación 0-20 MHz
• Oscilador interno de alta precisión
• Voltaje de la fuente de alimentación de 2.0V a
5.5V
• Ahorro de energía en el Modo de suspensión
• 35 pines de entrada/salida
• memoria ROM de 8K con tecnología FLASH
• Opción de programación serial en el circuito
• 256 bytes de memoria EEPROM
• 368 bytes de memoria RAM
• Convertidor A/D: 14 canales y resolución de 10
bits
• 3 temporizadores/contadores independientes
• Temporizador perro guardián
• Módulo PWM incorporado
• Módulo USART mejorado
Su diagrama interno es
Sus instrucciones son muy similares a las que ya se han estado trabajando, como se
ve en su set de instrucciones
Sus pines son
Timer 1
El Timer1 es un temporizador/contador ascendente similar al TMR0, pero con algunas
diferencias que lo hacen muy interesante a la hora de incluir temporizaciones en un código.
La primera de ellas, es que se trata de un contador de 16 bits (no de 8, como el TMR0) cuyo
valor se almacena en dos registros de 8 bits el TMR1H y el TMR1L, ambos registros se pueden
leer y escribir su valor durante la ejecución del programa..
Cuando el Timer1 está habilitado, el valor de esos registros se incrementan desde
0000h a FFFFh y una vez que llega a su máximo valor empieza otra vez desde 0
avisándonos de ello por medio de la bandera TMR1F . Si está activa la interrupción por
desbordamiento del Timer 1 al desbordarse el contador, el programa entra en la
función de tratamiento a la interrupción por desbordamiento del Timer1.
Su diagrama de bloques se muestra a continuación
Los bits de configuración del registro T1CON son
Su diagrama de bloques se muestra a continuación
El Timer1 puede funcionar con un oscilador externo y trabajar a una frecuencia distinta
a la del oscilador principal del PIC. Al igual que el TMR0, el Timer1 puede operar en dos
modos: como temporizador y como contador.
El modo de funcionamiento está determinado por el tipo de reloj seleccionado (interno
para temporizador, externo para contador), y se configura por medio del bit TMR1CS
del registro TICON. Cuando está en modo contador su valor se incrementa en cada
flanco de subida de la señal de reloj externa.
El bit TMR1CS (Timer TMR1 Clock Source Select) o bit de selección de la fuente de reloj
del temporizador Timer1 funciona así:
1 - Cuenta los pulsos por el pin T1CKI (por el flanco ascendente 0-1)
0 - Cuenta los pulsos del reloj interno del microcontrolador
Como ya se mencionó, funciona bajo el mismo principio que el Timer0, pero ahora
tratándose con 16 bits, es decir, en lugar de “contar” hasta 256 (1111 1111), ahora contará
hasta 65536 (1111 1111 1111 1111)
𝑻𝒆𝒎𝒑𝒐𝒓𝒊𝒂𝒄𝒊ó𝒏 = 𝑻𝑪𝑴 ∙ 𝑷𝒓𝒆𝒔𝒄𝒂𝒍𝒆𝒓 ∙ 𝟔𝟓𝟓𝟑𝟔 − 𝑪𝒂𝒓𝒈𝒂𝑻𝑴𝑹𝟏
Donde Temporización es el tiempo deseado, 𝑇𝐶𝑀 es el periodo de un ciclo máquina, y, como ya
se vio, es 1 𝜇𝑠 , 𝑃𝑟𝑒𝑠𝑐𝑎𝑙𝑒𝑟 es el divisor de frecuencia elegido y 65536 − 𝐶𝑎𝑟𝑔𝑎𝑇𝑀𝑅1 es el
número total de impulsos a contar por el TMR1 antes de desbordarse en la cuenta
ascendente. 𝐶𝑎𝑟𝑔𝑎𝑇𝑀𝑅1 es el valor cargado inicialmente al timer.
Por ejemplo, con un prescaler de 8, si se desea que se tengan 500 ms antes de desbordarse,
tenemos
𝟓𝟎𝟎 𝒙𝟏𝟎𝟑𝜇𝒔 = 1 𝜇𝑠 ∙ 𝟖 ∙ 𝟔𝟓𝟓𝟑𝟔 − 𝑪𝒂𝒓𝒈𝒂𝑻𝑴𝑹𝟏
𝑪𝒂𝒓𝒈𝒂𝑻𝑴𝑹 = 𝟔𝟓𝟓𝟑𝟔−
𝟓𝟎𝟎 𝒙𝟏𝟎𝟑𝜇𝒔
1 𝜇𝑠 ∙ 𝟖
𝑪𝒂𝒓𝒈𝒂𝑻𝑴𝑹 = 𝟑𝟎𝟑𝟔
Conversion ADC
Una señal análoga es una señal continua que posee valores que van variando con el tiempo.
Contrario a una señal digital, que tiene valores discretos en cada punto de muestreo, una
señal analógica presenta fluctuaciones constantemente. A continuación, se puede ver un
patrón analógico (onda) junto con un patrón digital (líneas discretas). Un convertidor
analógico-digital se encarga de aproximar una señal analógica a una digital mediante distintas
técnicas.
Con el microcontrolador, lo que se hace, es
aproximar una señal análoga con pequeños cuadros
rectángulos digitales,. Entre mas resolución tenga
nuestro microcontrolador, mas pequeños pueden
ser los rectángulos que se forman y más
aproximado puede quedar la señal analógica.
Un conversor A/D (ADC) convierte la señal análoga en un número digital (binario), y este
número es proporcional a la señal análoga.
En el caso del PIC16F887, el ADC tiene 10 bits y la señal análoga de entrada puede estar
entre 0V y 5V, sin embargo el conversor A/D tiene dos niveles de referencia VREF+ y
VREF- que indican entre que valores será la señal análoga de entrada. El voltaje mínimo
diferencial es de 2V, es decir la diferencia entre VREF+ y VREF- no puede ser mayor a 2V.
La resolución de un microcontrolador depende del voltaje de referencia que se establezca en
el dispositivo. Generalmente si no se define este voltaje de referencia el dispositivo usará el
voltaje de alimentación como la referencia (5v).
Con 10 bits el mayor número binario que se puede tener es 1024, por lo tanto la resolución del
conversor A/D esta dada por la fórmula:
𝑅𝑒𝑠𝑜𝑙𝑢𝑐𝑖ó𝑛 =
𝑉𝑟𝑒𝑓 +−𝑉𝑟𝑒𝑓 −
1024
Por ejemplo, si 𝑉𝑟𝑒𝑓+= 5 𝑉 y 𝑉𝑟𝑒𝑓 − está a tierra, tenemos
𝑅𝑒𝑠𝑜𝑙𝑢𝑐𝑖ó𝑛 =
5 − 0
1024
𝑅𝑒𝑠𝑜𝑙𝑢𝑐𝑖ó𝑛 = 4.882
𝑚𝑉
𝑏𝑖𝑡
Por lo tanto, a una entrada analógica de 0V le corresponde una digital de 00 0000 0000, y
para 5V, le corresponde 11 1111 1111 1111. El voltaje de referencia determina los límites
mínimos y máximos del voltaje analógico que se puede convertir
Su principio de funcionamiento se basa en que la entrada analógica carga un capacitor de
muestreo, cuya salida es la entrada al conversor que genera un resultado digital de la señal
analógica ingresada mediante aproximaciones sucesivas.
Su diagrama de bloques se muestra a continuación
El módulo ADC tiene cuatro registros. Los registros y su función, en términos generales, es la
siguiente:
ADCON0: Registro de configuración 0.
ADCON1: Registro de configuración 1.
ADRESH: Almacena los 8 bits más significativos de la conversión.
ADRESL: Almacena los 8 bits menos significativos de la conversión.
En la pareja ADRESH:ADRESL, se deposita el resultado de la conversión, que al estar compuesta
por 10 bits, solo son significativos 10 de los bits de dicha pareja. El registro ADCON0 controla la
operación del C A/D, mientras el ADCON1 sirve para configurar las patas de la Puerta como
entradas analógica o E/S digitales.
El tiempo de conversión 𝑇𝐴𝐷 el tiempo que dura la conversión de cada bit, y en el caso de
trabajar con valores digitales de 10 bits, se requiere un tiempo mínimo de 12 𝑇𝐴𝐷 . El valor 𝑇𝐴𝐷 se
selecciona por software mediante los bits (ADCS1:ADCS0) y no debe ser inferior a 4.67
microsegundos.
El registro ADCON10 se muestra a continuación
El registro ADCON11 se muestra a continuación
Para el ADRESH y ADRESL
El bit de menos peso (ADFM) del registro ADCON1 selecciona el formato del resultado de la
conversión. Si vale 1, el resultado está justificado en el registro ADRESH, que tiene sus 6 bits de
más peso a 0; mientras que si vale 0 la justificación se hace sobre el registro ADRESL, que tiene
sus 6 bits de menos peso a 0. Esto significa que los 16 bits que forman la unión de los dos
registros, unas veces tienen a 0 los 6 bits de más peso y otras los 6 bits de menos peso.
En general, los pasos a seguir para realizar una conversión A/D son los siguientes.
Ejemplo
En el texto MicrocontroladoresPIC: Diseño Práctico de Aplicaciones Segunda Parte,
encontramos el siguiente ejemplo:
“Se quiere controlar el valor de la temperatura, de modo que cuando pase por debajo de un
valor prefijado se active un relé que emula la puesta en marcha de la calefacción y cuando sube
por encima de un valor máximo prefijado active un motor a modo de ventilador. Además, por
una pantalla LCD se irá visualizando dicha temperatura.”
USART
Los PIC16F87x disponen de un módulo USART capaz de soportar la comunicación serie
síncrona y asíncrona. El USART o SCI (Serial Comunications Interface), puede funcionar
como un sistema de comunicación full duplex o bidireccional asíncrono, adaptándose a
multitud de periféricos y dispositivos que transfieren información de esta forma. También
puede trabajar en modo síncrono unidireccional o half duplex para soportar periféricos
como memorias, conversores, etc.
Asíncrona: Full duplex, bidireccional.
Síncrona-maestro: Half duplex, unidireccional.
Síncrona-esclavo: Half duplex, unidireccional.
En el modo síncrono, la comunicación se realiza sobre dos líneas, la DT que traslada en los
dos sentidos los bits a la frecuencia de los impulsos de reloj que salen por la línea CK desde el
maestro.
En el modo asíncrono, las transferencias de información se realizan sobre dos líneas
TX (transmisión) y RX (recepción), saliendo y entrando los bits por dichas líneas al
ritmo de una frecuencia controlada internamente por el USART. En ambos modos las
líneas de comunicación son las dos de más peso de la Puerta C: RC6/TX/CK y RC7/RX/DT
En esta forma de comunicación serie, cada palabra de información o dato se envía
independientemente de los demás. Suele constar de 8 o 9 bits y van precedidos por un bit de
START (inicio) y detrás de ellos se coloca un bit de STOP (parada)
Los cuatro bloques que configuran la arquitectura del USART, en modo asíncrono, son:
Circuito de muestreo..
Generador de baudios..
Transmisor asíncrono..
Receptor asíncrono.
El circuito de muestreo actúa sobre el pin RC7/RX/DT, que es por donde se recibe el bit
de información o control y se encarga de muestrear tres veces su valor, para decidir
éste por mayoría.
La frecuencia en baudios (bits por segundo) a la que se realiza la transferencia se debe
efectuar a un valor normalizado. Para generar esa frecuencia, el USART dispone de un
Generador de Frecuencia en Baudios, BRG, cuyo valor es controlado por el contenido grabado
en el registro SPBRG.
Además del valor X cargado en el registro SPBRG, la frecuencia en baudios depende del bit
BRGH del registro TXSTA<2>. Si BRGH es 0, se trabaja en baja velocidad y si BRGH = 1 se
trabaja en alta velocidad. Según este bit se obtendrá el valor de una constante K necesaria
en la determinación de la frecuencia de funcionamiento
Generador de Baudios
Las características más relevantes de los registros que intervienen en esta operación son
Los pasos a seguir para implementar una transmisión en el USART son
El dato que se desea transmitir por el USART transmisor se deposita en el registro
TXREG y a continuación se traspasa al registro de desplazamiento TSR, que va
sacando los bits secuencialmente y a la frecuencia establecida. Antes de los bits del
dato de información incluye un bit de INICIO y después de sacar todos los bits añade
un bit de PARADA. El USART receptor recibe, uno a uno, los bits, elimina los dos de
control y los de información una vez que han llenado el registro de desplazamiento RSR
los traslada automáticamente al registro RCREG, donde quedan disponibles para su
posterior procesamiento.
Transmisor asÍncrono
Su diagrama de bloques se muestra a continuación
Las características más relevantes de los registros asociados con la transmisión asíncrona
son.
Y, la distribución y asignación de las funciones de los bits del registro TXSTA
Los datos se reciben bit a bit, por la terminal RC7/RX/DT
y se van introduciendo secuencialmente en el registro
desplazamiento RSR, que funciona a una frecuencia 16
veces más rápida que la de trabajo. Cuando el dato
consta de 9 bits hay que programar el bit RX9 = 1 y el
noveno bit de información se colocará en el bit RX9D del
registro RCSTA.
Receptor asÍncrono
Cuando un procesador maestro intenta enviar información a uno de los esclavos, primero
envía un byte de dirección que identifica al destinatario. El byte de dirección se identifica
porque el bit RX9D que llega vale 1. Si el bit ADDEN = 1 en el esclavo se ignoran todos los bytes
de datos. Pero si el noveno bit que se recibe vale 1, quiere decir que se trata de una dirección
y el esclavo provocará una interrupción, y se transferirá el contenido del registro RSR al
buffer de recepción. Tras la interrupción, el esclavo deberá examinar la dirección y si coincide
con la suya poner ADDEN = 0 para poder recibir datos del maestro. Si ADDEN = 1 como los
datos son ignorados, el bit de PARADA no se carga en RSR, por lo que esto no produce
interrupción.
El diagrama de bloques del receptor es el siguiente
Las características más relevantes de los registros asociados con la recepción asíncrona
son.
Y, la estructura interna y la asignación de funciones de los bits del registro RCSTA.
Los pasos a seguir en el modo recepción son
Ejemplo
En el libro Microcontroladores PIC: Diseño Práctico de Aplicaciones Segunda Parte, encontramos
el siguiente ejemplo:
“El programa que vamos a realizar va a hacer que el PIC se comunique vía serie con un
programa terminal que correrá sobre un PC. El PIC esperará a recibir un carácter, lo visualizará
en forma binaria sobre LED y lo volverá a transmitir a modo de ECO. La recepción del carácter
se controlará mediante interrupción..”

Continuar navegando