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