Citation preview

1

ESPE – DEEE

MICROCONTROLADORES El módulo CCP

El módulo CCP es un módulo de Captura, Comparación y Modulación de Pulsos en anchura, son circuitos que junto con los módulos Timer1 y Timer2 permiten temporizar de otras formas. El PIC16F877 posee dos módulos CCP, denominados CCP1 y CCP2. Ambos módulos son prácticamente idénticos con la excepción de la operación del disparo de evento especial. Cada uno de estos dos módulos poseen un registro de 16 bits, el cual puede operar como: • • •

Registro de captura de 16 bits. Registro de comparación de 16 bits. Registro de Ciclo de Trabajo de módulo PWM.

Cada modo de operación requiere como recurso uno de los Timers del PIC. En la tabla 1, se muestran los Timers usados por cada modo: Tabla 1. Timers usados por cada modo.

El Timer1: El timer1 es un segundo módulo disponible para temporizar en muchos microcontroladores PIC de clase media. Su estructura se muestra en la figura 2. El Timer1 consta fundamentalmente de un contador ascendente de 16 bits precedido por un predivisor programable con factor de división de 1,2,4 u 8, el Timer1 puede operar como temporizador (al contar ciclos de máquina) o como contador (si cuenta pulsos externos).

Figura 1. Diagrama de bloques del Timer1. Fuente: Fundamentos de Microcontroladores Marcombo pág.196

El Timer2: El Timer2 es un tercer módulo disponible para temporizar en muchos microcontroladores PIC de clase media. Está formado por un contador ascendente de 8 bits, un pre-divisor, un post-divisor y un registro para almacenar el módulo de conteo. El Timer2 sólo trabaja como temporizador y es un contador de ciclos de máquina, la figura 2 muestra su diagrama de bloques. 1

ESPE – DEEE

MICROCONTROLADORES

Figura 2. Diagrama de bloques del Timer2. Fuente: Fundamentos de Microcontroladores Marcombo pág.200

Un módulo CCP está formado básicamente por una pareja de registros de 8 bits denominados CCPRxH y CCPRxL. la letra ¨x¨ se debe sustituir por 1 ò 2, indicando el módulo CCP al que se esté haciendo referencia. En estos registros se puede almacenar, respectivamente, la parte alta y baja de un número de 16 bits. Cada módulo utiliza también el registro CCPxCON para el control y el bit CCPxIF del registro PIR como indicador de que se ha producido un evento, si la interrupción del módulo está habilitado, (con el bit CCPxIE del registro PIE), cuando CCPxIF pasa a 1 se genera una solicitud de interrupción. El módulo CCP1: El registro principal de este módulo (CCPR1) se compone de dos registros de 8 bits, denominados CCPR1H (parte más significativa) y CCP1L (Parte menos significativa). La operación del módulo se controla mediante el registro CCP1CON y el disparo de evento especial, el cual es generado al alcanzarse la igualdad en un registro de comparación reseteará el Timer1. El Módulo CCP2: El registro principal de este módulo (CCPR2) se compone de dos registros de 8 bits, denominados CCPR2H (parte más significativa) y CCPR2L (parte menos significativa). La operación del módulo se controla mediante el registro CCP2CON y el disparo de evento especial, el cual es generado al alcanzarse la igualdad en un registro de comparación reseteará el Timer1 e iniciará una conversión analógico/digital si el módulo convertidor A/D está habilitado. Nota: Los terminales CCPx son CCP1 o CCP2 son entradas en el modo de captura y salidas en los modos comparador y PWM. Estos terminales, uno por cada módulo CCP existente en el PIC, comparten funciones con los terminales del puerto C. En los modos de captura y comparador, El Timer1 es utilizado por los módulos CCP como base de tiempo, en estos modos el Timer1 debe ser programado como temporizador o como contador en modo sincronizado. En el modo PWM, el Timer2, que opera siempre como temporizador, determina la frecuencia de la señal PWM.

2

ESPE – DEEE

MICROCONTROLADORES

Figura 3. Distribución de pines pic16F877A Fuente: Datasheet PIC16F877A pág 5

Dado que los módulos CCP comparten Funciones con los temporizadores Timer1 y Timer2 hay que tener en cuenta el uso compartido de estos temporizadores la siguiente tabla muestra las posibles interacciones que hay que considerar para programar los módulos CCP. Tabla 2. Interacción de los dos modos CCP

Cada módulo CCP puede operar en cualquier de los siguientes modos: • •



Modo de captura. El módulo CCP captura el valor del TImer1 cuando ocurre un evento externo en el terminal CCPx. Modo comparador. El registro del módulo CCP almacena un número de 16 bits que se compara con el valor del Timer1 y, según el resultado de la comparación, se genera un evento, que puede incluir un cambio en el terminal CCPx. Modo modulador de pulsos en anchura(PWM). El módulo CCP y el timer2 forman un modulador de ancho de pulsos con salida por el terminal CCPx.

Selección del modo de operación La selección del modo en que trabajara el módulo CCPx se realiza mediante los cuatro bits menos significativos del registro CCPxCON, es decir, mediante los bits CCPxM3:CCPxM0 (CCPxCON)

3

ESPE – DEEE

MICROCONTROLADORES

Registro CCP1CON (dirección 17h) / Registro CCP2CON (dirección 1Dh)

Tabla 3. Configuración del Módulo de trabajo con los bits (CCPxCON)

Modo de Captura En el modo de captura el registro CCPR1 (CCPR1H:CCPR1L) captura el valor de 16 bits del registro TMR1, cuando ocurre un evento en el pin RC2/CCP1. El evento en cuestión puede especificarse previamente como alguno de los siguientes: • • • •

Cada transición de bajada Cada transición de subida45 Cada 4 transiciones de subida Cada 16 transiciones de subida

Además de que el valor de TMR1 es capturado, la bandera de solicitud de interrupción CCP1IF es activada, la cual deberá ser limpiada por software para poder detectarla si se está consultando por poleo. El tipo de acción que se desea detectar en este pin se configura mediante los bits de control CCP1M3:CCP1M0 (CCP1CON) Nota: Si ocurre otro evento de captura antes de que haya sido leído el registro CCPR1, el valor capturado anterior se perderá, ya que con la nueva captura este registro es reescrito. 4

ESPE – DEEE

MICROCONTROLADORES

Figura 4. Módulo CCP operando como registro de captura del Timer1 ante un evento en el terminal CCPx. Fuente: Fundamentos de Microcontroladores Marcombo pág.205

Consideraciones que se deberán hacer para configurar adecuadamente el modo de captura: •

En el modo de captura el pin RC2/CCP1 deberá configurarse como entradra poniendo en alto el bit TRISC. Si por alguna razón el pin RC2/CCP1 es configurada como salida, se deberá tener en cuenta que una escritura al puerto C puede causar una condición de captura.



El Timer 1 debe estar corriendo en modo temporizador (o en modo contador sincronizado), de lo contrario el modo de captura puede no funcionar.



Cuando se realiza un cambio de un modo de captura a otro modo de captura se puede generar una solicitud de interrupción falsa. Esto debe ser evitado limpiando la máscara de interrupción correspondiente (CCP1IE (PIE1)) cuando se realice un cambio de estos para evitar una interrupción falsa.

Modo de Comparador En el modo de comparación el registro de 16 bits CCPR1 (CCPR1H:CCPR1L) se compara constantemente con el valor del registro de 16 bits TMR1. De manera que cuando sus valores coinciden además de activarse la bandera para solicitar interrupción CCP1IF (PIR1), puede ocurrir en el pin RC2/CCP1 (previa configuración) alguna de las siguientes acciones: • • •

RC2/CCP1 Se pone en alto RC2/CCP1 Se pone en Bajo RC2/CCP1 no cambia

La acción que ocurra en este pin se configura mediante los bits de control CCP1M3:CCP1M0 (CCP1CON). En la Figura 5 se muestra un diagrama de bloques en donde se ilustra la manera en que trabaja el módulo CCP en modo comparador

5

ESPE – DEEE

MICROCONTROLADORES

Figura 5. Módulo CCP modo comparador. Fuente: Fundamentos de Microcontroladores Marcombo pág.208

Consideraciones que se deberán hacer para configurar adecuadamente el modo de comparación: • • • •

El pin RC2/CCP1 deberá configurarse como salida limpiando el bit TRISC. Al limpiar el registro CCP1CON el latch de salida del pin RC2/CCP1 se forza a su valor “default” de cero. El Timer 1 debe estar corriendo en modo temporizador (o en modo contador sincronizado) Si se está manejando por poleo la bandera de solicitud de interrupción, se deberá limpiar por software antes de un posible evento que la active, de lo contrario no se notará la activación.

Modo PWM: Cada módulo CCP y el Timer2 forman un modulador de pulsos en anchura con salidas por el terminal CCPx del módulo Una señal PWM es un tren de pulsos de duración TON Variable y periodo T contante

Figura 1. Señal PWM. Fuente: Fundamentos de Microcontroladores Marcombo pág.210

En la figura 6, se puede observar que la duración de los pulsos es variable (𝑇𝑂𝑁 , 𝑇 ´ 𝑂𝑁 ), pero el período T es constante. Para caracterizar un tren de pulsos periódicos se utilizan los términos ciclo de trabajo, ciclo activo, o ciclo útil, que se define como el porcentaje del periodo durante el cual la señal permanece en 1 es decir para calcular el ciclo de trabajo se utiliza: 𝑐𝑖𝑐𝑙𝑜 𝑑𝑒 𝑡𝑟𝑎𝑏𝑎𝑗𝑜 =

𝑇𝑂𝑁 ∗ 100% 𝑇

(1)

6

ESPE – DEEE

MICROCONTROLADORES

Un parámetro utilizado para caracterizar una señal PWM es la resolución. En los sistemas digitales, el tiempo es normalmente una variable discreta, de modo que en una señal PWM generada por un sistema digital, la duración 𝑇𝑂𝑁 de los pulsos no varia continuamente, sino a saltos, en intervalos discretos de tiempo ∆𝑇𝑂𝑁 . Si este intervalo es un submúltiplo del período T de la señal, la duración 𝑇𝑂𝑁 de los pulsos en una señal PWM puede tomar sólo los siguientes valores discretos: 𝑇𝑂𝑁 = 0, ∆𝑇𝑂𝑁 , 2∆𝑇𝑂𝑁 , 3∆𝑇𝑂𝑁 , … . . , 𝑇

(2)

La cantidad R de veces en que se puede subdividir el período T define la resolución de la señal PWM. 𝑅=

𝑇 ∆𝑇𝑂𝑁

(3)

Si este cociente es una potencia de 2, es decir, 𝑅 = 2𝑟 , entonces r es la resolución expresada en bits. 𝑟=

𝑙𝑔𝑅 𝑙𝑔2

(4)

La resolución r de una señal PWM da la cantidad de bits necesarios para determina cualquier posible duración 𝑇𝑂𝑁 de la señal. La figura 7 se muestra la configuración que adquieren los módulos CCP junto al Timer2 en el modo PWM. El funcionamiento es el siguiente. Se compara el valor almacenado en el registro PR2 con el valor cambiando de TMR2. Cuando ambos valores son iguales, significa que ha transcurrido el tiempo correspondiente a un período T de la señal PWM. Entonces se realizan varias acciones: • •



El registro TMR2 es puesto a 0 en el siguiente ciclo de máquina. La entrada S del biestable RS se activa y con ello su salida Q pasa a 1. Por lo tanto, si el terminal CCPx está programado como salida mediante el bit correspondiente del registro TRIS, pasa también a 1. El valor situado en los bits DCxB9:DCxB0 se carga en CCPRxH y en dos bits internos de mòdulo0Este valor es proporcional a la duración 𝑇𝑂𝑁 de los pulsos de la señal PWM.

7

ESPE – DEEE

MICROCONTROLADORES

Figura 7. Módulo CCP trabajando como modulador de pulsos en anchura. Fuente: Fundamentos de Microcontroladores Marcombo pág.212

La señal PWM se puede obtener en el terminal CCPx del módulo. El período de la señal queda determinado por el valor N depositado en el registro PR2 del Timer2 y la duración de los pulsos la define el valor M formado por los bits DCxB9:DCxB0.

Figura 8. Parámetros de la señal PWM generada por el módulo CCP. Fuente: Fundamentos de Microcontroladores Marcombo pág.213

El ciclo de trabajo de la señal PWM está determinado por el valor M de los bits DCxB9:DCxB0, mientras que el período de la señal lo determina el valor N almacenado en PR2. El registro TMR2 se incrementa, en cada ciclo de máquina desde 0 a N, al alcanzar este valor, es forzado a 0 en el ciclo de máquina siguiente, con lo que se inicia un nuevo período de la señal PWM. La señal inicia su ciclo de trabajo cuando el TMR2, puesto a 0, y finaliza cuando TMR2 alcanza el valor M.

8

ESPE – DEEE

MICROCONTROLADORES

El período T y la duración 𝑇𝑂𝑁 de los pulsos en la señal PWM se pueden calcular mediante:

• • • • • • • •

T = (N + 1)x P x 4 xTosc

(5)

𝑇𝑂𝑁 = 𝑀𝑥𝑃𝑥𝑇𝑜𝑠𝑐

(6)

N es el valor depositado en el registro PR2 M es el número formado por los bits DCxB9:DCxB0. P=1,4,16 es el factor de división del pre-divisor del Timer2. 𝑇𝑜𝑠𝑐 es el período del oscilador principal del microcontrolador. M es un número de 10 bits que se puede expresar como: (7) 𝑀 = 4 𝑥 𝑀8 + 𝑀2 𝑀8 es el número de 8 bits almacenado en CCPRxL. 𝑀2 es el número de 2 bits almacenado en CCPxCON. Si por comodidad para variar la duración de los pulsos de la señal PWM se requiere manipular sòlo el registro CCPRxL, entonces se pueden mantener los bits 𝑀2 en 0. De esta forma, si 𝑀2 = 0, se obtiene la siguiente relación. 𝑇𝑂𝑁 = 4 𝑥 𝑀8 𝑥 𝑃𝑥 𝑇𝑜𝑠𝑐

(8)

Secuencia de configuración PWM: 1. Establecer el periodo del PWM escribiendo al registro PR2. 2. Establecer el ciclo de trabajo del PWM escribiendo al registro CCPR1L y a los bits CCP1CON. 3. Configurar como salida el pin CCP1, limpiando el bit TRISC. 4. Configurar el preescalador del Timer2 y habilitar el Timer2, escribiendo al registro T2CON. 5. Configurar el módulo CCP1 para operación PWM. Poniendo en alto los bits CCP1CON Bibliografía: • •

F.,Pallás R., MICROCONTROLADORES Fundamentos y aplicaciones con PIC, Marcombo, España, 2007. Datasheet PIC 16F877A

9