Está en la página 1de 35

IUT Cuman

(CAPTURA/COMPARACIN/PWM)
PARA QU PUEDEN SERVIR?

MDULO CCP

MICROCONTROLADORES II

Prof. Luis Zurita

(PIC16F84) CAUSAS DE INTERRUPCIN


1. 2. 3. 4. Activacin del pin RB0/INT Desbordamiento del TMR0 Cambio de estado de una de los 4 pines de ms peso (RB7:RB4) del puerto B Finalizacin de la escritura en la EEPROM de datos

IUT Cuman

REGISTRO INTCON

MICROCONTROLADORES II

Prof. Luis Zurita

INTERRUCCIONES PIC16F87X CLSICAS PIC16F84 NUEVAS

IUT Cuman

GIE PEIE TOIE INTE RBIE TOIF INTF RBIF

PIE1
PSPIE ADIE RCIE TXIE SSPIE CCP1IE

PIR1
TMR2IE TMR1IE

PIE2
--0 --EEIE BCLIE --

PIR2
-CCP2IE

MICROCONTROLADORES II

Prof. Luis Zurita

TIMER 1

IUT Cuman

Caractersticas bsicas: 1. Es de 16 bits. 2. Puede actuar como temporizador o como contador bit (TMR1CS). 3. Se puede leer y escribir en los registros TMR1H, TMR1L. 4. Puede pararse o habilitarse mediante el bit TMR1ON. 5. Tiene un pre-divisor programable por software. 6. El oscilador de bajo consumo est situado entre los pines T1OSI (entrada) y T1OSO (salida).

MICROCONTROLADORES II

Prof. Luis Zurita

TIMER 1
7.

IUT Cuman

Al desbordase (FFFFh -> 0000h) produce la interrupcin TMR1: El bit de interrupcin del timer1 es TMR1IF [Registro PIR1(0)]. Puede deshabilitarse mediante TMR1IE [Registro PIE1(0)]. 8. La frecuencia de oscilacin mx. es 200kHz. No se apaga durante SLEEP. 9. Monitorea tiempo entre transiciones de una seal en pin de entrada. 10. Controla con precisin el tiempo de transicin de pin de salida. 11. Sirve para contar eventos externos y generar interrupciones cuando ha ocurrido un nmero deseado.
MICROCONTROLADORES II Prof. Luis Zurita

DIAGRAMA DE BLOQUE TIMER 1

IUT Cuman

MICROCONTROLADORES II

Prof. Luis Zurita

IUT Cuman

REGISTROS ASOCIADOS AL TIMER 1


TMR1H = Parte alta del TIMER 1 (L/E) TMR1L = Parte baja del TIMER 1 (L/E) T1CON = Registro de control del TIMER 1 INTCON = Control de Interrupciones PIE1 = Control de Interrupciones de Perifricos PIR1 = Sealizadores de Interrupciones TRISC = Registro de configuracin PortC PORTC= Registro de 8 bits.

MICROCONTROLADORES II

Prof. Luis Zurita

IUT Cuman

T1CON
Bit 7-6: No implementados: Se lee como 0 Bit 5-4: TlCKPS1:T1CKPS0: bit de seleccin del preescaler de la seal de reloj delTIMER1: 11 = valor del preescaler 1:8 10 = valor del preescaler 1:4 01 = valor del preescaler 1:2 00 = valor del preescaler 1: 1 Bit 3: T1OSCEN: bit de habilitacin del oscilador del TIMER1. Cuando se emplea un oscilador externo, hay que poner este bit a 1. El TMR1 puede trabajar a una frecuencia totalmente independiente de la del sistema. 1 = Habilita el oscilador 0 = Deshabilita el oscilador Nota: El oscilador y la resistencia se desconectan para reducir el consumo Bit 2: #TlSYNC: bit de control de sincronizacin de la seal de entrada. Con TMR1CS = 1 1= No sincroniza la entrada de reloj externa 0 = Sincroniza la entrada de reloj externa Con TMR1CS = 0 En esta condicin se ignora. El TIMER1 utiliza el reloj interno cuando TMRICS=0 Bit 1 TMR1CS: bit de seleccin de la fuente de reloj del TIMER1 1 = Reloj externo por el pin RC0/T1OSO/T1CK1 (flanco ascendente) 0 = Reloj interno (FOSC/4) Bit 0: TMR1ON: TIMER1 activo. Hace entrar o no en funcionamiento el TIMER1. 1 = Habilita el TIMER1
0 = Deshabilita el TIMER1

Prof. Luis Zurita

EJEMPLOS TIMER 1
Configure al TIMER 1 para: a) Trabaje con la fuente de reloj interna, con un prescaler de 4. b) Trabaje como contador, con un oscilador de 100 KHz

IUT Cuman

MICROCONTROLADORES II

Prof. Luis Zurita

CLCULOS PARA EL TIMER 1

IUT Cuman

Temporizacin= 4 * TOSC * (Valor Real TMR1)* Rango del predivisor. Valor Real TMR1= (65536 (TMR1H:TMR1L)) (TMR1H:TMR1L) = Valor a cargar en el TIMER1 Ejercicio: Cul es el mximo valor de temporizacin que se puede alcanzar con el TIMER 1?
MICROCONTROLADORES II Prof. Luis Zurita

IUT Cuman

Realice un programa para que se genere una interrupcin cada 0,5 segundos, utilizando un XT.
INICIO RSI

Configurar TIMER 1

Deshabilitar GIE

Cargar TIMER 1

Limpiar sealizador

Habilitar TIMER 1

Habilitar GIE

SLEEP

RETFIE

FIN

MICROCONTROLADORES II

Prof. Luis Zurita

RECOMENDACIONES TIMER 1
Cuando se realizan medidas en tiempo real del TIMER 1, se recomienda comprobar que el byte alto, no haya cambiado: movf TMR1H,W movwf RESPH movf TMR1L,W movwf RESPL movwf TMR1H,W subwf RESPH,W btfsc STATUS,Z goto CONTINUA goto OTRA_LECTURA

IUT Cuman

MICROCONTROLADORES II

Prof. Luis Zurita

TIMER 2

IUT Cuman

Caractersticas bsicas: 1. Es de 8 bits. 2. Se puede leer y escribir en los registros TMR2. 3. Puede pararse o habilitarse mediante el bit TMR2ON. 4. Tiene un pre-divisor y un post-divisor programable por software 5. Slo tiene modo temporizador. 6. Posee un registro (PR2) que ajusta el momento de desborde. 7. PR2(Registro de 8 bits) que puede leerse y escribirse PR2 con el cual compara su valor: 8. Maneja el perodo de una seal PWM
MICROCONTROLADORES II

Si los valores de TMR2 y PR2 se igualan, TMR2 pasa a cero.

Prof. Luis Zurita

TIMER 2
9. Al igualarse TMR2 y PR2 se produce la interrupcin TMR2:
1. El bit de interrupcin del timer2 es TMR2IF (Registro PIR1(1)). 2. Hay un post-divisor a la salida del comparador.

IUT Cuman

10. Los registros de pre-divisor y post-divisor se limpian al:


1. Escribir en TMR2. 2. Escribir en el registro T2CON. 3. Cualquier tipo de RESET.

11. TMR2 no se limpia al escribir en T2CON.


MICROCONTROLADORES II Prof. Luis Zurita

REGISTROS ASOCIADOS AL TIMER2


TMR2 = Registro de 8 bits. (L/E) T2CON = Registro de control del TIMER 2 PR2 = Registro de ajuste del desborde INTCON = Control de Interrupciones PIE1 = Control de Interrupciones de Perifricos PIR1 = Sealizadores de Interrupciones

IUT Cuman

MICROCONTROLADORES II

Prof. Luis Zurita

DIAGRAMA DE BLOQUE DEL TIMER 2

IUT Cuman

MICROCONTROLADORES II

Prof. Luis Zurita

T2CON
Bit 7: No implementado: Se lee como 0 Bit 6-3:TOUTPS3:TOUTPS0: bit de seleccin del rango del divisor del Postescaler para el TIMER2: 0000 Divisor del postescaler 1:1 0001 Divisor del postescaler 1:2 0010 Divisor del postescaler 1:3 0011 Divisor del postescaler 1:4 0100 Divisor del postescaler 1:5 0101 Divisor del postescaler 1:6 0110 Divisor del postescaler 1:7 0111 Divisor del postescaler 1:8 1000 Divisor del postescaler 1:9 1001 Divisor del postescaler 1:10 1010 Divisor del postescaler 1:11 1011 Divisor del postescaler 1:12 1100 Divisor del postescaler 1:13 1101 Divisor del postescaler 1:14 1110 Divisor del postescaler 1:15 1111 Divisor del postescaler 1:16 Bit 2: TMR2ON: bit de activacin del TIMER2 1 = habilita el funcionamiento del TIMER2 0 = Inhibe el funcionamiento del TIMER2 Bit 1-0:T2CKPS1:T2CKPS0 Seleccin del rango de divisor del Preescaler del TIMER 2 0 0 Divisor del Preescaler 1:1 0 1 Divisor del Preescaler 1:4 1 X Divisor del Preescaler 1:16

IUT Cuman

MICROCONTROLADORES II

Prof. Luis Zurita

EJEMPLOS TIMER 2
Configure al TIMER 2 para: a) Trabaje con un prescaler de 16 y un postcaler de 12

IUT Cuman

b) Trabaje con un prescaler de 8 y un postcaler de 1

MICROCONTROLADORES II

Prof. Luis Zurita

CLCULOS TIMER2

IUT Cuman

Temporizacin= 4 * TOSC * Valor PR2 * Rango del prescaler Timer2 * Rango del postcaler Timer2 Ejercicio Determine, cuanto tarda en desbordarse el TMR2, si se utiliza un XT, con un prescaler = 4 y un postcaler = 10, considerando que PR2 = D200. Cargue el TMR2 con 00H

MICROCONTROLADORES II

Prof. Luis Zurita

MODO CAPTURA

IUT Cuman

En este modo CCP1 y CCP2 funcionan de forma idntica. (En los nombres de registros a continuacin x=1,2) En este modo la pareja de registros CCPRxH:CCPRxL captura el valor de 16 bits que contiene TMR1 cuando sucede un evento en la pata RCy/CCPx del PORTC (estos pines deben configurarse como entradas con un 1 en TRISC). Los eventos son los configurados en CCPxM3:CCPxM0 del registro de control CCPxCON, para el modo Captura. Al realizar la captura se activa el bit de interrupcin CCPxIF y si la interrupcin est habilitada mediante CCPxIE, se genera una interrupcin al cargar el CCPRxH:CCPRxL con TMR1. TMR1 en este modo debe estar configurado como temporizador o contador sncrono, nunca en modo asncrono. Al cambiar la condiciones de funcionamiento dentro del modo captura conviene desactivar el mdulo primero.

MICROCONTROLADORES II

Prof. Luis Zurita

FLUJOGRAMA CCP1 CAPTURA

IUT Cuman

MICROCONTROLADORES II

Prof. Luis Zurita

MODO COMPARACIN

IUT Cuman

Los registros CCPRxH:CCPRxL comparan su valor de forma continua con el valor de TMR1. Cuando coinciden el pin RCy/CCPx del PORTC (configurado como salida) sufre un evento. Los eventos son los configurados en CCPxM3:CCPxM0 del registro de control CCPxCON para el modo Comparacin. Al coincidir CCPRxH:CCPRxL y TMR1 se activa el bit de interrupcin CCPxIF y si la interrupcin est habilitada mediante CCPxIE, se genera un interrupcin. TMR1 en este modo debe estar configurado como temporizador o contador sncrono, nunca en modo asncrono. Si se ha seleccionado el modo disparo especial, el mdulo CCP1 y CCP2 realizan tareas distintas. El CCP1 pone a 0 el TMR1 y el CCPR1 funciona como un Registro de Perodo capaz de generar peridicamente interrupciones. El CCP2 pone a 0 el TMR1 y adems inicia una conversin del A/D, con lo que se pueden realizar conversiones peridicas. Aunque TMR1=0 no se genera interrupcin del timer1.
MICROCONTROLADORES II Prof. Luis Zurita

FLUJOGRAMA CCP1 COMPARACIN

IUT Cuman

MICROCONTROLADORES II

Prof. Luis Zurita

MODO PWM

IUT Cuman

Con este modo se consiguen impulsos, cuya anchura de nivel alto es de duracin variable y sirven para control de motores y generacin de seales. Se utiliza un mdulo CCP, el timer2 y un pin RCy/CCPx de salida. El comparador entre el valor PR2 y TMR2 cuando detecta la igualdad: 1. Activa 1 el flip-flop de salida. 2. Resetea TMR2. 3. El valor de CCPRxL se carga en CCPRxH. El periodo de la seal se calcula como: Periodo=[(PR2)+1]*4*Tosc*(Valor predivisor TMR2) Se comparan los valores de 10 bits ([CCPRxH:CCP1CON(5:4)]) y TMR2 concatenados con los dos bits de menor peso del reloj interno) cuando son iguales: 1. Desactiva 0 el flip-flop de salida. 2. No resetea TMR2 El ciclo activo es: Ancho pulso=(CCPRxL:CCP1CON(5:4))*Tosc*(V. predivisor TMR2)

MICROCONTROLADORES II

Prof. Luis Zurita

FLUJOGRAMA PWM

IUT Cuman

MICROCONTROLADORES II

Prof. Luis Zurita

SEAL PWM

IUT Cuman

Periodo=[(PR2)+1]*4*Tosc*(Valor predivisor TMR2) Duty Cycle=(CCPRxL:CCP1CON(5:4))*Tosc*(V. predivisor TMR2)

MICROCONTROLADORES II

Prof. Luis Zurita

SEAL PWM

IUT Cuman

MICROCONTROLADORES II

Prof. Luis Zurita

Modo PWM
Pasos para configurar el PWM: 1. Asignar PR2. 2. Asignar CCPRxL y CCPxCON(5:4). 3. Configurar RCy/CCPx de salida. 4. Asignar Pre-divisor en T2CON. 5. Activar TMR2 en T2CON. 6. Configurar CCPx en modo PWM.
MICROCONTROLADORES II

IUT Cuman

Prof. Luis Zurita

CCP1CON
U-0 --Bit 7 U-0 R/W-0 CCP1X R/W-0 CCP1Y R/W-0 CCP1M3 R/W-0 R/W-0 R/W-0 CCP1M2 CCP1M1

IUT Cuman

CCP1M0 Bit 0

Bit 7-6: No implementados: Se lee como "0" Bit 5-4: CCP1X: CCP1Y: bit menos significativos de PWM Modo Captura sin usar Modo Comparacin sin usar Modo PWM: Estos dos bit son los menos significativos del ciclo de PWM. Los ocho bits ms significativos se encuentran en CCPR1L. Bit 3-0: CCP1M3-.CCP1M0; bit de seleccin del modo de trabajo del mdulo comparador CCP1.

MICROCONTROLADORES II

Prof. Luis Zurita

CCP1CON

IUT Cuman

MICROCONTROLADORES II

Prof. Luis Zurita

TABLAS MDULO CCP


Modo CCP Captura Comparacin PWM Recurso de Timer Timer1 Timer1 Timer2

IUT Cuman

MICROCONTROLADORES II

Prof. Luis Zurita

EJERCICIOS CCP
Zona de Configuracin

IUT Cuman

Se configuran los bancos Se configura el mdulo CCP Se configuran las Interrupciones (opcional) Se regresa al Banco 0
(Tratamiento de la informacin)

Resto del programa

Captura: Medir perodo, Ton, Toff Comparacin: Setpoint 16 bits PWM: Genera seal Captura: Comparaciones Y acciones Comparacin:
Accin sobre RCx

PWM: En base a accin Generar Seal


Prof. Luis Zurita

MICROCONTROLADORES II

EJERCICIO CCP1 COMPARACIN

IUT Cuman

Configure el Mdulo CCP en modo Comparacin, donde: El TMR1 est configurado para contar pulsos externos, con un prescaler 1:1, flanco ascendente. Se debe cargar CCPR1L con la constante Ncompar, y producir una interrupcin cada vez que se alcanza el valor fijado. Al ocurrir esto, RB0 cambia de estado. RC2, no debe modificar su valor.
MICROCONTROLADORES II Prof. Luis Zurita

EJERCICIO CCP1 CAPTURA

IUT Cuman

Realice la medicin de la duracin de un pulso. Emplear el mdulo CCP1 y capturar el valor del TMR1 cada vez que llegue un flanco ascendente y otro descendente por la lnea RC2/CCP1. Conocida la velocidad a la que evoluciona el TMR1, se puede determinar la duracin del tiempo transcurrido entre ambos flancos, lo que nos dar la anchura del pulso. Configure al Timer1 con reloj interno y prescaler 1:1, para obtener medida mxima de perodo= 65,536 ms. Cambie la orden de captura de ascendente a descendente al ocurrir la primera captura. (Dentro de la RSI).

MICROCONTROLADORES II

Prof. Luis Zurita

EJERCICIO PWM

IUT Cuman

Generar una seal de onda cuadrada por la lnea RC2/CCP1 cuyo periodo puede ser modificado as como la anchura del pulso (Duty Cycle). Utilice las siguientes frmulas
(Perodo) T=(PR2+1)*4*Tosc*TMR2 preescaler. (Duty Cycle)= (DC)=(CCPR1L:CCPCON1<5:4>)*Tosc*TMR2 preescaler.

La seal de salida tiene un periodo determinado por la constante "Periodo" y una anchura "Duty Cycle determinada por la constante "Duty"

MICROCONTROLADORES II

Prof. Luis Zurita

También podría gustarte