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

CCP :(Captura/Comparación/PWM)

Permite medir y controlar diferentes eventos.


En modo captura proporciona el acceso al valor actual del
Timer1 (que cambia su valor constantemente).

En modo comparación compara constantemente valores de


dos registros. Uno de ellos es el Timer1. Este circuito también
permite activar un evento externo después de que haya
expirado una cantidad de tiempo predeterminada.

En modo PWM (Pulse Width Modulation) puede generar


señales de frecuencia y de ciclo útil variados por uno o más
pines de salida.
TIMERS USADOS POR CCP
MÓDULO CCP : FORMADO POR
MÓDULOS CCP1 y CCP2.

Ambos son idénticos en modo normal de


funcionamiento, mientras que las características
del PWM mejorado están disponibles sólo en el
modo CCP1.
MÓDULO CCP1

Conformado por el registro CCPR1 de 16 bits que consiste en


los registros concatenados CCPR1H y CCPR1L.

Se utiliza para capturar y comparar sus valores con los


números almacenados en el registro del temporizador Timer1
(TMR1H :TMR1L)

- - - - - - - - - - - - - - - -
BIT: 15 14 13 12 11 10 9 8 7 6 5 4 3 2 1 0

REG: C C P R 1 H : C C P R 1 L
CCP1 EN MODO DE CAPTURA

En este modo, el Timer1 se copia al registro CCP1 (que


consiste en los CCPR1H y CCPR1L) en las siguientes
situaciones:

• Cada flanco ascendente en el pin RC2/CCP;


• Cada flanco descendente en el pin RC2/CCP1;
• Cada cuarto flanco ascendente en el pin
RC2/CCP1;
• Cada decimosexto flanco descendente en el pin
RC2/CCP1.
MODO CAPTURA CCP1
Requisitos para captura CCP:
• El pin RC2/CCP1 debe estar configurado como
entrada; y
• El Timer1 debe funcionar como temporizador o
contador síncrono

El bit de bandera CCP1IF se pone a uno después


de acabar la captura.
Si se pone a 1 el bit CCP1IE del registro PIE1, se
producirá una interrupción.
CCP1CON
P1M1, P1M0 - (bits de configuración del modo PWM) - El pin P1A es la entrada del
módulo de Captura/Comparación en todos los modos, menos en modo PWM. Los
pines P1B, P1C y P1D actúan como los pines de E/S del puerto D.

0 0 PWM con una sóla salida


Configuración Full Bridge - Forward
0 1
(puente completo con salida directa)
1 0 Configuración Half Bridge (medio-puente)
Configuración Full Bridge - Reverse
1 1
(puente completo con salida inversa)
CCP1CON
DC1B1, DC1B0 - bits menos significativos del ciclo de
trabajo de PWM - Se utilizan sólo en el modo PWM y
representan dos bits menos significativos de un número
de 10 bits. Este número determina el ciclo de trabajo de la
señal PWM.
Los demás 8 bits se almacenan en el registro CCPR1L.
NO SE USAN EN MODO CAPTURA NI COMPARACIÓN
CCP1CON
CCP1M3 - CCP1M0 - (bits de selección de modo del
módulo CCP1) determina el modo del módulo CCP1
Registros asociados con captura, comparación y timer1
Ejemplo:
Realizar la medida del periodo de una onda
cuadrada conectada en RC2. El Pic usa un cristal
de 4 MHz.

1. Se Configura CCP modo captura con cada


transición de subida del pin RC2/CCP1 con
Timer1 modo temporizador 1/1.
Ejemplo:
2. Al llegar un flanco ascendente, se resetea el Timer1 y
se e spera al siguiente flanco ascendente, en el cual se
guarda el valor capturado.

3. Lo que se ha capturado es la cantidad de ciclos de reloj


transcurridos en un ciclo de la señal a medir.

4. Con este valor y el Tosc al cual trabaja el


microcontrolador se puede determinar el periodo de la
señal.
TMR1

; Se selecciona TMR1, preescaler de 1/1, modo temporizador.-

movlw b'00000001'
movwf T1CON
CCP MODO CAPTURA
; Se configura CCP modo captura cada flanco de subida.-

movlw b'00000101‘
movwf CCP1CON
Tosc
Si fosc=4MHz

Tosc= 1/4MHz

Ciclo de Operación ó ciclo de instrucción= 4 Tosc = 1 µs

Entonces, el número de incrementos del Timer1 = período


de la señal (en µs)
list p=16F887
#include <p16f887.inc>
; Definiciones particulares
Msb equ 0x20 ; Guarda Byte alto de Captura
Lsb equ 0x21 ; Guarda byte bajo de Captura
Contador1 equ 0x22 ; Para retardo
Contador2 equ 0x23 ; Para retardo
org 0x00
goto Inicio
org 0x05
Inicio
bsf STATUS,RP0 ; Banco 1
movlw b'11111111' ; portc entrada. (RC2 )
movwf TRISC
bcf STATUS,RP0 ; Banco 0.-
movlw b'00000001' ; Se selecciona TMR1, preescaler de 1/1, modo
temporizador.-
movwf T1CON
movlw b'00000101' ; Se configura CCP modo captura cada flanco de
subida.-
movwf CCP1CON
Bucle
bcf PIR1,CCP1IF ; Borramos bandera
espera
btfss PIR1,CCP1IF ; Preguntamos por bandera.-
goto espera ; Si no se activo seguimos esperando
bcf PIR1,CCP1IF ; Se activo, la borramos.-
clrf TMR1H ; Borramos Timer1.-
clrf TMR1L ;
wait
btfss PIR1,CCP1IF ; Volvemos a Preguntar por bandera.-
goto wait ; No se activo, seguimos esperando.-
movfw CCPR1L ; Copiamos el valor capturado.-
movwf Lsb
movfw CCPR1H
movwf Msb
bcf t1con,tmr1on
; mostrar usando Lsb y Msb ya que directamente es el período buscado
aqui: goto aqui ;
end
CCP1 EN MODO DE COMPARACIÓN
1. El valor almacenado en el registro CCP1 se
compara constantemente al valor almacenado
en el registro del temporizador Timer1.
2. Al igualarse los valores, el estado lógico en el
pin de salida puede ser cambiado, lo que
depende del estado de bits en el registro de
control (CCP1M3 - CCP1M0).
3. El bit de bandera CCP1IF se pone a uno
simultáneamente.
Diagrama de Bloques CCP en comparación
Special trigger event
• Invierte el valor CCPx
• Lleva a 1 CCPx
• Borra CCPx
• Generate a Special Event Trigger
• Generate a Software Interrupt

La acción es configurada por los bits


CCPxM<3:0> del registro CCPx1CON.
Nota:
 En el modo de comparación, el TIMER1 debe
estar corriendo en modo Timer o modo
contador sincronizado.
 Si esá configurado como modo contador
asíncrono, puede que no opere de la forma
correcta.
SPECIAL EVENT TRIGGER
Cuando se selecciona Special Event Trigger
(CCPxM<3:0> = 1011), el módulo CCPx hace lo
siguiente:

• • resetea al Timer1
• • Arranca una converión ADC (si el módulo ADC
está habilitado)
Para poner el módulo CCP1 en este modo de
funcionamiento, se deben cumplir dos condiciones:

1. El pin RC2/CCP1 debe estar configurado como


salida; y

2. El temporizador Timer1 debe estar sincronizado


con el reloj interno.
EJEMPLO
El TMR1 cuenta tantos pulsos externos como se indique
Mediante el valor cargado en CCP1CON por la constante
Ncompar. Cada vez que se alcanza el valor fijado, la salida
RB0 Cambia de estado.
List p=16F887
include "P16F887.INC"
Ncompar equ 06H ;Constante para modificar
; Número de comparaciones bajas
org 00H ;Vector de Reset
goto CONFIGURAR
org 04H
goto INRERRUP ;Vector de interrupción
;Programa de tratamiento de la interrupción que provoca el módulo CCP1 cada vez
;que el TMR1 cuenta tantos pulsos externos como los prefijados mediante Ncompar
INRERRUP:
bcf T1CON,TMR1ON ;TMR1 en Off
bcf PIR1,CCP1IF ;Bandera del módulo
CCP1 en OFF
clrf TMR1L
clrf TMR1H ;Puesta a 0 del TMR1
movlw b'00000001'
xorwf PORTB,F ;RB0 cambia de estado
bsf T1CON,TMR1ON ;TMR1 en On
bcf PIR1,CCP1IF
retfie
; CONFIGURAR:
bsf STATUS,RP0 ;Selecciona banco 1
clrf TRISB ;Puerto B se configura como salida
clrf TRISD
movlw b'11001011'
movwf TRISC ;RC0 entrada
bsf PIE1,CCP1IE ;Habilita
interrupción del módulo CCP1
bcf STATUS,RP0 ;Selecciona banco 0
bcf T1CON,TMR1ON ;Timer1
desconectado
clrf PORTB ;apaga salida bcf
STATUS,RP0 ;Selecciona banco 0
;El TMR1 actúa en el modo contador de pulsos externos
;sensible al flanco ascendente y con un preescaler de 1:1
movlw b'00000010'
movwf T1CON ;TMR1 en Off
;El módulo CCP1 actúa en modo de comparación e interrupción al coincidir
movlw b'00001010'
movwf CCP1CON ;Módulo
CCP en modo comparación
clrf CCPR1H ;Puesta a 0 de la parte alta del
valor a comparar
clrf TMR1L
clrf TMR1H ;Puesta a 0
del TMR1
movlw Ncompar
movwf CCPR1L
movlw b'11000000'
movwf INTCON ;Habilita
interrupciones
bsf T1CON,TMR1ON ;TMR1 en On, comienza a
contar
;Programa principal
aqui:
MOVF TMR1L,W
MOVWF PORTD
goto aqui ;Bucle infinito
R1
10k

U1 SW1
1 15
RE3/MCLR/VPP RC0/T1OSO/T1CKI
16 SW-SPST
RC1/T1OSI/CCP2
2 17
RA0/AN0/ULPWU/C12IN0- RC2/P1A/CCP1
3 18
RA1/AN1/C12IN1- RC3/SCK/SCL
4 23
RA2/AN2/VREF-/CVREF/C2IN+ RC4/SDI/SDA
5 24
6
RA3/AN3/VREF+/C1IN+ RC5/SDO
25 D1
RA4/T0CKI/C1OUT RC6/TX/CK
7 26
14
RA5/AN4/SS/C2OUT RC7/RX/DT D2
RA6/OSC2/CLKOUT R2
13 19 R3 LED-RED
D8 RA7/OSC1/CLKIN RD0
20
D3
R9 RD1 R4
330R
33 21 R5 LED-RED
34
RB0/AN12/INT RD2
22
330R D4
330R RB1/AN10/C12IN3- RD3 R6
330R
LED-YELLOW 35 27 R7 LED-RED
36
RB2/AN8 RD4
28
330R D5
RB3/AN9/PGM/C12IN2- RD5/P1B R8
330R
37 29 LED-RED
38
RB4/AN11 RD6/P1C
30
330R D6
RB5/AN13/T1G RD7/P1D 330R
39 LED-RED
40
RB6/ICSPCLK
8
D7
RB7/ICSPDAT RE0/AN5
9 LED-RED
RE1/AN6
10
RE2/AN7
LED-RED
PIC16F887
CCP1 EN MODO PWM
Modo PWM
El modo PWM genera una señal de ancho de
pulso modulado en el pin CCPx.

El ciclo util, período y resolución se determinan a


través de los siguientes registros:
• PR2
• T2CON
• CCPRxL
• CCPxCON
PWM

Entonces, PWM permite obtener en los


pines CCPx una señal periodica en la que
se puede modificar su ciclo de trabajo
(Duty Cicle).

Puede variar el tiempo en el cuál la señal


está en nivel alto (Ton) vs. El tiempo en
nivel bajo (Toff).
La tensión media aplicada es proporcional al Ton, controlando así:
velocidad de motores, luminosidad de lámparas, etc.
El pin RCy del PIC16F887 debe estar
configurado como salida, mediante a
configucación TRIS correspondiente.

La resolución de salida es de 10 bits.

El período de la señal PWM se obtiene de


configurar el Timer2 y el contenido del
registro PR2. Este registro contiene los 8
bits más significativos de los 10 bits.
Cuando TMR2 = PR2 ocurren los siguientes eventos en el siguiente ciclo de
instrucción:
• TMR2 ise borra
•El pin CCPx se va a 1. (Excepción: Si el ciclo útil es de 0% el pin no se va a
1)
•El ciclo útil se PWM de almacena de CCPRxL a CCPRxH.
Para calcular el período de la señal PWM se utiliza la ecuación:
Tpwm = (PR2+1).4 .(Valor PreescalerTMR2)
fosc
El ciclo de trabajo o duty cicle (ciclo útil) es el valor del registro
CCPxL antes de comenzar un nuevo período. A compararse con el
valor del registro del Timer2.

Para calcular el ciclo de trabajo se utiliza la ecuación:


PWM ciclo útil= (CCPRxL:CCPxCON(5:4))..ValorPreescalerTMR2
fosc
Los registro CCPRxL y los bits CCPxCON pueden escribirse en
cualquier momento, pero no se cargan hasta que finalice el
periodo de onda PWM (se produce una igualdad entre PR2 y
TMR2)

Вам также может понравиться