Sei sulla pagina 1di 10

UNIVERSIDAD TCNICA DE AMBATO

Facultad de Ingeniera en Sistemas, Electrnica e Industrial


Ttulo:

Investigacin sobre Modulo CCP (Capture,


Compare, PWM)

Carrera:

Electrnica y Comunicaciones.

rea Acadmica:

Electrnica

Lnea de Investigacin:

Control Industrial

Ciclo Acadmico y paralelo:

Sptimo Electrnico A

Alumnos participantes:

Mario Bonilla
Daro Lpez
Eduardo Molina
Jaime Ramn
Sabrina Palate

Mdulo: Microcontroladores

Docente: Ing. Patricio Crdova YY


Fecha de envo: 17/12/2014
Fecha de entrega: 22/12/2014

Tema.

CCP (Comparacin, Captura, PWM)

Introduccin.
En la presente investigacin, se tratara de cubrir todo el anlisis de la
funcionalidad, utilidad, configuracin del mdulo CCP dentro del
microcontrolador, analizando sus tres modos de utilidad, captura,
comparacin y PWM (Modulacin por ancho de pulso), teniendo en
cuenta que registros y espacios de memoria son utilizados para
realizar acabo dichos modos de utilidad, principalmente para el modo
de Captura y Comparacin, ya que para el modo PWM, corresponde a
la variacin de frecuencias de determinadas seales de salida de uno
o varios pines del microcontrolador que afectaran a la funcionalidad
de cualquier perifrico de salida conectado externamente al mismo.
Objetivo General.

Analizar el funcionamiento y capacidad de utilidad del mdulo


CCP dentro del microcontrolador.

Objetivos Especficos.

Conocer la manera de utilidad de cada modo de funcionamiento


del mdulo CCP ya se en Captura, Comparacin o PWM.
Analizar qu necesidad requiere, para la funcionalidad del
mdulo CCP.
Analizar la configuracin del mdulo CCP.

MODULO CCP.
El mdulo CCP (Captura/Comparacin/PWM) es un perifrico que le
permite medir y controlar diferentes eventos.

El modo de captura proporciona el acceso al estado actual de


un registro que cambia su valor constantemente.
El modo de comparacin compara constantemente valores
de dos registros. Uno de ellos es el registro del temporizador
Timer1.
PWM (Modulacin por ancho de pulsos) puede generar seales
de frecuencia y de ciclo de trabajo variados por uno o ms pines
de salida.

Mdulo ccp1

Una parte central de este circuito es un registro CCPR1 de 16 bits que


consiste en registros CCPR1L y CCOR1H. Se utiliza para capturar y
comparar sus valores con los nmeros almacenados en el registro del
temporizador Timer1

Modos de Operacin
MDULO CCP1
CCP1 en modo de captura
En este modo, el registro del temporizador Timer1 (que consiste en
los TMR1H y TMR1L) se copia al registro CCP1 (que consiste en los
CCPR1H y CCPR1L) en las siguientes situaciones:

Cada flanco ascendente (1 -> 0) en el pin RC2/CCP;


Cada flanco descendente (0 -> 1) en el pin RC2/CCP1;
Cada cuarto flanco ascendente (0 -> 1) en el pin RC2/CCP1; y
Cada decimosexto flanco descendente (0 -> 1) en el pin
RC2/CCP1.

Una combinacin de cuatro bits (CCP1M3 - CCP1M0) del registro de


control determina cul de estos eventos causar transmisin de dato
de 16 bits. Adems, se deben cumplir los siguientes requisitos:
El pin RC2/CCP1 debe estar configurado como entrada; y
El Timer1 debe funcionar como temporizador o contador
sncrono.
El bit de bandera CCP1IF se pone a uno despus de acabar la captura.
Si se pone a 1 el bit CCP1IE del registro PIE1, se producir una
interrupcin.
En caso de que el mdulo CCP1 est en modo de captura, puede
producirse una interrupcin no deseada. Para evitarlo, antes de que
ocurra un cambio en el registro de control se deben poner a 0 tanto el
bit que habilita la interrupcin CCP1IE, como el bit de bandera CCP1IF.

Las interrupciones no deseadas pueden producirse al cambiar el valor


del pre-escalador. Para evitarlo, el mdulo CCP1 debe estar apagado
temporalmente antes de cambiar el valor del pre-escalador.
CCP1 en modo de comparacin
En este modo, el valor almacenado en el registro CCP1 se compara
constantemente al valor almacenado en el registro del temporizador
Timer1. Al igualarse los valores, el estado lgico en el pin de salida
puede ser cambiado, lo que depende del estado de bits en el registro
de control (CCP1M3 - CCP1M0). El bit de bandera CCP1IF se pone a
uno simultneamente.
Para poner el mdulo CCP1 en este modo de funcionamiento, se
deben cumplir dos condiciones:
El pin RC2/CCP1 debe estar configurado como salida; y
El temporizador Timer1 debe estar sincronizado con el reloj
interno.
CCP1 en modo PWM
Una seal PWM no es nada ms que una secuencia de pulsos que
varan su ciclo de trabajo. Para una frecuencia especfica (nmero de
pulsos por segundo), hay un nmero limitado de combinaciones de
ciclos de trabajo. Este nmero representa una resolucin medida en
bits
Ciclo de trabajo de PWM
El ciclo de trabajo de PWM se especifica al utilizar en total 10 bits: los
ocho bits ms significativos del registro CCPR1L y los dos bits menos
significativos adicionales del registro CCP1CON (DC1B1 y DC1B0).
La siguiente tabla muestra cmo generar las seales PWM de
diferentes frecuencias cuando el microcontrolador utiliza un cristal de
cuarzo de 20 MHz (Tosc=50nS).
FRECUENCIA
[KHZ]
Pre-escalador
TMR2
Registro PR2

Registro CCP1CON

1.2
2
del 16

4.8
8
4

19.5
3
1

78.1
2
1

156.
3
1

208.
3
1

FFh

FFh

FFh

3Fh

1Fh

17h

P1M1, P1M0 - PWM Output Configuration bits (bits de configuracin


del modo PWM) - El pin P1A es la entrada del mdulo de
Captura/Comparacin en todos los modos, menos en modo PWM. Los
pines P1B, P1C y P1D actan como los pines de E/S del puerto D.

P1M1

P1M0

MODO
PWM con una sola salida
Por
el
pin
P1A
sale
una
seal
modulada.
Pines P1B, P1C y P1D son entradas/salidas del puerto D.
Configuracin
Full
Bridge
Forward
(puente completo con salida directa)
Por
el
pin
P1D
sale
una
seal
modulada.
Por
el
pin
P1D
sale
una
seal
modulada.
Pines P1B y P1C estn inactivos.
Configuracin Half Bridge (medio-puente)
Por los pines P1A y P1B sale una seal modulada.
Pines P1C y P1D son entradas/salidas del puerto D.
Configuracin
Full
Bridge
Reverse
(puente completo con salida inversa)
Por
el
pin
P1B
sale
una
seal
modulada.
Pin
P1C
est
activo.
Pines P1A y P1D estn inactivos.

DC1B1, DC1B0 - PWM Duty Cycle Least Significant bits (bits menos
significativos del ciclo de trabajo de PWM) - Se utilizan slo en el
modo PWM y representan dos bits menos significativos de un nmero
de 10 bits. Este nmero determina el ciclo de trabajo de la seal
PWM. Los dems 8 bits se almacenan en el registro CCPR1L.
CCP1M3 - CCP1M0 - (bits de seleccin de modo del mdulo CCP1)
determina el modo del mdulo CCP1.

CP1
M3
0
0
0

CCP
1M2
0
0
0

CCP
1M1
0
0
1

CCP
1M0
0
1
0

0
0

0
1

1
0

1
0

MODO
Mdulo est deshabilitado (reinicio).
No utilizado.
Modo de comparacin
El bit CCP1IF bit se pone a 1 al ocurrir una
coincidencia.
No utilizado.
Modo de captura
Cada flanco descendente en el pin CCP1.

Modo de captura
Cada flanco ascendente en el pin CCP1.
Modo de captura
Cada cuarto flanco ascendente en el pin CCP1.
Modo de captura
Cada decimosexto flanco ascendente en el pin
CCP1.
Modo de comparacin
La salida y el bit CCP1IF se ponen a 1 al ocurrir
una coincidencia
Modo de comparacin
La salida se pone a 0 y el bit CCP1IF se pone a 1
al ocurrir una coincidencia.
Modo de comparacin
Llega la solicitud de interrupcin y el bit CCP1IF
se pone a 1 al ocurrir una coincidencia
Modo de comparacin
El bit CCP1IF se pone a 1, y los registros de
temporizadores 1 o 2 se borran al ocurrir una
coincidencia
Modo PWM
Pines P1A y P1C estn activos a nivel alto.
Pines P1B y P1D estn activos a nivel alto.
Modo PWM
Pines P1A y P1C estn activos a nivel alto.
Pines P1B y P1D estn activos a nivel bajo.
Modo PWM
Pines P1A y P1C estn activos a nivel bajo.
Pines P1B y P1D estn activos a nivel alto.
Modo PWM
Pines P1A y P1C estn activos a nivel bajo.
Pines P1B y P1D estn activos a nivel bajo.

MDULO CCP2
E mdulo es similar al mdulo CCP1 puesto en modo normal. La nica
diferencia significativa entre ellos es el funcionamiento en modo de
comparacin del mdulo CCP2. La diferencia se refiere a la seal de
reinicio del temporizador T1. Concretamente, si el convertidor A/D
est habilitado, al igualarse los valores de los registros TMR1 y
CCPR2, la seal de reinicio del temporizador T1 iniciar
automticamente la conversin A/D
Registro CCP2CON

DC2B1, DC2B0 PWM: Bits menos significativos del ciclo de trabajo


de PWM - Se utilizan slo en modo PWM y representan dos bits menos
significativos de un nmero de 10 bits. Este nmero determina el ciclo
de trabajo de la seal PWM. Los dems 8 bits se almacenan en el
registro CCPR2L.
CCP2
M3
0

CCP2
M2
0

CCP2
M1
0

CCP2
M0
0

0
0
0
0

0
0
0
1

0
1
1
0

1
0
1
0

MODO
Mdulo
est
deshabilitado
(reinicio).
No utilizado.
No utilizado.
No utilizado.
Modo de Captura
Cada flanco descendente en el
pin CCP2.
Modo de Captura
Cada flanco ascendente en el
pin CCP2.
Modo de Captura
Cada cuarto flanco ascendente
en el pin CCP2.
Modo de Captura
Cada
decimosexto
flanco
ascendente en el pin CCP2.
Modo de comparacin
La salida y el bit CCP2IF se
ponen a 1 al ocurrir una
coincidencia.
Modo de comparacin
La salida se pone a 0 y el bit
CCP2IF se pone a 1 al ocurrir
una coincidencia
Modo de comparacin
Se produce una interrupcin, el
bit CCP2IF se pone a 1 y no hay
cambio el pin CCP2 pin al ocurrir
una coincidencia.
Modo de comparacin
Al ocurrir una coincidencia, el
bit CCP2IF se pone a 1, los
registros del temporizador 1 se
borran y la conversin A/D se
inicia si el convertidor A/D est
habilitado.
Modo PWM

CCP2M3 - CCP2M0: Bits de seleccin de modo del mdulo CCP2


determina el modo del mdulo CCP2.
CONFIGURACIN DE LOS CCP
Funciones para el manejo de CCP
valor=CCP_x;
Para leer el contenido de un mdulo CCP.
Donde valor es un entero de 16 bits que se carga con el valor
del CCP respectivo.
CCP_x=valor;
Para escribir el contenido de un mdulo CCP.
Donde el valor es un entero de 16 bits que se carga con el valor
del CCP respectivo.
setup_ccpx (modo);
Configuracin del mdulo CCPX modo hace referencia a los bits
CCPxM3:CCPxM0 del registro CCPxCON.
El modo permite configurar al PIC para que trabaje en modo
PWM, Captura o comparacin.

CONFIGURAR MODULO PWM


OpenPWM1(valor);

Esta funcin configura el mdulo CCP1 en modo PWM y fija el periodo


de la seal de salida en el pin RC2 segn la expresin.
Tpwm = (valor + 1)* 4 * Tosc * TMR2 prescaler
Dnde:
Tpwm: Valor del periodo de la seal PWM en us.
Tosc: Periodo de la seal de reloj del sistema en us.
TMR2 prescaler: Valor del preescaler del Timer2.
OpenPWM2(valor);
Configura el mdulo CCP2 en modo PWM igual que en caso anterior
utilizando como pin de salida RC1 o RB3 en funcin del estado de la
directiva:
# = // pragma config CCP2MX ON Seal PWM en RC1
# = // pragma config CCP2MX OFF Seal PWM en RB3
SetDCPWM1(duty);
Esta funcin configura el tiempo en alto de la seal PWM segn la
expresin:
duty = (Ton * Fosc) / (100*Fpwm*TMR2 preescaler)
Dnde:

Ton: Valor del tiempo en alto de la seal PWM en %.


Fosc: Frecuencia del reloj del sistema en Hz.(*)
Fpwm: Frecuencia de la seal PWM en Hz.
TMR2 preescaler: Valor del preescaler del Timer2

SetDCPWM2(duty);
Realiza la misma funcin sobre el mdulo CCP2 y los pines RC1/RB3.
El valor del ciclo de trabajo de CCP2 puede ser diferente al del CCP1.
SetOutputPWM1(config,modo);
Esta funcin configura el modo en que se generar la seal PWM
segn el valor de los parmetros siguientes:
Config:

SINGLE_OUT: Single output.(*)


FULL_OUT_FWD: Full-bridge output forward
HALF_OUT: Half-bridge output
FULL_OUT_REV: Full-bridge output reverse

PWM_OP_MODE_MASK: Mask PWM Output Configuration


bits
Modo:
PWM_MODE_1: PxA,PxC active high, PxB,PxD active high
(*)
PWM_MODE_2: PxA,PxC active high, PxB,PxD active low
PWM_MODE_3: PxA,PxC active low, PxB,PxD active high
PWM_MODE_4: PxA,PxC active low, PxB,PxD active low
PWM_MODE_MASK: Mask PWM Output Configuration bits
ClosePWM1(); / Close PWM2();
Desactiva el mdulo PWM y la seal de salida.
Para configurar el pin RC2 (CCP1) como salida PWM1 debemos seguir
los siguientes pasos:
1. Incluir en nuestro programa las funciones de control pwm.
#include <pwm.h>
2. Configurar el pin RC2 como salida.
TRISCbits.RC2=0;
3. Configurar el TIMER2 como temporizador, sin interrupciones y
con el prescaler (PR2) adecuado. El postescaler es ignorado.
OpenTimer2 (TIMER_INT_OFF&T2_PS_1_X); // Donde X=1,4 o 16
4. Configurar el mdulo CCP en modo PWM y fijar el periodo.
OpenPWM1(valor);
5. Fijar el ciclo de trabajo
SetDCPWM1(duty);
6. Poner en marcha el mdulo.
SetOutputPWM1(SINGLE_OUT, PWM_MODE1);

Conclusiones:
Bibliografa:

Potrebbero piacerti anche