20
 PICmicro GAMA MEDIA: 1 MODULOS CCP ( COMPARACION, CAPTURA Y PWM )

Modulo CCP

Embed Size (px)

Citation preview

Page 1: Modulo CCP

5/17/2018 Modulo CCP - slidepdf.com

http://slidepdf.com/reader/full/modulo-ccp 1/20

 

PICmicro GAMA MEDIA:

1

MODULOS CCP( COMPARACION, CAPTURA Y PWM )

Page 2: Modulo CCP

5/17/2018 Modulo CCP - slidepdf.com

http://slidepdf.com/reader/full/modulo-ccp 2/20

 

PICmicro GAMA MEDIA: PIC16F87X 

Modulo de CCP (COMPARACIÓN, CAPTURA Y PWM)• Un microcontrolador de la gama media de los PIC16 puede tener hasta 2 módulos CCP.

• Cada módulo CCP tiene un registro de 16 bits que se puede utilizar de 3 formas distintas:– Como registro de 16 bits para captura de tiempo al producirse un evento.– Como registro de 16 bits para compararlo con el valor de cuenta del temporizador TMR1,

pudiendo provocar un evento cuando se alcanza el valor contenido en este registro.– Como registro de 10 bits del ciclo de trabajo de una señal PWM generada por el

microcontrolador.

2

• Los 2 módulos CCP disponibles se comportan casi idénticamente, salvo el caso delfuncionamiento por disparo de evento especial ( special event trigger) que tiene una pequeñadiferencia si se trata del módulo CCP1 ó del módulo CCP2.

• Tras un reset, el módulo CCP está apagado (al forzar los bits de configuración al valor 0).

• En las siguientes transparencias se describirá el funcionamiento de CCP1. El funcionamiento deCCP2 es idéntico (salvo la excepción indicada anteriormente) pero cada uno tiene sus propiosregistros de carga y configuración (véase tabla adjunta).

Page 3: Modulo CCP

5/17/2018 Modulo CCP - slidepdf.com

http://slidepdf.com/reader/full/modulo-ccp 3/20

 

PICmicro GAMA MEDIA: PIC16F87X 

Modulo de CCP• Condiciones de funcionamiento

– Temporizadores necesarios.

Modo captura → TMR1

Modo comparación → TMR1

PWM → TMR2

3

– n eracc n en re os os m u os .

 

Page 4: Modulo CCP

5/17/2018 Modulo CCP - slidepdf.com

http://slidepdf.com/reader/full/modulo-ccp 4/20

PICmicro GAMA MEDIA: PIC16F87X 

Modulo de CCP• Registro CCP1CON / CCP2CON (17h / 1Dh)

bit 5-4 CCPxX:CCPxY: Bits menos significativos del PWMEn modo PWM:Los dos bits menos significativos del ciclo de trabajo.Los ocho bits más significativos están en CCPRxL.bit 3-0 CCPxM3:CCPxM0: Bits de selección del modo CCP a utilizar

4

= p r c n p ur e c v re e e u

0100 = Modo de captura, cada flanco descendente0101 = Modo de captura, cada flanco ascendente0110 = Modo de captura, cada 4º flanco ascendente0111 = Modo de captura, cada 16º flanco ascendente1000 = Modo de comparación, CCPx=1 al igualarse (CCPxIF=1)

1001 = Modo de comparación, CCPx=0 al igualarse (CCPxIF=1)1010 = Modo de comparación, genera interrupción al igualarse (CCPx invariable, CCPxIF=1)1011 = Modo de comparación, lanza acción especial (CCPxIF=1, CCPx invariable) CCP1 resetea

TMR1 / CCP2 resetea TMR1 y lanza una conversión A/D11xx = Modo PWM

 

Page 5: Modulo CCP

5/17/2018 Modulo CCP - slidepdf.com

http://slidepdf.com/reader/full/modulo-ccp 5/20

PICmicro GAMA MEDIA: PIC16F87X 

Modulo de CCP: MODO CAPTURA • En modo Captura, los registros CCPRxH:CCPRxL toman el valor de 16 bits que tenga el TMR1cuando se produce un determinado evento en el pin CCPx (RC2/CCP1 para el módulo CCP1 yRC1/T1OSI/CCP2 para el módulo CCP2). Los posibles eventos son:– Cada flanco de bajada.– Cada flanco de subida.

– Cada 4 flancos de subida.– Cada 16 flancos de subida.

• El evento se configura con los bits CCPxM3:CCPxM0 de los registros CCP1CON y CCP2CONrespectivamente.

5

• El bit CCP1IF (PIR1<2>) ó CCP2IF (PIR2<0>) se ponen a “1”  cuando se produce el eventoconfigurado, pudiendo provocar un salto a la rutina de interrupción. El correspondiente flagdebe limpiarse por software.

• Si se produce otra captura antes de que se lea el valor del registro CCPRx, el último valor

sobreescribe el valor anterior (que se pierde).

 

Page 6: Modulo CCP

5/17/2018 Modulo CCP - slidepdf.com

http://slidepdf.com/reader/full/modulo-ccp 6/20

PICmicro GAMA MEDIA: PIC16F87X 

Modulo de CCP: MODO CAPTURA • En modo captura, el pin RC2/CCP1 y/o el pin RC1/T1OSI/CCP2 deben configurarse comoentrada por puesta a uno de los bits TRISC<2> y TRISC<1> respectivamente. Si el bitRC2/TRISC1 y/o RC1/CCP2 se configura como salida, una escritura a este pin del puerto podríaoriginar una captura.

• El TMR1 debe estar corriendo en modo temporizador ó en modo contador síncrono para que elmódulo CCP produzca la comparación. No puede funcionar en modo contador asíncrono.

• Si se cambia de un modo captura (p.e. de 4 flancos) a otro (p.e. de cada flanco), el cambiopuede generar una falsa interrupción. El usuario debe por software limpiar el bit CCPxIE para

6

, .

• Si en medio de una cuenta de 4 ó 16 flancos de subida se apaga el módulo CCP o se pasa a unmodo que no sea el modo Captura (mediante los bits CCPxM3:CCPxM0), el prescaler del CCPse resetea.

• En modo dormido, el TMR1 no se incrementa (esta en modo síncrono ó temporizador). Pero, elprescaler del CCP sí puede continuar incrementando el contador de eventos y cuando llega alvalor configurado pone el bit CCPxF a “1” provocando que el micro se “despierte”. No obstante,el contenido del TMR1 se transfiere a los CCPR pero el TMR1 no se ha visto incrementado y portanto, el valor cargado no tiene un significado dado.

 

Page 7: Modulo CCP

5/17/2018 Modulo CCP - slidepdf.com

http://slidepdf.com/reader/full/modulo-ccp 7/20

PICmicro GAMA MEDIA: PIC16F87X 

Modulo de CCP: MODO COMPARACION• En modo comparación, el valor de 16 bits almacenado en los registros CCPRx es comparado

continuamente con el valor de los registros del TMR1. Cuando se produce una igualdad, el pinCCPx puede experimentar o no un evento, que puede ser:

– Puesta a “1”.– Puesta a “0”.– Sin cambio.

• El evento viene fijado por el valor de los bits CCPxM3:CCPxM0 (CCPxCON<3:0>) 

7

 

que el flag CCPxIF (de PIR1 ó PIR2) se pone a “1”.• TMR1 debe estar funcionando en modo temporizador ó modo contador síncrono para que el

módulo CCP funcione correctamente en el modo comparación. En modo contador asíncrono, elmodo comparación no funciona.

 

Page 8: Modulo CCP

5/17/2018 Modulo CCP - slidepdf.com

http://slidepdf.com/reader/full/modulo-ccp 8/20

PICmicro GAMA MEDIA: PIC16F87X 

Modulo de CCP: MODO COMPARACION• El pin CCPx que quiera verse modificado debe configurarse como salida, limpiando el bit del

registro TRISC correspondiente. En el momento que se selecciona el modo de comparacióndeseado, el pin CCP se pone al nivel contrario al que tiene que cambiar cuando se produzca laigualdad entre los registros CCPRx y TMR1. Si la igualdad no afecta al pin CCPx, este tendrá el

valor que se le haya dado previamente en el registro PORTC.

• MODO INTERRUPCION SOFTWARE: En este modo, el pin CCPx no se ve afectado, solo seactivará al flag CCPxIF a 1 y se generará la interrupción si está habilitada.

8

• MODO DISPARO DE EVENTO ESPECIAL: Cuando se produce la igualdad, el registro TMR1 seresetea convirtiéndose por tanto, en un registro que marca la periodicidad del evento. En elcaso del módulo CCP2, además de resetear el TMR1 se lanza una nueva conversión A/D (si elmódulo de conversión A/D está activo) permitiendo programar la conversión A/D a periodos detiempo fijos.

• FUNCIONAMIENTO EN MODO DORMIDO: Al no funcionar el TMR1 (modo síncrono) en mododormido, el módulo CCP en modo comparación no funciona. El pin CCPx tendrá el valor quetenía antes de entrar en modo SLEEP y “despertará” con ese valor.

• TRAS UN RESET: El módulo CCP está apagado.

 

Page 9: Modulo CCP

5/17/2018 Modulo CCP - slidepdf.com

http://slidepdf.com/reader/full/modulo-ccp 9/20

PICmicro GAMA MEDIA: PIC16F87X 

Modulo de CCP: MODO PWM• En modo PWM (MODULACIÓN DE ANCHO DE PULSO - Pulse Width Modulation), el objetivo es

obtener a través de alguna de las patillas CCPx una forma de onda como la mostrada en lafigura donde tanto el periodo como el ciclo de trabajo (Duty cycle) puede variar con el objetivo,

por ejemplo, de regular la velocidad de un motor, la luminosidad de una bombilla, etc.

9

• El periodo de la señal viene fijado por la configuración de TMR2 y por el contenido del registroPR2 (0x92). Este registro de 8 bits contiene los 8 bits más significativos de una cuenta de 10bits.

• El ciclo de trabajo o ciclo útil (duty cycle) viene definido por el contenido del valor delregistro CCPRxL junto con los bits CCP1CON<5:4> antes de comenzar un nuevo periodo.

• El temporizador base con el que se compara el contenido de estos registros es el TMR2.

 

Page 10: Modulo CCP

5/17/2018 Modulo CCP - slidepdf.com

http://slidepdf.com/reader/full/modulo-ccp 10/20

PICmicro GAMA MEDIA: PIC16F87X 

Modulo de CCP: MODO PWM• PERIODO DE LA ONDA PWM. Se calcula utilizando la siguiente fórmula:

T = (PR2 + 1) ·( 4 / TOSC )· PRESCALER  TMR2

– Cuando TMR2 es igual a PR2, en el siguiente incremento de ciclo se producen tres acciones:• El TMR2 se resetea.• El pin CCPx se pone a 1. Salvo si el ciclo de trabajo esta fijado a 0 donde el pin CCPx

no se pondrá a 1 nunca (el biestable RS es de borrado prioritario).

10

• nuevo c c o e tra a o es carga o es e e reg stro x a reg stro x quees el que realmente se compara con el TMR2 para fijar el ciclo ce trabajo.

 

Page 11: Modulo CCP

5/17/2018 Modulo CCP - slidepdf.com

http://slidepdf.com/reader/full/modulo-ccp 11/20

PICmicro GAMA MEDIA: PIC16F87X 

Modulo de CCP: MODO PWM• CICLO DE TRABAJO DE LA ONDA PWM: El ciclo de trabajo viene definido por el valor que se

carga en el registro CCPR1L (8bits más significativos) junto con los bits CCP1CON<5:4> (2 bitsmenos significativos). Por tanto se consigue una resolución de 10 bits (DCxB9:DCxB0). La

siguiente ecuación se utiliza para calcular el ciclo de trabajo (duty cycle) de la onda PWM:D = (CCPRxL:CCPxCON<5:4>) · TOSC · PRESCALER  TMR2

• Los registros CCPR1L y los bits CCP1CON<5:4> pueden escribirse en cualquier instante detiempo, pero no se cargan en CCPR1H y por tanto, no tiene efecto, hasta que finalice el periodo

11

e a on a actua .

• Cuando TMR2 (+ 2 bits) se iguala a CCPxH (+ 2 bits), CCPx→ 0.

• Si el ciclo de trabajo de la onda PWM es mayor que el periodo, la señal que sale por la patilla

CCPx está siempre a 1.

 

Page 12: Modulo CCP

5/17/2018 Modulo CCP - slidepdf.com

http://slidepdf.com/reader/full/modulo-ccp 12/20

PICmicro GAMA MEDIA: PIC16F87X 

Modulo de CCP: COMPILADOR CCSConfiguración del módulo CCP

setup_ccp1 (modo); setup_ccp2 (modo);modo: CCP_OFF (CCPxCON→ 00h)

CCP_CAPTURE_FE (CCPxCON → 04h)CCP_CAPTURE_RE (CCPxCON → 05h)CCP_CAPTURE_DIV_4 (CCPxCON → 06h)CCP_CAPTURE_DIV_16 (CCPxCON → 07h)

 

12

CCP_COMPARE_SET_ON_MATCH (CCPxCON → 08h)CCP_COMPARE_CLR_ON_MATCH (CCPxCON → 09h)CCP_COMPARE_INT (CCPxCON → 0Ah)CCP_COMPARE_RESET_TIMER (CCPxCON → 0Bh)CCP_PWM (CCPxCON → 0Ch)

CCP_PWM_PLUS_1 (CCPxCON → 1Ch)CCP_PWM_PLUS_2 (CCPxCON → 2Ch)CCP_PWM_PLUS_3 (CCPxCON → 3Ch)

 

Page 13: Modulo CCP

5/17/2018 Modulo CCP - slidepdf.com

http://slidepdf.com/reader/full/modulo-ccp 13/20

PICmicro GAMA MEDIA: PIC16F87X 

Modulo de CCP: COMPILADOR CCS

Definición del ciclo de trabajo en modo PWM

set_pwm1_ duty (valor); set_pwm2_ duty (valor);valor: Dato (8 ó 16 bits) que fija el DUTY CLICLE de la PWM.

13

 Variables definidas en 16F876.hlong CCP_1; long CCP_2;#byte CCP_1 = 0x15 #byte CCP_2 = 0x1B#byte CCP_1_LOW = 0x15 #byte CCP_2_LOW = 0x1B#byte CCP_1_HIGH = 0x16 #byte CCP_2_HIGH = 0x1C

 

Page 14: Modulo CCP

5/17/2018 Modulo CCP - slidepdf.com

http://slidepdf.com/reader/full/modulo-ccp 14/20

PICmicro GAMA MEDIA: PIC16F87X 

Modulo de CCP: COMPILADOR CCS

Configuración del pin CCPy como entrada/salida

set_tris_C (valor);valor: Entero de 8 bits, cada uno de los cuales representa la la configuración de un pin del

puerto. (“1” → E / “0” → S)Configuración del temporizador TMR1

setup_timer_1 (modo);modo: T1_DISABLED (T1CON → 00h)

 

14

 _  →

T1_EXTERNAL (T1CON → 87h)T1_EXTERNAL_SYNC (T1CON → 83h)T1_CLK_OUT (T1CON → 08h)T1_DIV_BY_1 (T1CON → 00h)

T1_DIV_BY_2 (T1CON → 10h)T1_DIV_BY_4 (T1CON → 20h)T1_DIV_BY_8 (T1CON → 30h)Se pueden agrupar constantes de distintos grupos con |.

 

Page 15: Modulo CCP

5/17/2018 Modulo CCP - slidepdf.com

http://slidepdf.com/reader/full/modulo-ccp 15/20

PICmicro GAMA MEDIA: PIC16F87X 

Modulo de CCP: COMPILADOR CCS

Configuración del temporizador TMR2

setup_timer_2 (modo,periodo,postscaler);modo: T2_DISABLED (T2CON → 00h)

T2_DIV_BY_1 (T2CON → 04h)T2_DIV_BY_4 (T2CON → 05h)T2_DIV_BY_16 (T2CON → 06h)

periodo: PR2→ periodo 

15

postscaler: Número de overflows necesarios para generar una interrupción. Es un valor entre 1y 16 (para uso con los módulos CCP se toma un postscaler de 1).

 

Page 16: Modulo CCP

5/17/2018 Modulo CCP - slidepdf.com

http://slidepdf.com/reader/full/modulo-ccp 16/20

PICmicro GAMA MEDIA: PIC16F87X 

Ejemplo: Modo Captura– Medir el ancho de un pulso mediante el TIMER1 y el modo CAPTURA del CCP.

• El TIMER1 es un contador de 16 bits que se incrementa cada 4 ciclos de

Reloj (FOSC *4). A este tiempo le vamos a llamar PASO de TIMER1. Si elcristal de cuarzo es de 4 Mhz, entonces 1µs se produce un PASO de TIMER1.

• Un ciclo completo del TIMER1, desde 0x0000 hasta 0xEFFF (65536 pasos),ocu a un tiem o total de 1 s * 65.536 = 65 536ms.

16

• Podemos fijar un tipo de flanco a detectar y escribir un cierto código paraejecutarlo cuando ese tipo de flanco, subida o bajada, es detectado. En estecódigo escrito para tratar la interrupción del CCP podemos mantener ocambiar el flanco a detectar, cambiándolo del de Subida al de Bajada oviceversa y leer o escribir el valor de TIMER1 que en ese momento tiene elcontador.

  

Page 17: Modulo CCP

5/17/2018 Modulo CCP - slidepdf.com

http://slidepdf.com/reader/full/modulo-ccp 17/20

PICmicro GAMA MEDIA: PIC16F87X 

Ejemplo: Modo Captura

OSC1/CLKIN9

OSC2/CLKOUT10

23RB1

22RB0/INT

21

1

U1     D    7

    1    4

     D    6

    1    3

     D    5

    1    2

     D    4

    1    1

     D    3

    1    0

     D    2

    9

     D    1

    8

     D    0

    7

     E

    6

     R     W

    5

     R     S

    4

     V     S     S

    1

     V     D     D

    2

     V     E     E

    3

LCD2LM016L

U1(RC2/CCP1)

17

RA0/AN02

RA1/AN13

RA2/AN2/VREF-4

RA4/T0CKI6

RA5/AN4/SS7

RC1/T1OSI/CCP212

RC2/CCP113

RC3/SCK/SCL14

RB7/PGD28

RB6/PGC27

RB526

RB4 25

RB3/PGM24

RC7/RX/DT18

RC6/TX/CK17

RC5/SDO 16

RC4/SDI/SDA15

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI11

pp

PIC16F876

Simular y

Montar

 

Page 18: Modulo CCP

5/17/2018 Modulo CCP - slidepdf.com

http://slidepdf.com/reader/full/modulo-ccp 18/20

PICmicro GAMA MEDIA: PIC16F87X 

Ejemplo: Modo Comparación, generador de onda cuadrada.• Generar un pulso de Periodo T con dos semiperiodos iguales, simétrico, y de unos 2 Khz de

frecuencia: unos 0.25 ms en alto y otros 0.25 ms en bajo, total 0.5 ms de periodo.

– Utilizar el CCP en modo Compare para que el CCP vaya comparando automáticamente elvalor de TMR1 con un valor de referencia que le damos, CCP_x, y en cuanto lo alcance serealice la conmutación del Pin asociado a él y nos dispare la Petición de Servicio deInterrupción (ISR) INT_CCPx correspondiente.

– En el código de esta interrupción volvemos a hacer lo mismo pero configurando elCompare para que cuando TMR1 alcance el valor de referencia conmute nuestro Pin CCP

18

– Si ambos valores de TMR1 de referencia, para el Compare a Alto y el Compare a bajo, soniguales tendremos un tren de pulsos simétricos, están el mismo tiempo en alto que enbajo, o sea que tienen un Duty Cycle del 50%. En caso contrario estarán mas tiempo enun estado que en otro y será una onda asimétrica, o sea que tendrá un Duty Cicle distintodel 50%.

Calculando cuidadosamente dichos tiempos podremos generar una onda del periodo quedeseamos. Pondremos a 0 siempre TRM1 y cargaremos CCP_x con el número de PASOSde TMR1 en que deseamos que se dispare nuestra conmutación/interrupción.

 

Page 19: Modulo CCP

5/17/2018 Modulo CCP - slidepdf.com

http://slidepdf.com/reader/full/modulo-ccp 19/20

PICmicro GAMA MEDIA: PIC16F87X 

Ejemplo: Modo Comparación-PWM• Mediante la configuración del módulo CCP lanzar una conversión AD, automática cada 1ms. Con

el valor obtenido se realizará una conversión DA utilizando el PWM y un filtro paso-bajo.

– Mediante los bit 3-0 CCPxM3:CCPxM0 (Bits de selección del modo CCP) se puede

configurar Modo de comparación: CCP2 resetea TMR1 y lanza una conversión A/D.– Cargando el CCP2 con el valor adecuado se consigue que, cuando coincida con el valor

de TMR1, se produzca una conversión AD (si está habilitada).

19

proporcional ha este valor.– Si dicha señal es filtrada con un filtro paso bajo se obtiene una continua proporcional al

valor de la conversión.

– Como aplicación se puede aplicar esta señal a una barra de leds y obtener una señal

luminosa proporcional a la señal adquirida.

 

Page 20: Modulo CCP

5/17/2018 Modulo CCP - slidepdf.com

http://slidepdf.com/reader/full/modulo-ccp 20/20

PICmicro GAMA MEDIA: PIC16F87X 

Ejemplo: Modo Comparación-PWM

     V   +

    3

1010

911

812

SIG5

VRO7

U1

BAT110

1

2

3

20

19

18

U2

BAT35

RV2

1k

A

B

R310k

C1

RV2(3)

C1(1)

20

     V  -

    2

7

614

5 15

416

317

218

11

ADJ8

RHI

RLO4

MODE9

LM3914R11k

R22.7k

5

67

8

16

1514

13

9

10

12

11

LED-BARGRAPH-GRN

RA0/AN02

RA1/AN13

RA2/AN2/VREF-4

RA4/T0CKI6

RA5/AN4/SS7

OSC1/CLKIN9

OSC2/CLKOUT10

RC1/T1OSI/CCP212

RC2/CCP113

RC3/SCK/SCL14

RB7/PGD28

RB6/PGC27

RB526

RB425

RB3/PGM24

RB223

RB122

RB0/INT 21

RC7/RX/DT18

RC6/TX/CK17

RC5/SDO16

RC4/SDI/SDA15

RA3/AN3/VREF+5

RC0/T1OSO/T1CKI11

MCLR/Vpp/THV1

U3

PIC16F876

1uF

Simular en ISIS