Logo Studenta

PIC16F87 CONCEPTO

¡Este material tiene más páginas!

Vista previa del material en texto

PIC 16F87
Cristal Aricel saenz hernandez #18131059
MICROCONTROLADORES
ING. HUMBERTO HERNANDEZ SING
PIC 16F87
 
La familia PIC16F87 de microcontroladores se basa 
en el núcleo de arquitectura media de Microchip 
con una pila de hardware de 8 niveles de 
profundidad y 35 instrucciones. Estas MCU 
proporcionan hasta 5 MIPS, 7 Kbytes de memoria 
de programa, 368 bytes de RAM y EEPROM de 256 
bytes. En la placa hay un oscilador configurable.
▪ Velocidad de CPU máx. de 20 MHz
▪ 35 instrucciones
▪ Pila de hardware de 8 niveles
▪ Oscilador interno de 8 MHz – Frecuencias 
seleccionables de 8 MHz a 31 kHz
▪ 16 contactos de E/S
▪ Reset de encendido (POR)
▪ Reset de caída de tensión (BOR)
▪ Temporizador Watchdog (WDT)
▪ Programación serie en circuito (ICSP)
▪ Depuración en circuito (ICD)
COMUNICACIÓN SPI
 El modo de comunicacion serial SPI, permite el 
envio y recepcion simultanea de 8 bit. Existen 
cuatro modos de configuracion que dependen de la 
polaridad y fase del reloj (CKP y CKE). Con la 
comunicación SPI el intercambio de datos ocurre 
siempre en ambas direcciones. En decir, cuando 
existe intercambio de un bit entre el maestro y 
algún esclavo seguidamente vendrá un intercambio 
de un bit del esclavo para el maestro. De esta 
forma, definimos que la comunicación es siempre 
full-duplex.
Los pines básicos de comunicación entre 
dispositivos SPI y el esquema de conexión estándar 
se muestra a continuación, esto sirve para 
CUALQUIER dispositovo que use SPI (PIC, ARDUINO, 
MOTOROLA,ETC):
¿COMO FUNCIONA?
El SPI es un protocolo síncrono que trabaja en modo full 
duplex para recibir y transmitir información, permitiendo que 
dos dispositivos pueden comunicarse entre sí al mismo 
tiempo utilizando canales diferentes o líneas diferentes en el 
mismo cable. Al ser un protocolo síncrono el sistema cuenta 
con una línea adicional a la de datos encarga de llevar el 
proceso de sincronismo.
Dentro de este protocolo se define un maestro que será aquel dispositivo encargado de transmitir 
información a sus esclavos. Los esclavos serán aquellos dispositivos que se encarguen de recibir y enviar 
información al maestro. El maestro también puede recibir información de sus esclavos, cabe destacar. 
Para que este proceso se haga realidad es necesario la existencia de dos registros de desplazamiento, uno 
para el maestro y uno para el esclavo respectivamente. Los registros de desplazamiento se encargan de 
almacenar los bits de manera paralela para realizar una conversión paralela a serial para la transmisión de 
información.
Existen cuatro líneas lógicas encargadas de realizar todo el 
proceso:
• MOSI (Master Out Slave In):. Línea utilizada para llevar los 
bits que provienen del maestro hacia el esclavo.
• MISO (Master In Slave Out):. Línea utilizada para llevar los 
bits que provienen del esclavo hacia el maestro.
• CLK (Clock):. Línea proviniente del maestro encarga de 
enviar la señal de reloj para sincronizar los dispositivos.
• SS (Slave Select):. Línea encargada de seleccionar y a su 
vez, habilitar un esclavo.
El protocolo SPI se comunica mediante un BUS, lo que permite 
conectar mas de 1 dispositivo a este. Existen 2 maneras de 
conectar múltiples dispositivos esclavos al bus, una de ellas es 
la configuración de esclavos independientes, en el cual se 
necesita de hardware adicional o salidas digitales dedicadas y 
controladas por el dispositivo maestro para seleccionar el 
dispositivo esclavo conectado al bus.
La otra manera es la conexión en cascada o Daysi Chain, en la 
cual el maestro genera una señal que habilita a todos los 
dispositivos a la vez y las salida de datos de los esclavos 
(MISO) se conecta en cascada con la entrada de datos (MOSI) 
del siguiente esclavo, así el maestro enviará los datos sólo al 
primer esclavo y recibirá respuesta del último esclavo.
La transmisión de información puede darse de muchas 
maneras dependiendo del fabricante, en muchos casos la 
línea SS habilita un esclavo cuando ésta se pone en estado 
lógico cero pero eso puede cambiar. La transimisión de bits se 
puede dar comenzando con el LSB o con MSB dependiendo 
también del fabricante, es muchos casos se comienza por el 
bit más significativo. Un bit es transmitido cada ciclo de reloj.
•Para inciar la operacion SPI, varias opciones deben ser 
seleccionadas, tales son:
Master Mode - SCK es salida
•Slave Mode - SCK es entrada
•Clock Polarity - Polaridad del Clock
•Sample Phase Data Input - Al inicio o final del tiempo de salida
•Clock Edge - Salida de info al subir o bajar SCK
•Clock Rate - Solo para Master Mode
•Slave Select Mode - Solo para Slave Mode
La informacion a transmitir es escrita en el registro SSPBUF, y 
pasa al SSPSR. El SSPSR transmite el byte mandando primero 
al bit MSb. Si mientras esta enviando se trata de escribir otro 
byte a SSPBUF, se pone en uno el bit WCOL indicando una 
colision de informacion (limpiar por software)
Todos los registros asociados con la transmision 
SPI:
Conexion tipica SPI:
¿Ventajas? Existe una serie de ventajas que ofrece este 
protocolo, entre ellas está la velocidad de transmisión ya que 
es configurable a través de software y dependerá también de 
los dipositivos utilizados en el sistema. Con respecto a otros 
protocolos seriales que trabajan a modo half duplex, el SPI 
tiene velocidades de transmisión mucho mayores debido a 
que éste trabaja en modo full duplex. Otros parámetros 
configurables a través de software son la frecuencia del reloj, 
la configuración de fase (CPHA) y polaridad (CPOL). Si solo 
existe un esclavo, puede colocarse la línea SS fija si el esclavo 
lo permite. No se limitan a trabajar con palabras de ocho bits. 
Es ampliamente utilizado cuando se necesita comunicar con 
equipos a distancias cortas.
EJEMPLO EN MIKRO C
MODULO CCP
El módulo CCP (Captura/Comparación/PWM) es un periférico que le permite medir y 
controlar diferentes eventos. El modo de captura proporciona el acceso al estado actual 
de un registro que cambia su valor constantemente. En este caso, es el registro del 
temporizador Timer1. El modo de comparación compara constantemente valores de 
dos registros. Uno de ellos es el registro del temporizador Timer1. Este circuito también 
le permite al usuario activar un evento externo después de que haya expirado una 
cantidad de tiempo predeterminada. PWM (Pulse Width Modulation - modulación por 
ancho de pulsos) puede generar señales de frecuencia y de ciclo de trabajo variados por 
uno o más pines de salida. El microcontrolador PIC16F887 dispone de dos módulos CCP 
- CCP1 y CCP2. Ambos son idénticos en modo normal de funcionamiento, mientras que 
las características del PWM mejorado están disponibles sólo en el modo CCP1. Ésta es 
la razón por la que en este capítulo se describe detalladamente el funcionamiento del 
módulo CCP1. Con respecto al CCP2, se presentarán sólo las características que lo 
distinguen del CCP1.
MÓDULO CCP1
Una parte central de este circuito es un registro CCPR1 de 16 
bits que consiste en registros CCPR1L y CCOR1H. Se utiliza 
para capturar y comparar sus valores con los números 
almacenados en el registro del temporizador Timer1 (TMR1H 
y TMR1L)
Si está habilitado por software, puede ocurrir el reinicio del 
temporizador Timer1 al igualarse los valores en modo de 
Comparación. Además, el módulo CCP1 puede generar 
señales PWM de frecuencia y de ciclo de trabajo variados. Los 
bits del registro CCP1CON están en control del módulo CCP1.
CCP1 EN MODO DE CAPTURA
Para agregar animaciones adicionales a la animación de recibir, siga los pasos que se 
indican a continuación:
En este modo, el registro del temporizador Timer1 (que 
consiste en los TMR1H y TMR1L) se copia al registro CCP1 (que 
consiste en los CCPR1H y CCPR1L) en las siguientes 
situaciones:Cada flanco ascendente (1 -> 0) en el pin RC2/CCP;
•Cada flanco descendente (0 -> 1) en el pin RC2/CCP1;
•Cada cuarto flanco ascendente (0 -> 1) en el pin RC2/CCP1; y
•Cada decimosexto flanco descendente (0 -> 1) enel pin 
RC2/CCP1.
Una combinación de cuatro bits (CCP1M3 - CCP1M0) del 
registro de control determina cuál de estos eventos causará 
transmisión de dato de 16 bits. Además, se deben cumplir los 
siguientes requisitos::El pin RC2/CCP1 debe estar configurado 
como entrada; y
•El Timer1 debe funcionar como temporizador o contador 
síncrono
El bit de bandera CCP1IF se pone a uno después de acabar la 
captura. Si se pone a 1 el bit CCP1IE del registro PIE1, se 
producirá una interrupción. En caso de que el módulo CCP1 
esté en modo de captura, puede producirse una interrupción 
no deseada. Para evitarlo, antes de que ocurra un cambio en 
el registro de control se deben poner a 0 tanto el bit que 
habilita la interrupción CCP1IE, como el bit de bandera 
CCP1IF. Las interrupciones no deseadas pueden producirse al 
cambiar el valor del pre-escalador. Para evitarlo, el módulo 
CCP1 debe estar apagado temporalmente antes de cambiar el 
valor del pre-escalador. Se recomienda la siguiente secuencia 
de programa, escrita en ensamblador:
El modo de Captura es una de las tres funciones posibles que 
puede desempeñar cada módulo CCP 
(Capture-Compare-PWM) del PIC. Normalmente hay 2 
módulos CCP1 y CCP2 con pines asociados RC2 y RC1 (notad la 
inversión en la asignación de pines). Es posible dedicar cada 
módulo CCPx a una función distinta. Uno podría estar en 
modo CAPTURA (usando TMR1) y el otro en modo PWM 
(usando TMR2). Incluso usando ambos en modo CAPTURA 
podríamos usar una base de tiempos distinta en cada módulo.
CCP1 EN MODO DE COMPARACIÓN
En este modo, el valor almacenado en el registro CCP1 se 
compara constantemente al valor almacenado en el registro 
del temporizador Timer1. Al igualarse los valores, el estado 
lógico en el pin de salida puede ser cambiado, lo que depende 
del estado de bits en el registro de control (CCP1M3 - 
CCP1M0). El bit de bandera CCP1IF se pone a uno 
simultáneamente.
Para poner el módulo CCP1 en este modo de funcionamiento, 
se deben cumplir dos condiciones:
El pin RC2/CCP1 debe estar configurado como salida; y
El temporizador Timer1 debe estar sincronizado con el reloj 
interno.
CCP1 EN MODO PWM
Las señales de frecuencia y de ciclo de trabajo variados tienen 
una amplia gama de aplicaciones en automatización. Un 
ejemplo típico es un circuito de control de potencia. Refiérase 
a la siguiente figura. Si un cero lógico (0) indica un interruptor 
abierto y un uno lógico (1) indica un interruptor cerrado, la 
potencia eléctrica que se transmite a los consumidores será 
directamente proporcional a la duración del pulso. Esta 
relación se le denomina Ciclo de Trabajo.
El otro ejemplo, común en la práctica, es el uso de señales 
PWM en un circuito para generar señales de forma de onda 
arbitraria como una onda sinusoidal. Vea la siguiente figura:
Pruébelo usted mismo con el Triceratops de la derecha:
El módulo PWM (Pulse Width Modulation), permite obtener 
de los pines CCP1 (Pin 17) y CCP2 (Pin 16) una señal periódica 
(Es decir que se repite en el tiempo) la cual podemos 
modificar su ciclo de trabajo (Duty Cycle en ingles). Dicho 
PWM o Modulación por Ancho de Pulso, puede tener una 
resolución máxima de 10 BITS. En otras palabras. Como 
sabemos que el PIC trabaja con voltajes binarios (0V o +5V), 
podemos configurar el PWM para que trabaje un 
determinado tiempo en +5V (Ton) frente al tiempo que está 
en nivel bajo 0V (Toff), tal y como lo podemos apreciar en la 
siguiente figura.
De esta manera, la tensión media aplicada a la carga, es 
proporcional al tiempo en que la señal estuvo en +5V (Ton) y 
asi podemos por ejemplo controlar la luminosidad de 
lamparas, o la velocidad de un motor.
EJEMPLO CCP MODO CAPTURA
CIRCUITO CCP CAPTURA 
EJEMPLO CCP MODO COMPARADOR
CIRCUITO CCP COMPARADOR
MODO PWM 
PWM

Continuar navegando