Módulo CCP PIC Introducción


Compartir: Share on Facebook0Tweet about this on TwitterShare on Google+0Share on Tumblr0Share on LinkedIn0

Módulo CCP en el PIC16F877ASe comentará el módulo CCP para el caso del microcontrolador PIC16F877A, son muchos los microcontroladores PIC que cuentan con el módulo CCP, siendo su utilización muy similar a lo que aquí se comente, con algunos cambios, por lo cual es necesario siempre tener a la mano la hoja de datos del PIC a utilizar.

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.

También se puede provocar interrupciones mediante el módulo CCP por lo que en estos casos ademas 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.

Módulo CCP modos de trabajo:

El módulo CCP en modo captura por ejemplo 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 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.

Si se usa el módulo CPP2, cualesquiera de los sucesos o eventos mencionados para el módulo CCP1 provocarán una captura, solo que en este caso ocurrirán para sus registros CCPR2H y CCPR2L y el suceso tiene que suceder en el pin 16 o pin CCP2.

El módulo CCP en modo comparación por ejemplo para el módulo CCP2, mediante esta forma de trabajar del 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 y CCPR2L del módulo CCP, que como se ha mencionado lineas arriba conforman un solo registro de 16 bits; cuando ocurre la comparación al igualarse ambos valores, si se ha habilitado el uso de interrupciones pues se producirá una interrupción, ademas de que por programa se puede decidir que es lo que se quiere que ocurra en este caso en el pin 16 o pin CCP2, el cual previamente tiene que haber sido configurado como una salida digital, que para el caso del PIC16F877A se tienen las siguientes opciones:

  • El pin CCP2 se pondrá a 1 al producirse la igualdad entre el módulo CCP2 y el timer1, ademas que pondrá el bit 0 del registro PIR2  a 1 el cual puede ser utilizado en las interrupciones producidas por este módulo.
  • El pin CCP2 se pondrá a 0 al producirse la igualdad entre el módulo CCP2 y el timer1, ademas que pondrá el bit 0 del registro PIR2  a 1 el cual puede ser utilizado en las interrupciones producidas por este módulo.
  • El pin CCP2 no se ve afectado al momento de ocurrir la igualdad entre el módulo CCP2 y el timer1, pero pondrá el bit 0 del registro PIR2 a 1 el cual es utilizado en las interrupciones producidas por este módulo.

Estas 3 opciones ocurren de similar manera tanto para el módulo CCP1 y CCP2 solo que hay que tener en cuenta sus respectivos registros; ademas hay otra opción mas la cual variará de un módulo a otro.

  • Se lanza una acción especial (así lo han llamado) al ocurrir la comparación entre el módulo CCPx y el timer1; si es el módulo CCP1 pondrá el bit 0 del registro PIR2 a 1 y reseteará el registro TMR1 esto es lo pone a 0; pero si es  el módulo CCP2 pondrá el bit 0 del registro PIR2 a 1, reseteará el registro TMR1 esto es lo pone a 0 y además provocará o lanzará una conversión analógica digital si el módulo CAD está habilitado.

El módulo CCP en 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 es obtener por el pin CCPx, que previamente tiene que ser configurada como 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 o a 1 se conoce como ciclo de trabajo que en este caso es representado por el valor almacenado en el registro CCPRxL y normalmente se expresa en porcentaje el  que puede ser desde 0% hasta un 100%, el tiempo que la señal está a 1 junto con el tiempo que la señal esta en bajo o a 0 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 compañero PR2, la forma de usar estos registros se puede ver aquí, es muy importante conocer el funcionamiento del TMR2 y el PR2 para poder hacer uso del modo PWM del módulo CCP.

Ocurre que cuando el valor del registro TMR2 se hace igual al valor del registro PR2 puede ocurrir lo siguiente:

  • El registro TMR2 se hace igual a 0 esto es se borra y vuelve a contar desde 0 hasta que se hace igual al valor del registro PR2 tras lo cual nuevamente se borra; este lapso de tiempo para que ocurra esto es lo que constituye el periodo de la señal PWM.
  • El pin CCPx se pone a 1, que es lo mismo que decir que se obtiene un alto por este pin, menos cuando el ciclo de trabajo del modo PWM sea del 0%, en este caso este pin no se pondrá a 1.
  • El valor almacenado en el registro CCPRxL que es el valor que representa el ciclo de trabajo de la señal PWM esto es el tiempo que la señal obtenida por el pin CCPx 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 0, 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.

Entonces para obtener una salida PWM por el pin CCPx de tienen que cumplir 2 cosas establecer el periodo de la señal mediante un valor cargado en el registro  PR2 y establecer un ciclo de trabajo mediante un valor cargado en el registro CCPRxL.

Módulo CPP: consideraciones importantes

Hay que recordar siempre que para el modo captura y el modo comparación se utilizará el timer1 mientras que para el modo PWM se utilizará el timer2.

En el modo captura el al ocurrir la captura el timer1 no se resetea, esto es no se pone a 0; lo mismo para el modo de comparación, a menos que se configure para el modo comparación para que lance la acción especial al ocurrir la comparación.

Ademas según la siguiente tabla ambos módulos pueden interactuar como se indica

Módulo CCP interacción

 😎 Para ver los 3 tipos de trabajo en forma mas amplia del módulo CCP del microcontrolador PIC, se ha divido el tema en 3 partes las cuales se pueden ver en los siguientes enlaces:

Módulo CPP

 

Compartir: Share on Facebook0Tweet about this on TwitterShare on Google+0Share on Tumblr0Share on LinkedIn0