modulo pwm

20
AREA DE TECNOLOGIA ELECTRONICA UNIVERSIDAD DE OVIEDO LECCION 12 – MODULOS CCP (Captura/Comparación/PWM)- 1 MODULO CCP (Captura/Comparación/PWM) Un microcontrolador de la familia 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 dato al producirse un e vento. Como registro de 16 bits para comparación, provocando 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. Los 2 módulos CCP disponibles se comportan idénticamente, salvo el caso del funcionamiento por disparo de evento especial (special event trigger) que tiene una pequeña diferencia 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 de CCP2 es idéntico (salvo la excepción indicada anteriormente) pero cada uno con sus propios registros (ver tabla adjunta).

Upload: hernan-cuevas

Post on 14-Oct-2014

91 views

Category:

Documents


2 download

TRANSCRIPT

Page 1: Modulo PWM

AREA DE TECNOLOGIA ELECTRONICA UNIVERSIDAD DE OVIEDO

LECCION 12 – MODULOS CCP (Captura/Comparación/PWM)- 1

MODULO CCP (Captura/Comparación/PWM)

• Un microcontrolador de la familia 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 dato al producirse un evento.•Como registro de 16 bits para comparación, provocando 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.

• Los 2 módulos CCP disponibles se comportan idénticamente, salvo el caso del funcionamiento por disparo de evento especial (special event trigger) que tiene una pequeña diferencia 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 de CCP2 es idéntico (salvo la excepción indicada anteriormente) pero cada uno con sus propios registros (ver tabla adjunta).

Page 2: Modulo PWM

AREA DE TECNOLOGIA ELECTRONICA UNIVERSIDAD DE OVIEDO

LECCION 12 – MODULOS CCP (Captura/Comparación/PWM)- 2

La siguiente tabla muestra que temporizadores utiliza el módulo CCP en cada uno de sus modos de funcionamiento:

MODULO CCP (Captura/Comparación/PWM)

La siguiente tabla muestra las posibles interacciones entre los módulos CCP, donde CCPx es uno de los módulos y CCPy es el otro:

Page 3: Modulo PWM

AREA DE TECNOLOGIA ELECTRONICA UNIVERSIDAD DE OVIEDO

LECCION 12 – MODULOS CCP (Captura/Comparación/PWM)- 3

CCPxCON -- CCP1CON (17h) Y CCP2CON (1Dh):REGISTRO DE CONTROL DEL MODULO CCP

bit 7-6 No implementados: Leidos como ‘0’.

bit 5-4 DCxB1:DCxB0: Bits 0 y 1 del valor que fija el ciclo de trabajo en el modo PWM.

Modo Captura:No se usaModo Comparación:No se usaModo PWM:Estos bits son los 2 LSBs para el ciclo

de trabajo. Los 8 bits más significativos están en el registro CCPRxL.

bit 3-0 CCPxM3:CCPxM0: Bits de selección del modo de funcionamiento del módulo CCPx:

0000= Captura/Comparación/PWM off (resetea el módulo CCPx) 0100= Modo Captura, cada flanco de bajada0101= Modo Captura, cada flanco de subida0110= Modo Captura, cada 4 flancos de subida0111= Modo Captura, cada 16 flancos de subida1000= Modo comparación, el pin CCPx se pone a “1” cuando TMR1 alcanza el valor del registro de 16 bits (CCPRxH:CCPRxL). El bit CCPIF se pone a 1.1001= Modo comparación, el pin CCPx se pone a “0” cuando TMR1 alcanza el valor del registro de 16 bits (CCPRxH:CCPRxL). El bit CCPIF se pone a 1.1010= Modo comparación, generación de interrupción software cuando se produce la igualdad. CCPIF se pone a 1. El pin CCPx no se ve afectado.1011= Modo comparación, generación de disparo de evento especial(special event trigger). CCPIF se pone a 1. El pin CCPx no se ve afectado. CCP1 resetea el TMR1; CCP2 resetea el TMR1 y lanza una conversión A/D nueva (si el módulo del conversor A/D está habilitado.11xx= modo PWM

Page 4: Modulo PWM

AREA DE TECNOLOGIA ELECTRONICA UNIVERSIDAD DE OVIEDO

LECCION 12 – MODULOS CCP (Captura/Comparación/PWM)- 4

MODO CAPTURA• En modo Captura, los registros CCPRxH:CCPRxL toman el valor de 16 bits que tenga el TMR1 cuando se produzca un determinado evento en el pin CCPx (RC2/CCP1 para el módulo CCP1 y RC1/T1OSI/CCP2 para el módulo CCP2). Los posibles eventos son:

• Cada flanco de bajada.• Cada flanco de subida.• Cada 4º flanco de subida.• Cada 16º flanco de subida.

Como hemos visto el evento se configura con los bits CCPxM3:CCPxM0 de los registros CCP1CON y CCP2CON respectivamente.• El bit CCP1IF (PIR1<2>) ó CCP2IF (PIR2<0>) se ponen a “1” pudiendo provocar un salto a la rutina de interrupción. Debe 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 (se pierde).

• En modo captura, el pin RC2/CCP1 y/o el pin RC1/T1OSI/CCP2 deben configurarse como entrada por puesta a uno de los bits TRISC<2> y TRISC<1> respectivamente. Si el bit RC2/TRISC1 y/o RC1/CCP2 se configura como salida, una escritura a este pin del puerto puede originar una captura.

Page 5: Modulo PWM

AREA DE TECNOLOGIA ELECTRONICA UNIVERSIDAD DE OVIEDO

LECCION 12 – MODULOS CCP (Captura/Comparación/PWM)- 5

MODO CAPTURA• FUNCIONAMIENTO DEL TMR1 PARA EL MODO CAPTURA: El TMR1 debe estar corriendo en modo temporizador ó en modo contador síncrono para que el módulo CCP produzca la comparación. No puede funcionar en modo contador asíncrono.

• CAMBIO ENTRE MODOS CAPTURA: Si se cambia de un modo captura (p.e. de 4 flancos) a otro (p.e. de cada flanco), el cambio puede generar una falsa interrupción. El usuario debe por software limpiar el bit CCPxIE para deshabilitar las interrupciones, limpiar el flag CCPxIFy luego cambiar el modo de captura. El cambio entre dos modos captura debe realizarse según el siguiente subprograma:

CLRF CCP1CON ; Apaga el módulo CCPMOVLW NEW_CAPT_PS ; Preparo en W el nuevo prescaler y preparo CCP ONMOVWF CCP1CON ; Cargo CCP1CON el valor

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

• FUNCIONAMIENTO EN MODO DORMIDO: En modo dormido, el TMR1 no se incrementa (esta en modo síncrono ó temporizador). Pero, el prescaler del CCP si continua incrementándose y cuando llega al valor configurado pone el bit CCPxF a “1” provocando que el micro se “despierte”. No obstante, el contenido del TMR1 no se transfiere a los CCPR pues el TMR1 no se ha visto incrementado y por tanto, el valor cargado no tiene significado.

Page 6: Modulo PWM

AREA DE TECNOLOGIA ELECTRONICA UNIVERSIDAD DE OVIEDO

LECCION 12 – MODULOS CCP (Captura/Comparación/PWM)- 6

EJEMPLO DE INICIALIZACIÓN EN MODO CAPTURACLRF CCP1CON ; Modulo CCP1 OFFCLRF TMR1H ; limpio TMR1HCLRF TMR1L ; limpio TMR1LCLRF INTCON ; Deshabilito interrupciones BSF STATUS, RP0 ; Banco 1BSF TRISC, CCP1 ; Pin RC2/CCP1 entrada CLRF PIE1 ; Deshabilito interrupciones de perifericosBCF STATUS, RP0 ; Banco 0CLRF PIR1 ; limpio flags de interrupciones de periféricosMOVLW 0x06 ; Modo captura, cada 4º flanco de subidaMOVWF CCP1CON ;BSF T1CON, TMR1ON ; Timer 1 ON

; En este ejemplo no usamos la interrupciones del CCP1; se muestrea el flag de CCP para detectar cuando se produce una captura; Si se quisiera utilizar interrupciones habría que habilitarlas en el proceso de ; inicialización; Evento que provoca una capturaEvento_captura

BTFSS PIR1, CCP1IFGOTO Evento_captura

;; Si llegamos aquí es que se han producido 4 flancos de subida en el pin CCP1;

BCF PIR1, CCP1IF ; Se debe limpiar el flag para una nueva comparación

Page 7: Modulo PWM

AREA DE TECNOLOGIA ELECTRONICA UNIVERSIDAD DE OVIEDO

LECCION 12 – MODULOS CCP (Captura/Comparación/PWM)- 7

REGISTROS ASOCIADOS CON EL MODULO CCP EN MODO CAPTURA

Page 8: Modulo PWM

AREA DE TECNOLOGIA ELECTRONICA UNIVERSIDAD DE OVIEDO

LECCION 12 – MODULOS CCP (Captura/Comparación/PWM)- 8

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 pin CCPx sufre un evento que puede ser:

• Puesta a “1”.• Puesta a “0”.• No se produce cambio.

• El evento viene fijado por el valor de los bits CCPxM3:CCPxM0 (CCPxCON<3:0>) (ver 2ª transparencia de esta lección).

• Al mismo tiempo que se produce un evento en el pin se puede producir un salto a la rutina de interrupción ya que el flag CCPxIF (de PIR1 ó PIR2) se pone a “1”.

• TMR1 debe estar funcionando en modo temporizador ó modo contador síncronopara que el módulo CCP funcione correctamente en el modo comparación. En modo contador asíncrono, el modo comparación no funciona.

Page 9: Modulo PWM

AREA DE TECNOLOGIA ELECTRONICA UNIVERSIDAD DE OVIEDO

LECCION 12 – MODULOS CCP (Captura/Comparación/PWM)- 9

MODO COMPARACION• CONFIGURACION DEL PIN CCPx PARA MODO COMPARACION: Los pines CCPx deben configurarse como salidas, limpiando los bits del registro TRISC correspondientes. En el momento que se selecciona el modo de comparación deseado, el pin CCP se pone al nivel contrario al que tiene que cambiar cuando se produzca la igualdad 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 se genera la interrupción si está habilitada.

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

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

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

Page 10: Modulo PWM

AREA DE TECNOLOGIA ELECTRONICA UNIVERSIDAD DE OVIEDO

LECCION 12 – MODULOS CCP (Captura/Comparación/PWM)- 10

EJEMPLO DE INICIALIZACIÓN EN MODO COMPARACIONCLRF CCP1CON ; Modulo CCP1 OFFCLRF TMR1H ; limpio TMR1HCLRF TMR1L ; limpio TMR1L

;aquí podriamos cargar el valor de la comparación en CCPR1H y CCPR1LCLRF INTCON ; Deshabilito interrupciones BSF STATUS, RP0 ; Banco 1BCF TRISC, CCP1 ; Pin RC2/CCP1 SALIDA CLRF PIE1 ; Deshabilito interrupciones de perifericosBCF STATUS, RP0 ; Banco 0CLRF PIR1 ; limpio flags de interrupciones de periféricosMOVLW 0x08 ; Modo comparación, pone a 1 el pin CCP1 cuando se iguale MOVWF CCP1CON ;BSF T1CON, TMR1ON ; Timer 1 ON

; En este ejemplo no usamos la interrupciones del CCP1; se muestrea el flag de CCP para detectar cuando se produce la igualdad de la comparación; Si se quisiera utilizar interrupciones habría que habilitarlas en el proceso de inicializaciónEvento_comparacion

BTFSS PIR1, CCP1IFGOTO Evento_comparación

;; Si llegamos aquí es que se ha producido una igualdad entre TMR1 y CCP1RH:CCP1RL;

BCF PIR1, CCP1IF ; Se debe limpiar el flag para una nueva comparación

Page 11: Modulo PWM

AREA DE TECNOLOGIA ELECTRONICA UNIVERSIDAD DE OVIEDO

LECCION 12 – MODULOS CCP (Captura/Comparación/PWM)- 11

REGISTROS ASOCIADOS CON EL MODULO CCP EN MODO COMPARACION

Page 12: Modulo PWM

AREA DE TECNOLOGIA ELECTRONICA UNIVERSIDAD DE OVIEDO

LECCION 12 – MODULOS CCP (Captura/Comparación/PWM)- 12

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 la figura adjunta. Donde 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.

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

• El ciclo de trabajo (duty cycle) viene definido por el contenido del valor del registro CCPRxLjunto 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 13: Modulo PWM

AREA DE TECNOLOGIA ELECTRONICA UNIVERSIDAD DE OVIEDO

LECCION 12 – MODULOS CCP (Captura/Comparación/PWM)- 13

MODO PWM• PERIODO DE LA ONDA PWM :Se calcula utilizando la siguiente formula:

Cuando TMR2 es igual a PR2, se producen 3 cosas en el siguiente incremento de ciclo:

• El TMR2 se resetea.

• El pin CCPx se pone a 1. Salvo si el ciclo de trabajpesta fijado a 0 donde el pin CCPx no se pondrá a 1 nunca.

• El nuevo ciclo de trabajo es cargado desde el registro CCPRxL al registro CCPRxH que es el que realmente se compara con el TMR2 para fijar el ciclo ce trabajo.

Page 14: Modulo PWM

AREA DE TECNOLOGIA ELECTRONICA UNIVERSIDAD DE OVIEDO

LECCION 12 – MODULOS CCP (Captura/Comparación/PWM)- 14

MODO PWMCICLO DE TRABAJO DE LA ONDA PWM:• El ciclo de trabajo viene definido viene definido por el valor que se carga en el registro CCPR1L (8bits más significativos) junto con los bits CCP1CON<5:4> (2 bits menos 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:

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

• Si el ciclo de trabajo de la onda PWM es mayor que el periodo, la señal que sale por el la patilla CCPx está siempre a 1.

Page 15: Modulo PWM

AREA DE TECNOLOGIA ELECTRONICA UNIVERSIDAD DE OVIEDO

LECCION 12 – MODULOS CCP (Captura/Comparación/PWM)- 15

MODO PWM• La máxima resolución (en bits) que se puede obtener para una onda PWM generada en este módulo viene dada por la siguiente fórmula:

• La siguiente tabla muestra frecuencias y resoluciones que se pueden obtener con un oscilador de 20 MHz

• La máxima resolución (en tiempo) viene fijada por el prescaler escogido para el TMR2:

Page 16: Modulo PWM

AREA DE TECNOLOGIA ELECTRONICA UNIVERSIDAD DE OVIEDO

LECCION 12 – MODULOS CCP (Captura/Comparación/PWM)- 16

MODO PWMPasos para configurar el módulo CCP para funcionar en modo PWM:1. Definir el periodo de la onda PWM escribiendo en el registro PR2.2. Definir el ciclo de trabajo escribiendo en los registros CCPRxL y en los bits

CCPxCON<5:4>.3. Definir el pin CCPx como salida, poniendo a “0” el bit TRISC<2> (para CCP1) y/o el bit

TRISC<1> (para CCP2).4. Seleccionar el valor del prescaler del TMR2 y habilitar el TMR2 por puesta a 1 del nit

TMR2ON (T2CON<2>).5. Configurar el módulo CCP1 para funcionar en modo PWM

En modo SLEEP, el TMR2 no se incrementa y por tano el estado del módulo CCP no cambia. Si el pin CCPx está a un determinado nivel (0 ó 1) cuando se ejecuta la instrucción SLEEP, el pincontinuará en ese valor y se despertará con ese valor.

Page 17: Modulo PWM

AREA DE TECNOLOGIA ELECTRONICA UNIVERSIDAD DE OVIEDO

LECCION 12 – MODULOS CCP (Captura/Comparación/PWM)- 17

Ejemplo: Calcula PR2 para obtener una onda PWM cuya frecuencia sea de 78,125 kHz. La Fosces de 20 MHz y el prescaler del TMR2 = 1.

1/78,125kHz = [(PR2)+1] * 4 * 1/20MHz * 112,8us = [(PR2)+1] * 4 * 50ns * 1 à PR2 = 63

Encontrar la maxima resolución del ciclo de trabajo que puede usarse con una frecuencia PWM de 78,125 KHz y un oscilador de 20 MHz

TPWM = 2N * TOSC à 1/78,125kHz = 2N * 1/20MHz * 1 à 12,8 us = 2N * 50 ns * 1256 = 2N à N= 8

MODO PWM

Por tanto, un ciclo de trabajo con una resolución de 8 bits es la que se obtiene si se quiere obtener una onda PWM de 78,125 kHz de frecuencia con un oscilador de 20 MHz. Es decir los valores a cargar para el ciclo de trabajo estan en el margen 0 = DCxB9:DCxB0 = 255. Cualquier valor mayor de 255 provocará que el ciclo de trabajo sea del 100%.

Fijarse que la resolución será mayor si la frecuencia de la onda PWM es menor. Si la frecuencia crece, la resolución decrece.

Page 18: Modulo PWM

AREA DE TECNOLOGIA ELECTRONICA UNIVERSIDAD DE OVIEDO

LECCION 12 – MODULOS CCP (Captura/Comparación/PWM)- 18

EJEMPLO DE INICIALIZACIÓN EN MODO PWM; Suponemos T2CON a 00h, por tanto, prescaler a 1 y apagado. Suponemos oscilador de 20 MHz

CLRF CCP1CON ; Módulo CCP offCLRF TMR2 ; limpio Timer2MOVLW 0x7F ; PR2 = 7Fh = 127MOVWF PR2 ; PeriodoPWM= (127 + 1) * 4 * 50ns * 1 = 25,6 usMOVLW 0x1F ; 8 bits altos del registro del duty a 00011111bMOVWF CCPR1L ; CLRF INTCON ; Deshabilito interrupcionesBSF STATUS, RP0 ; Banco 1BCF TRISC, PWM1 ; Pin RC2/CCP1 salida PWMCLRF PIE1 ; Deshabilito interrupciones de periféricosBCF STATUS, RP0 ; Banco 0CLRF PIR1 ; Limpio flags de periféricosMOVLW 0x2C ; modo PWM, 2 LSbs del duty a 10bMOVWF CCP1CON ; registro del duty 0001111110b = 126d

;por tanto duty = 126 * 50ns * 1 = 6,3 us 6,3us/25,6us = 24,6% de dutyBSF T2CON, TMR2ON ; Timer2 ON;; La interrupción de CCP1 esta deshabilitada; el final del periodo lo detecto por muestreo del TMR2IF;

Periodo_PWMBTFSS PIR1, TMR2IFGOTO Periodo_PWM

;OJO, solo se detecta el final del periodo si el postscaler del TMR2 esta a 1:1BCF PIR1, TMR2IF

Page 19: Modulo PWM

AREA DE TECNOLOGIA ELECTRONICA UNIVERSIDAD DE OVIEDO

LECCION 12 – MODULOS CCP (Captura/Comparación/PWM)- 19

REGISTROS ASOCIADOS CON EL MODULO CCP EN MODO PWM

Page 20: Modulo PWM

AREA DE TECNOLOGIA ELECTRONICA UNIVERSIDAD DE OVIEDO

LECCION 12 – MODULOS CCP (Captura/Comparación/PWM)- 20

CARACTERISTICAS ELECTRICAS DEL MODULO CCP