2. MODULOS CCP:
Captura, Comparación y modulación de anchura de pulsos
• El PIC16F887 dispone de dos módulos CCP, llamados
CCP1 y CCP2.
• Cada módulo tiene un registro de 16 bits, el cual puede
operar como registro de captura, como registro de
comparación o como registro “duty cycle” en PWM.
• Dada la similitud, la descripción se orienta al módulo
CCP1.
• Estos módulos trabajan en tres modos:
- Modo captura.
- Modo comparación.
- Modo modulación de anchura de pulsos (PWM)
• MICROCONTROLADORES
3. REGISTRO CCPR1
La parte central del modulo CCP1 es un registro de 16 bits CCPR1H: CCPR1L,
usado para capturar o comparar números binarios almacenados en TMR1H:
TMR1L.
• MICROCONTROLADORES
4. CCP1:MODO CAPTURA
• El módulo CCP1 tiene un registro de trabajo de 16
bits que está formado por la concatenación de los
registros CCPR1H:CCPR1L .
• Estos registros capturan el valor contenido en
TMR1 siempre que ocurra un evento en la patita
RC2 de la puerta C, que previamente ha sido
configurada como entrada.
• Los eventos posibles que pueden ocurrir en la
patita RC2 para producir la captura del valor de
TMR1 en la pareja CCPR1H:CCPR1L son:
5. MODO CAPTURA: Eventos posibles en
pin RC2
• 1.- Un flanco ascendente.
• 2.- Un flanco descendente.
• 3.- Cada 4 flancos ascendentes.
• 4.- Cada 16 flancos ascendentes.
6. Bloques Principales del Modo Captura
RC2/CCP1 debe configurarse como entrada y TMR1 debe operar como
temporizador o contador síncrono.
8. MODO CAPTURA
• Al realizarse una captura se activa el señalizador CCP1IF
ubicado en el registro PIR1.
• Además, si se pone a 1 el permiso de interrupción
(CCP1IE=1 ubicado en el registro PIE1), se genera una
petición de interrupción cuando se carga en
CCPR1H:CCPR1L el valor del TMR1.
• Con CCP1 en modo captura, el TMR1 debe estar
configurado como temporizador o como contador
síncrono.
• Para cambiar las condiciones de funcionamiento en
modo captura, conviene desactivar CCP1 para evitar
que se produzcan falsas interrupciones durante la
operación.
9. Cambiar modo de funcionamiento
Se recomienda la secuencia siguiente:
ASM { BANKESEL CCP1CON
CLRF CCP1CON ;REGISTRO DE CONTROL BORRADO
;MÓDULO CCP1 ESTÁ APAGADO
MOVLW XX ;NUEVO MODO DEL PRE-ESCALADOR
;ESTÁ SELECCIONADO
MOVWF CCP1CON ;EN EL REGISTRO DE CONTROL
;SE INTRODUCE UN NUEVO VALOR
;MÓDULO CCP1 SE ENCIENDE
;SIMULTÁNEAMENTE
}
……..
11. CCP1M<3:0> determina el modo de
operacion de CCP1
• CCP1M<3:0>: ECCP Mode Select bits
• 0000 = Capture/Compare/PWM off (resets ECCP module)
• 0001 = Unused (reserved)
• 0010 = Compare mode, toggle output on match (CCP1IF bit is set)
• 0011 = Unused (reserved)
• 0100 = Capture mode, every falling edge
• 0101 = Capture mode, every rising edge
• 0110 = Capture mode, every 4th rising edge
• 0111 = Capture mode, every 16th rising edge
• 1000 = Compare mode, set output on match (CCP1IF bit is set)
• 1001 = Compare mode, clear output on match (CCP1IF bit is set)
• 1010 = Compare mode, generate software interrupt on match (CCP1IF bit is set, CCP1 pin is
• unaffected)
• 1011 = Compare mode, trigger special event (CCP1IF bit is set; CCP1 resets TMR1 or TMR2
• 1100 = PWM mode; P1A, P1C active-high; P1B, P1D active-high
• 1101 = PWM mode; P1A, P1C active-high; P1B, P1D active-low
• 1110 = PWM mode; P1A, P1C active-low; P1B, P1D active-high
• 1111 = PWM mode; P1A, P1C active-low; P1B, P1D active-low
12. DC1B1, DC1B0 usados en modo PWM
• Bit 5-4 en registro CCP1CON: DC1B1, DC1B0:
Usados solamente en modo PWM.
• Son los dos bits menos significativos del ciclo
de trabajo PWM de un número de 10 bits.
Los 8 bits más significativos se encuentran en
CCPR1L.
• No se usan en modo captura y comparacion.
13. P1M1, P1M0: bits de configuración de
la salida PWM
• bit 7-6 P1M<1:0>: PWM Output Configuration bits
• If CCP1M<3:2> = 00, 01, 10:
• xx = P1A assigned as Capture/Compare input; P1B, P1C, P1D
assigned as port pins
• If CCP1M<3:2> = 11:
• 00 = Single output; P1A modulated; P1B, P1C, P1D assigned as port
pins
• 01 = Full-Bridge output forward; P1D modulated; P1A active; P1B,
P1C inactive
• 10 = Half-Bridge output; P1A, P1B modulated with dead-band
control; P1C, P1D assigned as port pins
• 11 = Full-Bridge output reverse; P1B modulated; P1C active; P1A,
P1D inactive
14. MODO COMPARACION
Para operar en este modo, dos condiciones deben cumplirse: El pin
RC2/CCP1 debe configurarse como salida, y TMR1 debe sincronizarse con
el reloj interno, es decir operar como temporizador.
15.
16. MODO COMPARACION
• En este modo de trabajo, la pareja de registros
CCPR1H:CCPR1L se compara continuamente con el
contenido de TMR1 que debe trabajar como
temporizador o como contador síncrono.
• Cuando coinciden ambos valores, en la patita RC2 (que
previamente se configura como salida), pueden ocurrir
los eventos siguientes, de acuerdo con la programación
de los bits CCP1M3-0 en el registro de control CCP1CON:
- Conmuta la salida CCPX
- Pasa la salida CCPX a nivel alto
- Pasa la salida CCPX a nivel bajo
- Se produce disparo especial (encera TMR1 e inicia
conversión ADC).
- Genera interrupción por software, no afecta la salida
CCPX
17. MODO PWM
Ejemplo típico: el control de una lámpara, la potencia eléctrica que consume la
lámpara está directamente relacionada con el ancho del pulso. Cosa similar con el
control de motores d.c.
18. • Otra de las aplicaciones prácticas comunes es la generación
de señales de formas arbitrarias como las ondas sinusoidales
MODO PWM
• Dispositivos que operan de esta manera son usados frecuentemente para el
control de velocidad, aceleración y desaceleración de motores eléctricos
mediante ajuste de frecuencia.
19. MODO PWM
• En modo PWM se genera una señal modulada por
anchura de pulso en el pin CCPx.
• El ciclo de trabajo (duty cycle),periodo y resolucion se
determinan con los registros siguientes:
• PR2
• T2CON
• CCPRxL
• CCPxCON
• Produce una salida con una resolución de hasta 10 bits
en el pin CCPx. El pin CCPx debe configurarse como
salida.
• En la transparencia siguiente tenemos un diagrama de
bloques simplificado de la operación PWM.
20. MODO PWM
• Diagrama de
bloques del
Modo PWM,
mostrando un
pulso de salida
cuyo período y
ancho de pulso
deben ser
configurados.
21. PERIODO PWM
• Cuando TMR2 es igual a PR2 ocurre los eventos
siguientes:
a) TMR2 se encera.
b) Pin CCPx se enciende (Si el ciclo de trabajo =
0%, el pin no se enciende.)
c) El ciclo de trabajo se transfiere
automáticamente de CCPRxL a CCPRxH.
• En PWM el registro CCPRxH es de lectura
solamente.
23. PERIODO
• El período del pulso de salida (T) se determina por medio del registro PR2
del TMR2. El período del PWM puede calcularse de la siguiente fórmula:
ANCHO DE PULSO
• El ciclo de trabajo del PWM se lo especifica mediante 10 bits: ocho del
CCPR1L y los dos bits menos significativos de CCP1CON(DC1B1 y DC1B0). El
resultado es un número de 10 bits contenido en la fórmula:
25. RESOLUCION PWM
La resolución determina el número de ciclos de trabajo
disponibles. Por ejemplo, con 10 bits resultará 1024 ciclos de
trabajo. La resolución máxima es 10 bits cuando PR2 = 255.
Cuando el ancho del pulso es mayor que el período el pin de
salida se congela encendido y no cambia.
28. • DC1B1, DC1B0 – Representan los dos bits menos significativos
cuando se emplea la resolución del PWM a 10 bits. Los 8 bits mas
significativos están almacenados en el registro CCPR1L.
32. Pasos para la Configuración del CCP1
en Modo PWM
• Los pasos para la configuración del modo PWM son los siguientes:
1.- Deshabilite el CCP1. Pin CCP1 debe ser configurado como
entrada
2.- Ingrese en PR2 el período del PWM
3.- Configure el módulo CCP para trabajar en el modo PWM
configurando los bits del CCP1CON.
4.- Configure el ciclo de trabajo cargando CCPR1L y usando los
bits DC1B1 y DC1B0 del registro CCP1CON.
5.- Configure y empiece el TMR2.
6.- Habilite el pin de salida del PWM después de completar un
ciclo de trabajo.
34. MODULO CCP2
CCP2 es una buena copia de CCP1, la diferencia esta en la senal de reset de TMR1, si
el ADC esta habilitado , en el momento en que TMR1=CCPR2 la senal de reset de
TMR1 automaticamente genera el inicio de conversion en el ADC. Su registro de
control es el CCP2CON.
35. MODULO CCP2
DC2B1-DC2B0 bits menos significativos del ciclo de trabajo, los
8 bits más significativos se encuentran CCPR2L para formar un
número de 10 bits.
CCP2M3…CCP2M0 bits seleccionan el modo de trabajo de CCP2.
Ver siguiente transparencia
36. MODOS DE TRABAJO DE CCP2
• bit 3-0 CCP2M<3:0>: CCP2 Mode Select bits
0000 = Capture/Compare/PWM off (resets CCP2 module)
0001 = Unused (reserved)
0010 = Unused (reserved)
0011 = Unused (reserved)
0100 = Capture mode, every falling edge
0101 = Capture mode, every rising edge
0110 = Capture mode, every 4th rising edge
0111 = Capture mode, every 16th rising edge
1000 = Compare mode, set output on match (CCP2IF bit is set)
1001 = Compare mode, clear output on match (CCP2IF bit is set)
1010 = Compare mode, generate software interrupt on match (CCP2IF bit is
set, CCP2 pin is unaffected)
1011 = Compare mode, trigger special event (CCP2IF bit is set, TMR1 is reset
and A/D conversion is started if the ADC module is enabled. CCP2 pin is
unaffected.)
11xx = PWM mode.
37. MODO ECCP1: PWM MEJORADO
• En modo mejorado se puede generar hasta 4 senales
PWM moduladas en cuatro patitas diferentes hasta con
10 bits de resolucion.
• Los 4 modos disponibles son:
a) Single PWM
b) Half-Bridge PWM
c) Full-Bridge PWM, Forward mode
d) Full-Bridge PWM, Reverse mode
• Para seleccionar uno de los modos mejorados se usan
los bits P1M del registro de control CCP1CON.
• Este modo mejorado sólo esta disponible en el modulo
CCP1.