Está en la página 1de 35

Tema

Mdulo
Captura
Comparacin
Modulacin de Achura
de Pulsos

C. F. G.S. D.P.E. Mdulo de Proyectos

Mdulo de Captura/Comparacin/PWM
Los microcontroladores de la familia 16F87X
disponen de dos mdulos de captura/
comparacin y PWM (modulacin de anchura de
impulsos), denominados CCP1 y CCP2.
Cada uno de dichos mdulos contiene un registro
de 16 bits que puede operar como:
Registro de captura de 16 bits.
Registro de comparacin de 16 bits.
Registro de control del ciclo de trabajo en la
modulacin de anchura de pulsos.
C. F. G.S. D.P.E. Mdulo de Proyectos

Mdulos CCP
Ambos mdulos son idnticos en su modo de
funcionamiento, con la excepcin del modo de
disparo especial.
Seguidamente damos el funcionamiento del
mdulo CCP1, entendiendo que CCP2 funciona
igual excepto en el modo de disparo especial
En las siguiente tablas, se dan los recursos e
interacciones que utilizan cada uno de los
mdulos CCP.
C. F. G.S. D.P.E. Mdulo de Proyectos

Mdulos CCP
Recursos:

Modo CCP
Captura
Comparacin
PWM

C. F. G.S. D.P.E. Mdulo de Proyectos

Timer utilizado
Timer 1
Timer 1
Timer 2

Interacciones:
Modo CCPx

Modo CCPx

Interaccin

Captura

Captura

La misma base de tiempos de


TMR1

Comparacin

El comparador debe ser


configurado en el modo de
disparo especial que pone a 0
TMR1

Comparacin Comparacin

Los comparadores deben ser


configurados en el modo de
disparo especial que pone a 0
TMR1

Captura

PWM

PWM

PWM
PWM

Captura
Comparacin

Los PWM poseen la misma


frecuencia y ciclo de trabajo
Ninguna
Ninguna
5

Mdulo CCP1
El registro de Captura/comparacin/PWM (CCP1)
es de 16 bits y est compuesto de 2 registros de
8 bits cada uno: CCPR1L (byte bajo), con
direccin 15h y CCPR1H (byte alto) con direccin
16h.
El registro CCP1CON (direccin 17h), posee los
bits de control de este mdulo.
El modo de disparo especial es generado cuando el
contenido del TIMER1 y CCPR1 poseen el mismo
valor, provocando este suceso el reset del
TIMER1.
C. F. G.S. D.P.E. Mdulo de Proyectos

El Registro CCP1CON
Los registros CCP1CON y CCP2CON. Son los
registros de control de cada uno de los mdulos
CCP,y ocupan las direcciones 17h y 1Dh
respectivamente.
Todos los bits de estos registros, se pueden leer y
escribir y su valor tras el reset es 0.

x puede ser 1 2
C. F. G.S. D.P.E. Mdulo de Proyectos

El Registro CCP1CON
Bits 7-6 No implementados: se leen 0
Bits 5:4 CCPxX:CCPxY: Bits menos significativos
del ciclo de trabajo en modo PWM, los 8 bits mas
significativos se encuentran en CCPPRxL.
9No utilizados en el modo Captura
9No utilizados en el modo Comparacin
Bits 3-0 CCPxM2:CCPxM0: Bits de seleccin de
modo de trabajo del mdulo.
C. F. G.S. D.P.E. Mdulo de Proyectos

CCPxM3:0

Modo de Trabajo del Mdulo

0000

Mdulo CCPx desconectado reset del


mdulo

0100

Modo de captura con cada flanco en


el pin RCy/ CCPx

0101

Modo de captura con cada flanco de

0110

Modo de captura cada 4 flancos de

0111

Modo de captura cada 16 flancos de

C. F. G.S. D.P.E. Mdulo de Proyectos

CCPxM3:0
1000
1001
1010

1011
11xx

Modo de Trabajo del Mdulo


Modo de comparacin que activa el
terminal RCy/CCPx (lo pone a 1) al
coincidir los valores
Modo de comparacin que pone a 0 la
patilla RCy/CCPx al coincidir los valores
Modo de comparacin que genera una
interrupcin software (no afecta a
RCy/CCPx).
Modo de comparacin que genera un
disparo especial, diferente para cada
mdulo.
Modo PWM

C. F. G.S. D.P.E. Mdulo de Proyectos

10

Mdulo CCP1 en Modo Captura


En este modo CCPR1H:CCPR1L capturan el valor
que posee TMR1 (16 bits), cuando se produce
alguno de los sucesos siguientes en el pin
RC2/CCP1:
9 Cada flanco ascendente
9 Cada flanco descendente
9 Cada 4 flancos de subida
9 Cada 16 flancos de subida
9 El tipo de evento se selecciona mediante los bits
de control CCP1M3:CCP1M0 (CCP1CON<3:0>).
C. F. G.S. D.P.E. Mdulo de Proyectos

11

Mdulo CCP1 en Modo Captura


Diagrama de bloques

C. F. G.S. D.P.E. Mdulo de Proyectos

12

Mdulo CCP1 en Modo Captura


Cuando se efecta una captura, el flag CCP1IF
PIR1<2>), se pone a 1, y si est habilitada la
interrupcin con PIE1<CCP1IE> =1, esta se
producir.
Dicha bandera debe ser puesta a 0 por
software por el usuario (en la rutina de
atencin a la interrupcin).
Si se produce una captura, cuando la anterior
no se ha ledo, la ltima captura se
sobreescribe sobre la que ya exista en el
modulo, perdindose el primer valor.
C. F. G.S. D.P.E. Mdulo de Proyectos

13

Mdulo CCP1 en Modo Captura


Configuracin del pin CCP
En el modo captura, el pin RC2/CCP1, debe ser
configurado como entrada, para ello se debe
poner a 1 el bit TRISC<2>.

Si el pin RC2/CCP1 est configurado como


salida, una escritura en el puerto puede causar
una condicin de captura.
C. F. G.S. D.P.E. Mdulo de Proyectos

14

Mdulo CCP1 en Modo Captura


Seleccin del modo de trabajo del TIMER1
Cuando se trabaja en el modo captura con el
CCP1, el Timer1 debe funcionar en modo
temporizador o como contador sncrono, nunca
en modo asncrono.
Software de Interrupcin
Cuando se van a cambiar las condiciones del
modo captura, es conveniente desactivar el
mdulo CCP, para evitar falsas capturas.
Se debe poner a 0 el bit mediante software.
C. F. G.S. D.P.E. Mdulo de Proyectos

15

El Preescaler del Mdulo CCP1


El preescaler del mdulo CCP tiene 4 modos de
funcionamiento, que se pueden seleccionar
mediante los bits CCP1M3:CCP1M0.

Siempre que el mdulo CCP est desconectado,


o no se encuentra en modo captura, el
preescaler se pone a cero. Cualquier reset
pone a cero el contador del preescaler.

C. F. G.S. D.P.E. Mdulo de Proyectos

16

El Preescaler del Mdulo CCP1


Cambiando el preescaler durante una captura, se
puede generar una interrupcin. Adems el
preescaler puede que no se encuentre a cero,
con lo cual la primera captura puede generarse
partiendo de un valor diferente a cero del
preescaler.
En el siguiente ejemplo facilitado por Microchip
se da el mtodo para modificar el preescaler en
el modo captura. Este ejemplo tambin pone a
cero el contador del preescaler y no genera
una falsa interrupcin.
C. F. G.S. D.P.E. Mdulo de Proyectos

17

El Preescaler del Mdulo CCP1


CHANGING BETWEEN CAPTURE PRESCALERS
CLRF

CCP1CON ; desactiva el
; mdulo CCP

MOVLW

NEW_CAPT_PS ; Carga W con el nuevo


;preescaler

MOVWF

CCP1CON ; Carga el valor en CCP1CON


;y pon en marcha el

mdulo

C. F. G.S. D.P.E. Mdulo de Proyectos

18

El Preescaler del Mdulo CCP1


Una aplicacin del modo de captura es la
medicin de intervalos de tiempo que existen
entre los impulsos que llegan al pin RC2/CCP1
que deber estar configurada como entrada.
Ej. Aplicacin como frecuencmetro, encoder etc..
El timer1 trabajar como reloj (temporizador)

C. F. G.S. D.P.E. Mdulo de Proyectos

19

Mdulo CCP1 en Modo Comparacin


En el modo comparacin, los 16 bits del registro
CCPR1 son constantemente comparados con
el contenido de los registros de TMR1.
Cuando se produce una igualdad, en el pin
RC2/CCP, que debe estar configurado como
salida, se puede provocar alguna de las
siguientes acciones:

Llevarlo a nivel alto


Pasarlo a nivel bajo
No cambiar su estado, pero se provoca una
interrupcin.
C. F. G.S. D.P.E. Mdulo de Proyectos

20

Mdulo CCP1 en Modo Comparacion


La accin que se lleva a cabo depende del valor
de los bits de control CCP1M3:CCP1M0
(CCP1CON<3:0>). bits CCP1M3:CCP1M0.
Adems cuando se produce la igualdad, entre
los registros, el flag de interrupcin CCP1IF se
pone a 1.

C. F. G.S. D.P.E. Mdulo de Proyectos

21

Diagrama de Bloques del Mdulo en


Modo Comparacin

C. F. G.S. D.P.E. Mdulo de Proyectos

22

Mdulo CCP1 en Modo Comparacin


Configuracin del pin CCP
El usuario debe configurar el pin RC2/CCP1
como salida, poniendo a 0 el bit TRISC<2>.
Nota: Poniendo a 0 el registro CCP1CON, se
fuerza a
que la salida del comparador
(RC2/CCP1), sea
un nivel bajo (valor por
defecto). Este no es el valor que existe en el pin
del puerto C.
C. F. G.S. D.P.E. Mdulo de Proyectos

23

Mdulo CCP1 en Modo Comparacin


Modo de trabaja del TIMER1
El Timer1 debe estar configurado en modo
temporizador o contador sincronizado, nunca en
modo en contador asncrono.
Modo de Interrupcin por Software
Cuando est seleccionado el modo de interrupcin
por software, el PIN CCP1 no se modifica,
mientras que el bit CCPIF es puesto a 1, y se
provoca una interrupcin si esta se encuentra
permitida.
C. F. G.S. D.P.E. Mdulo de Proyectos

24

Mdulo CCP1 en Modo Comparacin


Disparo por evento Especial
En este modo de trabajo, el mdulo CCP1 pone a
cero el par de registros de TMR1, y el CCPR1
funciona como un registro de 16 bits, con periodo
programable, capaz de provocar peridicamente
interrupciones.
En el modo especial de disparo CCP2, resetea el
par de registros de TMR1, e inicia una conversin
A/D (si el mdulo conversor A/D est habilitado).
C. F. G.S. D.P.E. Mdulo de Proyectos

25

Mdulo CCP1 en Modo Modulacin


de Anchura de Pulsos PWM
En el modo de modulacin de anchura de pulsos,
el pin CCPx produce pulsos de nivel alto con
anchura variable, y una resolucin variable de 10
bits.
Ya que el pin CCPx est multiplexado en el puerto
C, se debe poner a cero el bit TRISC<2> para
hacer que el pin CCP1 est configurado como
salida.
Nota: Poniendo a 0 el registro CCP1CON, se
fuerza a que la salida del pin CCP1, sea un
nivel bajo (valor por defecto).
C. F. G.S. D.P.E. Mdulo de Proyectos

26

Diagrama de bloques del PWM

C. F. G.S. D.P.E. Mdulo de Proyectos

27

Funcionamiento del Mdulo PWM


Nota_1: Los 8 bits de del TMR2 se concatenan con
los 2 bits Q del reloj interno o con los 2 bits del
preescaler para crear una base de tiempos de 10
bits.
Cuando el valor almacenado en el registro PR2
coincide con el valor de los 8 bits de mayor peso
de TMR2,el comparador de abajo lo detecta, con
lo que:
Se borra el TMR2.
El biestable se setea y la salida pasa a valer 1.
El contenido de CCPR1L se copia en CCPR1H
(este es el valor que determinar la anchura del
pulso).
28

Funcionamiento del Mdulo PWM


A partir de este instante, TMR2 comienza de
nuevo a incrementarse, comparndose
continuamente con el valor de CCPR1H
(mediante el comparador de de arriba), en el
momento en que ambos coinciden, se
producen los siguientes hechos:

* El biestable se resetea, y la salida pasa a 0.


* Se repite la secuencia.
C. F. G.S. D.P.E. Mdulo de Proyectos

29

Periodo PWM
La salida PWM, que se obtiene en RC2/CCP1,
posee un tiempo-base (periodo) y un tiempo
en que la salida esta a nivel alto (ciclo de
trabajo).
La frecuencia de PWM es la inversa del periodo
(1/periodo).

C. F. G.S. D.P.E. Mdulo de Proyectos

30

Periodo PWM
El periodo se puede calcular mediante la
siguiente expresin:
T de PWM = [(PR2) + 1] 4 TOSC
(valor del predivisor de TMR2)
Nota: El postescaler del Timer2 no se utiliza
para calcular el periodo de PWM.
El postescaler could be used to have a servo
update rate at a different frequency than the
PWM output.
C. F. G.S. D.P.E. Mdulo de Proyectos

31

Ciclo de Trabajo de PWM


El tiempo que el pin se encuentra a nivel alto,
depende del valor cargado en CCPR1L y de los bits
5 y 4 de CCP1CON y su valor viene dado por la
frmula:
Ciclo de trabajo PWM =(CCPR1L:CCP1CON<5:4>)
TOSC (valor del predivisor de TMR2)
CCPR1L y CCP1CON<5:4> pueden ser escritos en
cualquier momento, ya que su valor solo es copiado
en CCPR1H hasta que se produce una igualdad
entre PR2 y TMR2.
En el modo PWM, CCPR1H solo puede ser ledo.
C. F. G.S. D.P.E. Mdulo de Proyectos

32

Resolucin de PWM
La mxima resolucin en nmero de bits para PWM
viene dado por la frmula:

Nota: Si el ciclo de trabajo de PWM, es mayor que


el periodo de PWM, el pin CCP1 nunca ser
reseteado

C. F. G.S. D.P.E. Mdulo de Proyectos

33

Programacin para Modo PWM


Secuencia para la programacin del modo PWM
1. Escribir en el registro PR2 el valor para el periodo
calculado.
2. Escribir en el registro CCPR1L y en los bits
CCP1CON<5:4>, el valor que fija el ciclo de
trabajo.
3. Hacer que el pin CCP1 sea una salida, poniendo
a 0 el bit TRISC<2>
4. Inicializar el preescaler de TMR2 y habilitar el
Timer2, escribiendo en T2CON.
5. Configurar el mdulo CCP1 module para PWM.
C. F. G.S. D.P.E. Mdulo de Proyectos

34

Registros Asociados al Mdulo CCPM

C. F. G.S. D.P.E. Mdulo de Proyectos

35

También podría gustarte