Descarga la aplicación para disfrutar aún más
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
Compartir