47
MÓDULOS CCP

Módulos ccp pic 16f887

Embed Size (px)

DESCRIPTION

microcontrolador pic 16f887.ccp

Citation preview

Page 1: Módulos ccp pic 16f887

MÓDULOS CCP

Page 2: Módulos ccp pic 16f887

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.

CCP :(Captura/Comparación/PWM)

Page 3: Módulos ccp pic 16f887

TIMERS USADOS POR CCP

Page 4: Módulos ccp pic 16f887

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 CCP : FORMADO POR MÓDULOS CCP1 y CCP2.

Page 5: Módulos ccp pic 16f887

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)

MÓDULO CCP1

- - - - - - - - - - - - - - - -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

Page 6: Módulos ccp pic 16f887

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.

CCP1 EN MODO DE CAPTURA

Page 7: Módulos ccp pic 16f887

MODO CAPTURA CCP1

Page 8: Módulos ccp pic 16f887

• 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.

Requisitos para captura CCP:

Page 9: Módulos ccp pic 16f887

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.

CCP1CON

0 0 PWM con una sóla salida

0 1Configuración Full Bridge - Forward(puente completo con salida directa)

1 0 Configuración Half Bridge (medio-puente)

1 1Configuración Full Bridge - Reverse(puente completo con salida inversa)

Page 10: Módulos ccp pic 16f887
Page 11: Módulos ccp pic 16f887

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

Page 12: Módulos ccp pic 16f887

CCP1M3 - CCP1M0 - (bits de selección de modo del módulo CCP1) determina el modo del módulo CCP1

CCP1CON

Page 13: Módulos ccp pic 16f887

Registros asociados con captura, comparación y timer1

Page 14: Módulos ccp pic 16f887
Page 15: Módulos ccp pic 16f887

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.

Page 16: Módulos ccp pic 16f887

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.

Ejemplo:

Page 17: Módulos ccp pic 16f887

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

movlw b'00000001'

movwf T1CON

TMR1

Page 18: Módulos ccp pic 16f887

; Se configura CCP modo captura cada flanco de subida.-

movlw b'00000101‘

movwf CCP1CON

CCP MODO CAPTURA

Page 19: Módulos ccp pic 16f887

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)

Tosc

Page 20: Módulos ccp pic 16f887

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

Page 21: Módulos ccp pic 16f887

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

Page 22: Módulos ccp pic 16f887

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 ;

Page 23: Módulos ccp pic 16f887

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

Page 24: Módulos ccp pic 16f887

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.

CCP1 EN MODO DE COMPARACIÓN

Page 25: Módulos ccp pic 16f887

Diagrama de Bloques CCP en comparación

Page 26: Módulos ccp pic 16f887

• 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.

Special trigger event

Page 27: Módulos ccp pic 16f887

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.

Nota:

Page 28: Módulos ccp pic 16f887

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)

SPECIAL EVENT TRIGGER

Page 29: Módulos ccp pic 16f887
Page 30: Módulos ccp pic 16f887

1. El pin RC2/CCP1 debe estar configurado como salida; y

2. El temporizador Timer1 debe estar sincronizado con el reloj interno.

Para poner el módulo CCP1 en este modo de funcionamiento, se deben cumplir dos condiciones:

Page 31: Módulos ccp pic 16f887

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.

EJEMPLO

Page 32: Módulos ccp pic 16f887

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

Page 33: Módulos ccp pic 16f887

;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

Page 34: Módulos ccp pic 16f887

; 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 bcfSTATUS,RP0 ;Selecciona banco 0

Page 35: Módulos ccp pic 16f887

;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

Page 36: Módulos ccp pic 16f887

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

end

Page 37: Módulos ccp pic 16f887

RE3/MCLR/VPP1

RA1/AN1/C12IN1-3

RA2/AN2/VREF-/CVREF/C2IN+4

RA4/T0CKI/C1OUT6

RA5/AN4/SS/C2OUT7

RB0/AN12/INT33

RB1/AN10/C12IN3-34

RB2/AN835

RA7/OSC1/CLKIN13

RA6/OSC2/CLKOUT14

RD5/P1B28

RD6/P1C29

RD7/P1D30

RC4/SDI/SDA23

RC5/SDO24

RC3/SCK/SCL18

RC2/P1A/CCP117

RC1/T1OSI/CCP216

RC0/T1OSO/T1CKI15

RB7/ICSPDAT40

RB6/ICSPCLK39

RB5/AN13/T1G38

RB4/AN1137

RD322

RD221

RD120

RD019

RC7/RX/DT26

RC6/TX/CK25

RE2/AN710

RE1/AN69

RE0/AN58

RA3/AN3/VREF+/C1IN+5

RD427

RB3/AN9/PGM/C12IN2-36

RA0/AN0/ULPWU/C12IN0-2

U1

PIC16F887

R110k

R2

330RR3

330RR4

330RR5

330RR6

330RR7

330RR8

330R

D1

LED-RED

D2

LED-RED

D3

LED-RED

D4

LED-RED

D5

LED-RED

D6

LED-RED

D7

LED-RED

R9

330R

D8

LED-YELLOW

SW1

SW-SPST

Page 38: Módulos ccp pic 16f887

CCP1 EN MODO PWM

Page 39: Módulos ccp pic 16f887

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

Modo PWM

Page 40: Módulos ccp pic 16f887

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).

PWM

Page 41: Módulos ccp pic 16f887

La tensión media aplicada es proporcional al Ton, controlando así: velocidad de motores, luminosidad de lámparas, etc.

Page 42: Módulos ccp pic 16f887

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.

Page 43: Módulos ccp pic 16f887
Page 44: Módulos ccp pic 16f887

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.

Page 45: Módulos ccp pic 16f887

Para calcular el período de la señal PWM se utiliza la ecuación:

Tpwm = (PR2+1).4 .(Valor PreescalerTMR2)

fosc

Page 46: Módulos ccp pic 16f887

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)

Page 47: Módulos ccp pic 16f887