Está en la página 1de 2

Compilador C CCS y simulador PROTEUS para

microcontroladores PIC, Módulo CCP Comparador,


Captura y PWM
José Alejandro Huerta Cote
Universidad Politécnica de Tlaxcala
A. Universidad Politecnica No.1, San Pedro Xalcaltinco, Tepeyanco, Tlax.
90180
Ing. Mecatrónica 5° “C”
alexredbirdc@gmail.com

Resumen- Los microcontroladores PIC pueden incorporar


módulos CCP que con sus funciones básicas podemos realizar Este modo trabaja con el TIMER1. Es necesario que
operaciones en conjunto con los temporizadores. éste funcione como temporizador o como contador en modo
síncrono. En modo asíncrono no funcionaría.
Palabras clave- CCP, temporizador, captura, comprador,
ancho de pulso, TIMER, PIC, puerto. Si se produce un cambio en el modo captura, por ejemplo de
flanco de bajada a cada 4 flancos, se puede dar una falsa
I. INTRODUCCIÓN interrupción. Por software se debe borrar el bit CCPxIE para
Los módulos CCP del PIC nos permiten realizar tres deshabilitar las interrupciones, limpiar el flag CCPxIF y
funciones básicas basadas en el manejo de los temporizadores: cambiar el modo de captura.

• Comparar: Compara el valor del temporizador con el


valor de un registro y provoca una acción en el PIC. Mediante el preescaler se puede alcanzar una
resolución más precisa sobre las señales de entrada. Cuando el
• Captura: Consigue el valor del temporizador en un módulo CCPx está inhabilitado no está en modo captura, el
momento dado. contador del predivisor es puesto a cero. Cualquier tipo de
reset borra el preescaler.
• PWM: Genera una señal modulada en amplitud de
pulso. Para cambiar el tipo preescaler se debe apagar ante el
módulo CCPx y posteriormente modificar dicho valor, de lo
Los PIC de la gama media pueden tener hasta dos módulos contrario se puede producir una interrupción.
CCP. Los dos módulos CCP se comportan prácticamente igual.
Cada módulo CCP posee un registro de 16 bits. Si el modo sleep es utilizado, el TIMER1 en modo sincrono,
no se incrementa, pero el preescaler del CCPx si que continua
Cada uno de los registros CCP tiene asociados tres incrementando el contador de eventos y, por lo tanto, cuando
registros (la x indica CCP1 o CCP2): alcanza determinado el valor, el bit CCPxF se pone a 1, lo que
provoca un despertar del PIC.
• CCPRxH: Byte alto del registro de 16 bits del CCP.
• CCPRxL: Byte bajo del registro de 16 bits del CCP.
• CCPx: pin del CCP. III. MODO COMPARACION.
En el modo comparación el valor de 16 bits del registro
CCPRx se está comparando continuamente con el valor del
II. MODO CAPTURA temporizador. En el momento que ambos valores se igualan,
En el modo de captura, CCPRxH: CCPRxL capturan el en el pin CCPx se puede producir, un evento de los siguientes:
valor de los 16 bits del registro del TIMER1 cuando ocurre un
evento en el pin CCPx. • Se pone a 1.
• Se pone a 0.
• Flanco de bajada. • No cambia.
• Flanco de subida.
• 4 flancos de subida. Estos eventos se seleccionan mediante la configuración de
• 16 flancos de subida. los bits de control CCPxM3-CCPxM0.

Estos eventos se seleccionan con los bits


CCPxM3:CCPxM0.
El TIMER1 se debe configurar en modo temporizador o
modo contador síncrono para que el módulo CCPx funcione NOTA: Modo hace referencia a los bits CCPxM3:CCPxM0 del
correctamente en el modo comparación. registro CCPxCON.
Para lograr trabajar en este modo el pin CCPx se tiene que
configurar como salida, poniendo a 0 el bit del registro TRISC
correspondiente. Cuando se selcciona uno de los modos el pin Definición del ciclo de trabajo para PWM:
toma el nivel lógico contrario.
Set_pwmx_duty (valor);
Para finaliza, se puede trabajar en modo de disparo de
acción especial. En este caso cuando se produce la igualdad, el NOTA: el valor es un dato de 9 o 16 bits que determina el ciclo
de trabajo, junto con el valor del TIMER2.
temporizador TIMER1 se resetea, por lo que se utiliza como
marcador de la acción. En el módulo CCP2, además de
producirse el reset del TIMER1, se inicia una nueva conversión
AD si dicho módulo está habilitado; esto permite realizar VI. CONCLUSIONES
conversiones A/D periódicas. En la mayoría de los casos el módulo CCP es
utilizado, debido a que es necesario hacer varias
En el modo sleep, el TIMER1 no funciona y, por lo comparaciones durante el programa y este nos ayuda a
tanto, la comparación tampoco. El pin CCPx tendrá el mismo hacer más sencilla la elaboración y ayuda a mejorar el
valor que antes de trabajar en modo sleep. Después de rendimiento del programa, aprovechando todo lo que el
cualquier reset, el módulo CCP está deshabilitado. microcontrolador y el software nos brindan.

IV. MODO PWM REFERENCIAS


El modo PWM, permite obtener en los pines CCPx [1] Eduardo García Brejio, " Compilator C CCS y simulador PROTEUS para
una señal periódica en la que se puede variarse el tiempo en el microcontroladores ", AlfaOmega, 2008.
cual la señal está a nivel alto (Ton) frente al tiempo que está a
nivel bajo (Toff). De esta forma, la tensión media aplicada a la
carga es proporcional al Ton’ controlando la velocidad de
motores, luminosidad de lámparas, etc.

Se tiene una resolución de salida de hasta 10 bits. Para


que este módulo funcione correctamente, el pin debe estar
configurado como salida, mediante la configuración del TRIS
correspondiente.

El periodo de la señal PWM se obtiene de configurar


el TIMER2 y el contenido del registro PR2. Este registro de 8
bits contiene los 8 bits más significativos de una cuenta de 10
bits.

Para calcular el periodo de la señal PWM se utiliza la


siguiente ecuación:

𝑃𝑊𝑀𝑇 = (𝑃𝑅2 + 1) ∗ 4𝑇𝑂𝑆𝐶 ∗ 𝑣𝑎𝑙𝑜𝑟 𝑝𝑟𝑒𝑒𝑠𝑐𝑎𝑙𝑒𝑠 𝑇𝑀𝑅2

Cuando el valor del TIMER2 se iguala al valor PR2,


pueden ocurrir los siguientes eventos:

• TMR2 se borra.
• El pin CCPx se pone a 1 (excepción: si el Duty Cycle
es 0%, el CCPx no se pone a 1).
• El valor de CCPRxL se carga en el CCPRxH, el cual
es el que se compara con el TIMER2 para fijar el duty
cycle.

V. MODULO CCP EN C
Para el manejo del módulo CCP, el compilador CCS
proporciona la siguiente serie de funciones:

Configuración del módulo CCPx:

Setup_ccpx (modo);