Вы находитесь на странице: 1из 22

Módulo CCP

• El módulo CCP puede realizar 3


funciones diferentes, CCP viene de
Captura, Comparación y
PWM(modulación por ancho de pulso),
esto es el módulo CCP puede trabajar
en modo captura, en modo
comparación o en modo PWM. El
PIC16F877A tiene dos módulos CCP los
cuales se conocen como módulo CCP1 y
módulo CCP2 de 16 bits cada uno,
a cada uno le corresponde un pin del
PIC para hacerlo trabajar, para el
módulo CCP1 le corresponde el pin 17
o RC2, mientras al módulo CCP2 le
corresponde el pin 16 o RC1, como se
puede ver en la imagen de distribución
de pines del PIC16F877A.
• Estos módulos 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 del módulo CCP.
• Los registros CCPRxH y CCPRxL ambos de 8 bits pero que
actúan como uno solo que se puede considerar como un
registro de 16 bits que es donde se guardan los valores
obtenidos mediante el módulo CCP.

CCPxX: CCPxY: PWM Bits menos significativos
• Estos bits son los dos LSbs del ciclo de trabajo PWM. Los ocho MSbs se
encuentran en CCPRxL.

CCPxM3: CCPxM0: bits de selección de modo CCPx


• 0000 - Captura / comparación / PWM desactivado (reinicia el módulo CCPx)
• 0100 - Modo de captura, cada flanco descendente
• 0101 - Modo de captura, cada flanco ascendente
• 0110 - Modo de captura, cada cuarto flanco ascendente
• 0111 - Modo de captura , cada 16 ° flanco ascendente
• 1000 - Modo de comparación, configurar salida en el partido (se establece
el bit CCPxIF)
• 1001 - Modo de comparación, borrar salida en el partido (establecido el bit
CCPxIF)
• 1010 - Modo de comparación, generar interrupción de software en el
partido (el bit CCPxIF está establecido , El pin CCPx no se ve afectado)
• 1011 - Modo de comparación, evento especial de activación (se establece el
bit CCPxIF, el pin CCPx no se ve afectado);
• 11xx - modo PWM
El módulo CCP en modo captura

• Para el módulo CCP1, lo que hace es capturar o guardar en sus


registros CCPR1H y CCPR1L (que juntos hacen un registro de 16 bits),
el valor que se encuentra en el registro TMR1 esto es el valor que
hay en el registro donde se guardan las cuentas del temporizador 1,
(el cual también es un registro de 16 bits), la captura ocurre justo
cuando en el PIN 17 o pin CCP1 el cual tiene que ser configurado
como una entrada digital mediante el registro TRISC
correspondiente, ocurre algunos de los siguiente sucesos o eventos,
los cuales se eligen por programa:

• Una entrada digital en el pin CCP1 pasa de alto a bajo, esto


provocará una captura del módulo CCP1 por flanco de bajada.
• Una entrada digital en el pin CCP1 pasa de bajo a alto, esto
provocará una captura del módulo CCP1 por flanco de subida.
• Una entrada digital en el pin CCP1 pasa de bajo a alto 4 veces
seguidas, esto provocará una captura del módulo CCP1 por cada 4
flancos de subida que ocurran en este pin.
• Una entrada digital en el pin CCP1 pasa de bajo a alto 16 veces
seguidas, esto provocará una captura del módulo CCP1 por cada
16 flancos de subida que ocurran en este pin.

según la hoja de datos es necesario que el timer1 sea


configurado para trabajar como temporizador o contador
síncrono ya que en modo asíncrono el módulo CCP PIC modo
captura no funcionará.

Cuando ocurre la captura el bit 2 CCP1IF del registro PIR1 se pone a 1, el cual
indica que se ha producido una interrupción por captura mediante el módulo
CCPx si se han habilitado las interrupciones de este módulo mediante los bits
7 y 6 del registro INTCON y el bit 2 del registro PIE1, luego habrá que poner
nuevamente a 0 el bit 2 del registro PIR1, si no se han habilitado las
interrupciones pues no ocurrirá ninguna interrupción.
CCP PIC modo captura: Registro CCPxCON

• Los bits 7 y 6 de este registro no se utilizan por lo que se les pone a 0.


• Los bits 5 y 4 no se usan en modo captura, por lo que se les pondrá a 0, tampoco
son utilizados en el modo comparación pero si en el modo PWM como se verá
cuando se trate este modo.
• Los bits 3, 2, 1 y 0 son los que se utilizarán para elegir el modo de trabajo del
módulo CCP, si estos 4 bits se ponen a 0 el módulo CCP estará deshabilitado; para
el uso del módulo CCP pic modo captura los valores asignados a estos pines serán
como se indican en la siguiente tabla para decir cuando se quiere que ocurra la
captura como se comento líneas arriba.
• Luego que ocurre la captura por cualquiera de los eventos
seleccionados, el valor que en ese momento tenga el registro
TMR1 de 16 bits, se guardará en los
registros CCPRxH y CCPRxL que juntos hacen un registro de
16 bits, los cuales deben ser leídos y guardados dentro de una
variable de 16 bits antes de que ocurra otra captura de lo
contrario el valor guardado será borrado y reemplazado por
un nuevo valor.
El módulo CCP en modo
comparación
• el módulo CCP PIC modo comparación lo que hace es comparar
continuamente el valor que va tomando el temporizador timer1 (el
cual tiene que haber sido configurado como temporizador o como
contador síncrono), con un valor almacenado previamente en los
registros CCPRxH y CCPRxL del módulo CCPx, los cuales
juntos hacen un solo registro de 16 bits, al que se le llamará CCPRx,
pero no olvidar que estará formado por los dos registros.
• Los valores que va tomando el registro TMR1 se comparan con el
valor almacenado en el registro CCPRx hasta que los valores de estos
registros se hacen iguales, y cuando eso ocurra se producirán
algunos eventos en el microcontrolador pic, como el que se pondrá
a 1 el bit CCPxIF del registro PIR1 o PIR2 dependiendo de cual de los
módulos CCPx se esté utilizando, por lo que al ponerse a 1 el bit
CCPxIF este indicará que se ha producido la igualdad entre ambos
registros, además si se ha habilitado el uso de interrupciones se
producirá una interrupción por comparación del módulo CCPx
Cuando se produce una coincidencia, el pin RC2 / CCPX es:
El pin CCPx se pondrá a 1 al producirse la igualdad entre el
registro CCPRx y el registro TMR1, y
El pin CCPx se pondrá a 0 se pondrá a 1 el bit CCPxIF el que
indicará que se ha producido la igualdad
entre ambos registros, a su vez
que puede ser utilizado en
El pin CCPx no se ve afectado
interrupciones, si estas están
habilitadas, producidas por el módulo
CCP PIC modo comparación.

Los 3 eventos anteriores ocurren de manera similar tanto para el


módulo CCP1 y para el módulo CCP2 solo habrá que tener en
cuenta sus respectivos registros.
CCP PIC modo comparación:
Registro CCPxCON
• Se lanza o produce una acción especial
al producirse la igualdad entre el registro CCPRx y el registro TMR1,
se pondrá a 1 el bit CCPxIF, el que indicará que se ha producido la igualdad
de ambos registros, a su vez que puede ser utilizado en interrupciones, si
estas están habilitadas, producidas por el módulo CCP PIC modo
comparación; si el módulo CCP utilizado es el módulo CCP1 este reseteará
el registro TMR1 esto es lo pondrá a 0; si el módulo utilizado es el módulo
CCP2 además de resetear el registro TMR1 también provocará o lanzará
una conversión analógica digital si el módulo CAD está habilitado
CCP PIC modo PWM modulación por
ancho de pulso
• CCP PIC modo PWM, esto es modulación por ancho de pulso, en
esta forma de trabajo del módulo CCPx donde x puede ser 1 o 2
dependiendo del módulo CCP utilizado, lo que se logra con el
uso del módulo CCPx en modo PWM es obtener por el pin
CCPx una señal periódica, este pin debe ser configurado como
una salida digital mediante el correspondiente TRISC, con parte
de la señal obtenida en alto y parte de la señal en bajo, lo
interesante de este modo de trabajo del módulo CCP PIC modo
PWM es que de la señal periódica obtenida por el pin CCPx se
puede modificar el tiempo que la señal estará en alto.
¿Que es una señal PWM ?
• Es aquella en la que su periodo representado por T se tiene
que mantener constante.
• En la señal PWM el tiempo que la señal está en alto Talto se le
conoce como ancho de pulso y si está expresado en
porcentaje como ciclo de trabajo.
• El ciclo de trabajo cuando se utiliza el CCP PIC modo PWM es
el ancho de pulso expresado en porcentaje se obtienen
mediante la siguiente relación:
• Ciclo de trabajo=(Talto/T)*100%
• El ciclo de trabajo puede ser desde un 0% cuando el Talto=0,
hasta un 100% cuando el Talto es igual al periodo de la señal
PWM Talto=T, si el tiempo en alto es igual a la mitad del
periodo entonces el ciclo de trabajo será del 50%.
• el ancho de pulso o ciclo de trabajo puede tener una como
máximo una resolución de salida de hasta 10 bits, lo que
dependerá del periodo de la señal PWM generada, esto quiere
decir que el valor que representa el ancho de pulso estará
representado por un número binario que como máximo
tendrá 10 bits.
¿Que pasa al utilizar el modo pwm?
Al utilizar el módulo CCP PIC modo PWM, cuando el valor del
registro TMR2 se hace igual al valor del registro PR2 ocurre lo
siguiente:
1. El registro TMR2 se hace igual a 0 esto es se borra y vuelve a
contar desde 0 hasta que se hace igual nuevamente al valor
del registro PR2 tras lo cual nuevamente se borra.
2. El pin CCPx se pone a 1.
3. El valor almacenado en el registro CCPRxL que es el valor
que representa el ciclo de trabajo de la señal PWM.
4. es el tiempo que la señal obtenida por el pin CCPx se
mantiene a 1.
5. 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 0.
6. 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.
Resumen:
CCP PIC modo PWM cálculos del
periodo y del ancho de pulso
• Para calcular el periodo TPWM de la señal PWM generada con
el módulo CCP PIC modo PWM, se utiliza la siguiente fórmula:
TPWM = (PR2+1)*(4/Fosc)*prescalerTMR2
• Para calcular el ancho de pulso Talto de la señal PWM
generada con módulo CCP PIC modo PWM, se utiliza la
siguiente fórmula:
• Talto=(CCPRxL:CCPxCON<5:4>)*(1/Fosc)*prescalerTMR2
Donde:
CCPRxL:CCPxCON<5:4>
son los 8 bits cargados en el registro CCPRxL y los 2 bits cargados en los
bits 5 y 4 del registro CCPxCON, que vienen a ser los 10 bits de la
resolución del ancho de pulso.

la resolución del ancho de pulso no tiene


que ser mayor a 10 bits.
• Para calcular la resolución:

Resolución=(log(Fosc/(FPWM*prescalerTMR2)/log2) bits

• Donde Fosc es la frecuencia del oscilador o cristal utilizado,


FPWM es la frecuencia de la señal PWM que se quiera obtener,
la que viene a ser la inversa de periodo TPWM de la señal PWM.
• Mediante la resolución se obtiene con cuantos bits se
representa en forma binaria el valor del ancho de pulso para
una determinad FPWM elegida, siendo el máximo valor 1023
que es 210 ya que la resolución es de 10 bits como máximo.
CCP PIC modo PWM: Registro CCPxCON
• Mediante este registro se elige en modo de trabajo del módulo CCPx, en la
siguiente imagen se muestra el registro con los respectivos nombres de los
bits que lo conforman.

Los bits 7 y 6 de este registro no se utilizan por lo que se les pone a 0.


Los bits 5 y 4 en el uso del módulo CCP PIC modo PWM, estos bits son los 2 bits
menos significativos del ciclo de trabajo del módulo CCP PIC modo PWM el cual
es de 10 bits, los 8 bits mas significativos se encuentran en el registro CCPRxL
Los bits 3, 2, 1 y 0 son los que se utilizarán para elegir el modo de trabajo del
módulo CCP, si estos 4 bits se ponen a 0 el módulo CCP estará deshabilitado; para
el uso del módulo CCP PIC modo PWM los valores asignados a estos pines serán
como se indican en la siguiente tabla.
Pasos a seguir para la utilización del
módulo CCP PIC modo PWM
• Establecer el periodo de la señal PWM obtenida mediante el
módulo CCP PIC modo PWM, para ello cargar el registro PR2
con el valor obtenido mediante la fórmula TPWM =
(PR2+1)*(4/Fosc)*prescalerTMR2.
• Establecer el ancho de pulso o el ciclo de trabajo cargando los
bits CCPRxL:CCPxCON<5:4>, con valores que no sobrepasen el
máximo valor obtenido mediante la obtención de la resolución
para el periodo o frecuencia elegida para la señal PWM.
• Establecer el pin CCPx utilizado como una salida digital
mediante su registro TRISC, o el que le corresponda de
acuerdo a microcontrolador PIC utilizado.
• Configurar el módulo CCP PIC modo PWM, esto es para que el
módulo CCP trabaje en el módulo PWM.