viernes, 22 de julio de 2016
miércoles, 20 de julio de 2016
El módulo CCP PWM
Con este modo de trabajo, se consiguen impulsos lógicos cuya anchura del nivel alto es de duración variable. El módulo CCPx donde x puede ser 1 o 2 dependiendo, se logra obtener por el pin CCPx una salida digital mediante su registro TRISC correspondiente, una señal periódica, con parte de la señal en alto y parte de la señal en bajo o toda la señal en alto o toda la señal en bajo.
La parte de la señal obtenida por el pin CCPx que está en alto se conoce como ciclo de trabajo y es representado por el valor almacenado en el registro CCPRxL, el tiempo que la señal está a nivel bajo se conoce como periodo de la señal y es representado por el valor almacenado en el registro PR2.
Para esta forma de trabajo del módulo CCP se hace uso del TMR2 y de su registro PR2. El valor almacenado en el registro CCPRxL que es el valor que representa el ciclo de trabajo de la señal PWM que se mantiene a 1, se cargará en el registro CCPxH.
El valor del registro CCPxH se compara permanentemente con el valor que va tomando el registro TMR2 y cuando se hacen iguales el pin CCPx se pondrá a nivel bajo, de esta manera se fija el ancho de pulso, y como el TMR2 seguirá aumentando de valor, hasta que este se haga igual nuevamente al valor almacenado en el registro PR2, momento en el cual el registro TMR2 se hará igual a 0 y el ciclo anterior volverá a repetirse.
Para obtener la salida PWM por el pin CCPx de tienen que cargar el periodo de la señal mediante un valor en el registro PR2 y además establecer un ciclo de trabajo mediante un valor cargado en el registro CCPRxL.
El tiempo que dura la onda es:
Período = [(PR2) + 1] • 4 • Tos • Valor Predivisor TMR2
Y para la anchura de pulso:
Anchura de impulsos = (CCPR1L:CCP1CON<5:4>) • Tosc • Valor Predivisor TMR2
Programa:
https://mega.nz/#!GUsyEQhY!5-ZO5F9iIaiT9X9WSxfB6zuObGg3YBGT8t00kjiYeco
https://mega.nz/#!7ZU1CCjL!2FO0wl1mCa7bLGpME_QaITNIJHbk648Z5D_5HSGwhEs
https://mega.nz/#!yYsl1SQK!WYJvmakpOeai1b_BDkDjzL8aVd6H-1axGOqaEUPgob4
https://mega.nz/#!GUsyEQhY!5-ZO5F9iIaiT9X9WSxfB6zuObGg3YBGT8t00kjiYeco
https://mega.nz/#!7ZU1CCjL!2FO0wl1mCa7bLGpME_QaITNIJHbk648Z5D_5HSGwhEs
https://mega.nz/#!yYsl1SQK!WYJvmakpOeai1b_BDkDjzL8aVd6H-1axGOqaEUPgob4
Referencia Bibliográfica:
Milan Verle (2008). PIC Microcontrollers – Programming in Assembly. Editorial MikroElektronika.
El módulo CCP Comparación
En esta forma de trabajar el módulo CCP2 lo que hace es comparar continuamente el valor que va tomando el temporizador TMR1 (el cual tiene que haber sido configurado como temporizador), con un valor almacenado previamente en los registros CCPR2H yCCPR2L del módulo CCP, cuando ocurre la comparación al igualarse ambos valores, se producirá una interrupción en donde ocurre lo que se quiere en el pin 16. Cuando coinciden ambos valores, acontece uno de los siguientes eventos de acuerdo con la programación de los bits CCP1M3-0:
1. Pasa a nivel alto
2. Pasa a nivel bajo
3. No cambia su estado pero se produce una interrupción
Programa:
Referencia Bibliográfica:
Milan Verle (2008). PIC Microcontrollers – Programming in Assembly. Editorial MikroElektronika
Módulo CCP Captura
Trabajará con el módulo CCP1 y lo que hace es guardar en sus registros CCPR1H y CCPR1L, (8 bits correspondientes a cada caso) el valor que se encuentra en el registro TMR1 justo cuando en el PIN 17 o pin CCP1 ocurre un evento determinado. Es importante mencionar que este pin tiene que ser configurado como una entrada digital mediante el registro TRISC correspondiente.Los eventos que pueden ocurrir sobre la pata para que se produzca la captura del valor TMR, serán:
1. Un flanco ascendente
2. Un flanco descendente
3. Cada 4 flancos ascendentes
4. Cada 16 flancos ascendentes
Mientras que si se usa el módulo CPP2, cualquiera de los sucesos o eventos mencionados para el módulo CCP1 provocarán una captura, solo que en este caso sucederán para sus registros CCPR2H y CCPR2L y el suceso tiene que suceder en el pin 16.
Tabla N° 1 - CCP2 y CCP1
Referencia Bibliográfica:
Milan Verle (2008). PIC Microcontrollers – Programming in Assembly. Editorial MikroElektronika
Introducción a CCP
Los microcontroladores disponen de dos módulos CCP, llamados CCP1 y CCP2, de los cuales cuentan 16 bits cada uno, es importante resaltar que a cada uno le corresponde un pin en específico, para el módulo CCP1 el pin 17 o RC2 y el módulo CCP2 el pin 16 o RC1, que solo se diferencian en un disparo especial.
Estos realizan tres funciones diferentes:
Modo captura: se toma una pareja de uno de los módulos, siendo esta la que capture el valor almacenado en el Timer 1 cuando ocurre un evento en el pin RC2 o RC1.
Modo comparación: el valor que almacene el Timer 1 de 16 bits con algún valor previamente cargado en una pareja de registros de un módulo se compararan, cuando ambas funciones coincidan se producirá un evento en la pata RC2 o en la RC1, dependiendo del módulo.
Modo modulación por anchura de pulsos (PWM): en este caso se controla la señal dentro del intervalo de ancho de pulso en un nivel alto (1).
Cada uno de los módulos CCP1 y CCP2, cuentan con unos registros para su manipulación los cuales son:
El registro CCPxCON donde x será 1 o 2 dependiendo del módulo CCP utilizado, mediante el cual se controla el modo de trabajo.
Los registros CCPRxH y CCPRxL ambos de 8 bits actúan como uno solo y se puede considerar como un registro de 16 bits que es donde se guardan los valores obtenidos mediante el módulo CCP.
Es común provocar interrupciones mediante el módulo CCP por lo que en estos casos hay que tener en cuenta el uso de los registros INTCON, PIE1 y PIR1 para el módulo CCP1 y PIE2 y PIR2 para el módulo CCP2.
Tabla N°1 - Resumen general de las interacciones en los módulos CCP
Referencia Bibliográfica:
Milan Verle (2008). PIC Microcontrollers – Programming in Assembly. Editorial MikroElektronika
Programa para una señal cuadrada
;**************************************************************
; PROGRAMA DE GENERACIÓN DE ONDA CUADRADA
;**************************************************************
; Esta sección de programa se encarga de generar una señal ;cuadrada que será mostrada por el BIT 0, del PORTB, RB0. La ;lógica de este programa será poner una línea en alto un ;determinado tiempo y luego poner otra línea en bajo con la misma ;cantidad de tiempo
GENERACION
BSF PORTB,0
MOVF BASEPERIODO,W
MOVWF CONTADOR1
REPITE
CALL RETARDO
DECFSZ CONTADOR1,F
GOTO REPITE
BCF PORTB,0
MOVF BASEPERIODO,W
MOVWF CONTADOR1
REPITE1
CALL RETARDO
DECFSZ CONTADOR1,F
GOTO REPITE1
GOTO GENERACION
lunes, 18 de julio de 2016
Características generales de los timers del PIC 16F87X
TMR0:
Es un contador/temporizador de 8 bits.
Leible y escribible.
Reloj externo o interno.
Selección de flanco en el reloj externo.
Predivisor de la frecuencia del reloj programable.
Generación de interrupción opcional en el desbordamiento.
TMR1:
Es un contador/temporizador de 16 bits.
Leible y escribible.
Selección de reloj interno y externo.
Interrupción opcional por el desbordamiento de FFFFh a 0000h.
Posible reinicializacion desde los módulos CCP.
TMR2:
Es un temporizador de 8 bits.
Dispone de un registro de período de 8 bits (PR2).
Leible y escribible.
Predivisor de frecuencia programable.
Postdivisor de frecuencia programable.
Interrupcion opcional al coincidir TMR2 Y PR2.
Posibilidad de generar impulsos al modo SSP.
Referencia bibliográfica:
Microcontroladores PIC: Diseño práctico de aplicaciones, TOMO II. (2006) J.M. Angulo Uzcategui S, Romero Yesa, I. Angulo Martínez; McGraw Hill; 2° edición.
domingo, 17 de julio de 2016
Información general de Timer 2
El temporizador 2, del PIC 16F887, es de 8 bits y solo cumple la función como temporizador. En su estructura posee un preescalador y un postcalador, ambos circuitos forman parte de un divisor de frecuencia de entrada y salida. Este cuenta con el registro TMR2, este registro tiene asociado un registro llamado PR2 de 8 bits, que siempre estará comparándose con el temporizador. En el registro PR2 se cargará el número de veces que se quiere que el registro TMR2 aumente de valor, cuando el valor del registro TMR2 llegue a ser igual al valor cargado en el registro PR2, el módulo comparador, encargado de comparar ambos registros, generarán un pulso de salida, poniéndose el registro TMR2 en 0, para luego ser enviado al PWM
Usualmente el temporizador 2 es usado como base de tiempo para la generación de la señal PWM, (así como también se emplea como base de tiempo interna para medir eventos en aplicaciones). Cuando el registro TMR2 se pone en 0, el postcalador luego de dividir la señal, pondrá en 1 la bandera de interrupciones TMR21F.
Luego el módulo PWM usará la salida del comparador como base de tiempo para hacer funcionar el PWM.
También puede hacer funcionar el módulo MSSP (Master Synchronous Serial Port) que es aquel módulo que puede ser configurado para trabajar en dos modos de comunicación: SPI (Serial Peripheral Interfase) e I2C (Inter-Integrated Circuit). Ambos modos pueden usarse para comunicarse con otros dispositivos compatibles con estos protocolos de comunicación. La configuración correcta de este módulo para el temporizador 2, se podrá usar como base de tiempo para generar la señal SCK o SCL.
Fig. 1 – Representación del funcionamiento Timer 2
La configuración de temporizador del timer 2, cuenta con lo que se conoce como preescalador y también con un postcalador.
Lo que hacen es que la frecuencia de trabajo FOSC se divida por el preescalador y a la vez por el postcalador si se utilizan ambos a la vez se logra que el temporizador tarde un poco más en aumentar su valor en una unidad. El registro que representa a este temporizador, es:
Tabla N°1 – Registro T2CON
Descripción de los bits del registro T2CON:
· U-O (Bit 7): no se utiliza por lo que se le pone a 0.
· TOUTPS0, TOUTPS1, TOUTPS2 y TOUTPS3 (Bits 6-3): mediante las combinaciones de estos bits se elige el postcaler, el poscaler puede tener los valores del 1 al 16.
· TMR2ON (Bit 2): al poner este bit a 1 se habilita el uso del timer2 PIC, si se pone a 0 el timer2 PIC estará deshabilitado.
· T2CKPS1 y T2CKPS0 (Bits 1-0): mediante las combinaciones de estos bits se elige el prescaler, el prescaler puede tener los valores del 1, 4 y 16
En la siguiente tabla se ve los valores que hay que dar a estos bits para obtener los diferentes valores de los prescaler y el postcale para el timer2 PIC.
Fig. 1 – Configuración de bits para función deseada en el timer 2
Programa:
Referencias bibliográficas:
Electrónica y microcontroladores. Editorial USERS
Microcontroladores, programación y aplicaciones. Editorial USER
Suscribirse a:
Entradas (Atom)