MÓDULO CCP (CAPTURA/COMPARACIÓN/PWM) IUT Cumaná Prof. Luis Zurita MICROCONTROLADORES II ¿PARA QUÉ PUEDEN SERVIR?
MÓDULO CCP(CAPTURA/COMPARACIÓN/PWM)
IUT Cumaná
Prof. Luis Zurita
MICROCONTROLADORES II
¿PARA QUÉ PUEDEN SERVIR?
(PIC16F84) CAUSAS DE INTERRUPCIÓN
1. Activación del pin RB0/INT2. Desbordamiento del TMR03. Cambio de estado de una de los 4 pines de más peso
(RB7:RB4) del puerto B4. Finalización de la escritura en la EEPROM de datos
REGISTRO INTCON
IUT Cumaná
Prof. Luis ZuritaMICROCONTROLADORES II
IUT Cumaná
Prof. Luis Zurita
MICROCONTROLADORES II
INTERRUCCIONES PIC16F87X
CLÁSICAS PIC16F84 NUEVAS
GIE PEIE TOIE INTE RBIE TOIF INTF RBIF
PSPIE
ADIE RCIE TXIE SSPIE CCP1IE TMR2IE TMR1IE
PIE1
PIE2
--- 0 --- EEIE BCLIE -- -- CCP2IE
PIR1
PIR2
TIMER 1
Características básicas: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).
IUT Cumaná
Prof. Luis Zurita
MICROCONTROLADORES II
TIMER 17. Al desbordase (FFFFh -> 0000h) produce la
interrupción TMR1:• El bit de interrupción del timer1 es TMR1IF
[Registro PIR1(0)].• Puede deshabilitarse mediante TMR1IE
[Registro PIE1(0)].8. La frecuencia de oscilación máx. es 200kHz. No se
apaga durante SLEEP.9. Monitorea tiempo entre transiciones de una señal
en pin de entrada.10. Controla con precisión el tiempo de transición de
pin de salida.11. Sirve para contar eventos externos y generar
interrupciones cuando ha ocurrido un número deseado.
IUT Cumaná
Prof. Luis Zurita
MICROCONTROLADORES II
DIAGRAMA DE BLOQUE TIMER 1
IUT Cumaná
Prof. Luis Zurita
MICROCONTROLADORES II
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
Periféricos• PIR1 = Señalizadores de Interrupciones• TRISC = Registro de configuración PortC• PORTC= Registro de 8 bits.
IUT Cumaná
Prof. Luis Zurita
MICROCONTROLADORES II
T1CON• Bit 7-6: No implementados: Se lee como “0”• Bit 5-4: TlCKPS1:T1CKPS0: bit de selección del preescaler de la señal de reloj
delTIMER1:11 = valor del preescaler 1:810 = valor del preescaler 1:401 = valor del preescaler 1:200 = valor del preescaler 1: 1
• Bit 3: T1OSCEN: bit de habilitación 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 oscilador0 = Deshabilita el oscilador
Nota: El oscilador y la resistencia se desconectan para reducir el consumo• Bit 2: #TlSYNC: bit de control de sincronización de la señal de entrada.
Con TMR1CS = 11= No sincroniza la entrada de reloj externa0 = Sincroniza la entrada de reloj externaCon TMR1CS = 0En esta condición se ignora. El TIMER1 utiliza el reloj interno cuando TMRICS=0
• Bit 1 TMR1CS: bit de selección de la fuente de reloj del TIMER11 = 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 TIMER10 = Deshabilita el TIMER1
IUT Cumaná
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á
Prof. Luis Zurita
MICROCONTROLADORES II
CÁLCULOS PARA EL TIMER 1
Temporización= 4 * TOSC * (Valor Real TMR1)* Rango del predivisor.
Valor Real TMR1= (65536 – (TMR1H:TMR1L))
(TMR1H:TMR1L) = Valor a cargar en el TIMER1
Ejercicio: ¿Cuál es el máximo valor de temporización
que se puede alcanzar con el TIMER 1?
IUT Cumaná
Prof. Luis Zurita
MICROCONTROLADORES II
• Realice un programa para que se genere una interrupción cada 0,5 segundos, utilizando un XT.
RSI
Deshabilitar GIE
Limpiar señalizador
Habilitar GIE
RETFIE
INICIO
Configurar TIMER 1
Cargar TIMER 1
Habilitar TIMER 1
SLEEP
FIN
IUT Cumaná
Prof. Luis Zurita
MICROCONTROLADORES II
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,Wmovwf RESPHmovf TMR1L,Wmovwf RESPLmovwf TMR1H,Wsubwf RESPH,Wbtfsc STATUS,Zgoto CONTINUAgoto OTRA_LECTURA
IUT Cumaná
Prof. Luis Zurita
MICROCONTROLADORES II
TIMER 2
Características básicas: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 software5. Sólo 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:– Si los valores de TMR2 y PR2 se igualan, TMR2 pasa a cero.
8. Maneja el período de una señal PWM
IUT Cumaná
Prof. Luis Zurita
MICROCONTROLADORES II
TIMER 2
9. Al igualarse TMR2 y PR2 se produce la interrupción TMR2:1. El bit de interrupción del timer2 es TMR2IF
(Registro PIR1(1)).2. Hay un post-divisor a la salida del comparador.
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.
IUT Cumaná
Prof. Luis Zurita
MICROCONTROLADORES II
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
Periféricos• PIR1 = Señalizadores de Interrupciones
IUT Cumaná
Prof. Luis Zurita
MICROCONTROLADORES II
DIAGRAMA DE BLOQUE DEL TIMER 2
IUT Cumaná
Prof. Luis Zurita
MICROCONTROLADORES II
T2CON• Bit 7: No implementado: Se lee como 0• Bit 6-3:TOUTPS3:TOUTPS0: bit de selección del rango del divisor del
– Postescaler para el TIMER2:0 0 0 0 Divisor del postescaler 1:10 0 0 1 Divisor del postescaler 1:20 0 1 0 Divisor del postescaler 1:30 0 1 1 Divisor del postescaler 1:40 1 0 0 Divisor del postescaler 1:50 1 0 1 Divisor del postescaler 1:60 1 1 0 Divisor del postescaler 1:70 1 1 1 Divisor del postescaler 1:81 0 0 0 Divisor del postescaler 1:91 0 0 1 Divisor del postescaler 1:101 0 1 0 Divisor del postescaler 1:111 0 1 1 Divisor del postescaler 1:121 1 0 0 Divisor del postescaler 1:131 1 0 1 Divisor del postescaler 1:141 1 1 0 Divisor del postescaler 1:151 1 1 1 Divisor del postescaler 1:16
• Bit 2: TMR2ON: bit de activación del TIMER21 = habilita el funcionamiento del TIMER20 = Inhibe el funcionamiento del TIMER2
• Bit 1-0:T2CKPS1:T2CKPS0 Selección del rango de divisor del Preescaler del TIMER 2
0 0 Divisor del Preescaler 1:10 1 Divisor del Preescaler 1:41 X Divisor del Preescaler 1:16
IUT Cumaná
Prof. Luis Zurita
Prof. Luis Zurita
MICROCONTROLADORES II
EJEMPLOS TIMER 2
• Configure al TIMER 2 para:a) Trabaje con un prescaler de 16 y un postcaler
de 12
b) Trabaje con un prescaler de 8 y un postcaler de 1
IUT Cumaná
Prof. Luis Zurita
MICROCONTROLADORES II
CÁLCULOS TIMER2
Temporización= 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 = D’200’. Cargue el TMR2 con 00H
IUT Cumaná
Prof. Luis Zurita
MICROCONTROLADORES II
MODO CAPTURA
• En este modo CCP1 y CCP2 funcionan de forma idéntica. (En los nombres de registros a continuación 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 interrupción CCPxIF y si la interrupción está habilitada mediante CCPxIE, se genera una interrupción al cargar el CCPRxH:CCPRxL con TMR1.
• TMR1 en este modo debe estar configurado como temporizador o contador síncrono, nunca en modo asíncrono.
• Al cambiar la condiciones de funcionamiento dentro del modo captura conviene desactivar el módulo primero.
IUT Cumaná
Prof. Luis Zurita
MICROCONTROLADORES II
FLUJOGRAMA CCP1 CAPTURA
IUT Cumaná
Prof. Luis Zurita
MICROCONTROLADORES II
MODO COMPARACIÓN
• 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 Comparación.
• Al coincidir CCPRxH:CCPRxL y TMR1 se activa el bit de interrupción CCPxIF y si la interrupción está habilitada mediante CCPxIE, se genera un interrupción.
• TMR1 en este modo debe estar configurado como temporizador o contador síncrono, nunca en modo asíncrono.
• Si se ha seleccionado el modo disparo especial, el módulo CCP1 y CCP2 realizan tareas distintas. El CCP1 pone a 0 el TMR1 y el CCPR1 funciona como un Registro de Período capaz de generar periódicamente interrupciones. El CCP2 pone a 0 el TMR1 y además inicia una conversión del A/D, con lo que se pueden realizar conversiones periódicas. Aunque TMR1=0 no se genera interrupción del timer1.
IUT Cumaná
Prof. Luis Zurita
MICROCONTROLADORES II
FLUJOGRAMA CCP1 COMPARACIÓN
IUT Cumaná
Prof. Luis Zurita
MICROCONTROLADORES II
MODO PWM• Con este modo se consiguen impulsos, cuya anchura de nivel alto
es de duración variable y sirven para control de motores y generación de señales.
• Se utiliza un módulo 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 señal 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)
IUT Cumaná
Prof. Luis Zurita
MICROCONTROLADORES II
FLUJOGRAMA PWM
IUT Cumaná
Prof. Luis Zurita
MICROCONTROLADORES II
SEÑAL PWM
Periodo=[(PR2)+1]*4*Tosc*(Valor predivisor TMR2)
Duty Cycle=(CCPRxL:CCP1CON(5:4))*Tosc*(V. predivisor TMR2)
IUT Cumaná
Prof. Luis Zurita
MICROCONTROLADORES II
SEÑAL PWM
IUT Cumaná
Prof. Luis Zurita
MICROCONTROLADORES II
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.
IUT Cumaná
Prof. Luis Zurita
MICROCONTROLADORES II
Bit 7-6: No implementados: Se lee como "0"Bit 5-4: CCP1X: CCP1Y: bit menos significativos de PWMModo Captura sin usarModo Comparación sin usarModo PWM: Estos dos bit son los menos significativos del
ciclo de PWM. Los ocho bits más significativos se encuentran en
CCPR1L.Bit 3-0: CCP1M3-.CCP1M0; bit de selección del modo de
trabajo del módulo comparador CCP1.
CCP1CON
U-0 U-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0 R/W-0
--- CCP1X CCP1Y CCP1M3
CCP1M2
CCP1M1
CCP1M0
Bit 7 Bit 0
IUT Cumaná
Prof. Luis Zurita
MICROCONTROLADORES II
CCP1CON
IUT Cumaná
Prof. Luis Zurita
MICROCONTROLADORES II
TABLAS MÓDULO CCPModo CCP Recurso de Timer
Captura Timer1
Comparación
Timer1
PWM Timer2
IUT Cumaná
Prof. Luis Zurita
MICROCONTROLADORES II
IUT Cumaná
Prof. Luis Zurita
MICROCONTROLADORES II
EJERCICIOS CCPZ
ona d
e C
onfig
ura
ción Se configuran los bancos
Se configura el módulo CCP
Se configuran las Interrupciones (opcional)
Se regresa al Banco 0
Resto del programa(Tratamiento de la información)
Captura:Medir período,
Ton, Toff
Captura:Comparaciones
Y acciones
Comparación:Setpoint 16 bits
PWM:Genera señal
Comparación:Acción sobre RCx
PWM:En base a acción
Generar Señal
EJERCICIO CCP1 COMPARACIÓN
• Configure el Módulo CCP en modo Comparación, 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 interrupción cada vez que se alcanza el valor fijado.
• Al ocurrir esto, RB0 cambia de estado.• RC2, no debe modificar su valor.
IUT Cumaná
Prof. Luis Zurita
MICROCONTROLADORES II
EJERCICIO CCP1 CAPTURA
• Realice la medición de la duración de un pulso.• Emplear el módulo CCP1 y capturar el valor del TMR1
cada vez que llegue un flanco ascendente y otro descendente por la línea RC2/CCP1. Conocida la velocidad a la que evoluciona el TMR1, se puede determinar la duración 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 máxima de período= 65,536 ms.
• Cambie la orden de captura de ascendente a descendente al ocurrir la primera captura. (Dentro de la RSI).
IUT Cumaná
Prof. Luis Zurita
MICROCONTROLADORES II
EJERCICIO PWM
• Generar una señal de onda cuadrada por la línea RC2/CCP1 cuyo periodo puede ser modificado así como la anchura del pulso (Duty Cycle).
• Utilice las siguientes fórmulas– (Período) T=(PR2+1)*4*Tosc*TMR2 preescaler. – (Duty Cycle)=– (DC)=(CCPR1L:CCPCON1<5:4>)*Tosc*TMR2 preescaler.
• La señal de salida tiene un periodo determinado por la constante "Periodo" y una anchura "Duty Cycle” determinada por la constante "Duty"
IUT Cumaná
Prof. Luis Zurita
MICROCONTROLADORES II