SISTEMAS MICROCONTROLADOS
SISTEMAS MICROCONTROLADOS
Captulo 10
Mdulo Compara Captura PWM (CCP)
En esta familia encontramos un mdulo CCP mejorado y un CCP (siendo CCP1 y CCP2 respectivamente) los dos mdulos son idnticos salvo el caso de trabajo en modo PWM, los mdulos contienen un registro de 16 bits que puede actuar en los siguientes modos: Modo de captura. Modo de comparacin. Modo PWM. Modo PWM extendido.
Cada uno de los registros CCP tiene asociados tres registros: CCPxCON: Registro de control del mdulo CCPx. CCPRxH: Byte alto del registro de 16 bits. CCPRxL: Byte bajo del registro de 16 bits. CCPx: pin.
155
Bits no implementados: Se leen como 0. DCxB1:DCxB0: bit1 y bit0 del Duty Cycle del PWM. Modo captura: No se usa Modo comparacin: No se usa. Modo PWM: Son los dos bits menos significativos de los 10 bits que se utilizan para el Duty Cycle del PWM. Los ocho bits superiores (DCx9:DCx2) del Duty Cycle se encuentran en CCPRxL
bit 3:0
CCP1M3:CCP1M0: Bits de seleccin del modo ECCP. 0000 = Captura/Comparacin/PWM apagado (reset del Mdulo ECCP). 0001=no usado 0010=Modo compara, la salida cambia cuando se produzca la igualacin. (CCP1F =1) 0011=no usado 0100 = Modo de captura, cada flanco de bajada. 0101 = Modo de captura, cada flanco de subida. 0110 = Modo de captura, cada 4 flancos de subida. 0111 = Modo de captura, cada 16 flancos de subida. 1000 = Modo de comparacin, inicializar el pin CCP en bajo, y forzarlo a alto cuando se produzca la igualacin (CCP1F =1). 1001 = Modo de comparacin, inicializar el pin CCP en alto, y forzarlo a bajo cuando se produzca la igualacin (CCP1F =1). 1010 = Modo de comparacin, se genera una interrupcin, el pin CCP no se ve afectado (CCP1F =1).. 1011 = Modo de comparacin, provoca acontecimientos especiales (CCP2IF=1, TMR1 se resetea y la conversin A/D inicia si el modulo est activo. CCP2 pin no es afectado).
156
Bits no implementados: Se leen como 0. DC2B1:DC2B0: bit1 y bit0 del Duty Cycle del PWM. Modo captura: No se usa Modo comparacin: No se usa. Modo PWM: Son los dos bits menos significativos de los 10 bits que se utilizan para el Duty Cycle del PWM. Los ocho bits superiores (DC29:DC22) del Duty Cycle se encuentran en CCPR2L
bit 3:0
CCPxM3:CCPxM0: Bits de seleccin del modo ECCP. 0000 = Captura/Comparacin/PWM apagado (reset del Mdulo ECCP). 0001=no usado 0010=no usado 0011=no usado 0100 = Modo de captura, cada flanco de bajada. 0101 = Modo de captura, cada flanco de subida. 0110 = Modo de captura, cada 4 flancos de subida. 0111 = Modo de captura, cada 16 flancos de subida. 1000 = Modo de comparacin, inicializar el pin CCP en bajo, y forzarlo a alto cuando se produzca la igualacin (CCP1F =1).
157
1001 = Modo de comparacin, inicializar el pin CCP en alto, y forzarlo a bajo cuando se produzca la igualacin (CCP1F =1). 1010 = Modo de comparacin, se genera una interrupcin, el pin CCP no se ve afectado (CCP1F =1).. 1011 = Modo de comparacin, provoca acontecimientos especiales (CCP2IF=1, TMR1 se resetea y la conversin A/D inicia si el modulo est activo. CCP2 pin no es afectado). 11xx = Modo PWM.
158
En este caso el pin CCPx tiene que estar configurado a travs del TRISC como entrada. Si estuviese como salida una escritura en el puerto producira una condicin de captura. El predivisor se puede utilizar para obtener una resolucin media ms exacta sobre frecuencias de entrada constantes. Por ejemplo con un predivisor de 1:16 la resolucin efectiva es de ciclo mquina/16, mientras que sin predivisor es de ciclo de mquina. Cuando el mdulo CCP se apaga o el CCP no est en modo captura, el contador del predivisor se borra. Para cambiar el valor del predivisor habr que apagar antes el mdulo y luego modificarlo, ya que si no se puede producir una interrupcin. El modo de captura se puede usar para realizar clculos de tiempos entre varios eventos. Cuando el dispositivo se encuentra en modo de reposo y aparece en evento externo, el mdulo produce la interrupcin que despierta al dispositivo, pero el registro de captura no se actualiza, ya que el TMR1 no funciona, y el valor cargado carecera de significado.
159
este modo el pin CCPx se ha de configurar como salida mediante el TRIS correspondiente. En la figura 10.2 muestra el diagrama de bloques del mdulo CCP en modo de comparacin.
Existe un modo especial que produce un trigger especial, el cual resetea el registro TMR1 (los 16 bits), el cual puede ser utilizado como un mdulo temporizador. Adems en algunos modelos este trigger dispara la conversin A/D.
160
La generacin de la secuencia PWM se obtiene de la siguiente forma: En PR2 se escribe el valor del periodo de la seal, el cual se puede calcular con la siguiente expresin. PWMT = (PR2 + 1) 4 TOSC (Valor del Predivisor del TMR2 Cuando TMR2 = PR2: TMR2 se borra. (10.1)
161
El pin CCPx se pone a 1 (Excepto si el Duty Cycle es 0). El valor de CCPRxL junto a CCPxCON<5:4>, se carga sobre CCPRxH, de forma que se carga el valor del Duty Cycle. Como se puede ver, esto nos da una resolucin de 10 bits, representados por DCxB9:DCxB0. Para realizar el clculo del Duty Cycle se utiliza la siguiente ecuacin:
(10.2)
Cuando CCPRxH + 2bits = TMR2 + 2bits Qclock (o dos bits del predivisor), la salida CCPx se pone a 0, terminando con el Duty Cycle. No todas las resoluciones estn permitidas para una frecuencia determinada de PWM. La resolucin mxima en bits viene dada por la expresin:
TABLA 10.1 Mnimo tiempo del duty cycle en funcin del valor del predivisor. Como ejemplo se realiza el clculo del periodo de una seal PWM, el Duty Cycle, y su resolucin. El periodo, la resolucin y el ciclo til se configuran en los siguientes registros: PR2 T2CON CCPRxL CCPxCON
162
Se desea un PWM con una frecuencia de 78.125 KHz, siendo FOSC= 20 MHz y el predivisor del TMR2=1.
Para cualquier valor mayor de 255 se producir un Duty Cycle del 100%. Para terminar con este modo de operacin se describen los pasos a seguir para configurar un PWM. Estos son: Establecer el periodo PWM escribiendo el registro PR2. Establecer el Duty Cycle escribiendo los bits DCxB9:DCxB0. Configurar CCPx como salida. Establecer el predivisor del TMR2 y habilitarlo escribiendo en T2CON. Configurar el mdulo CCP para la operacin en modo PWM. Ejemplos de resolucin para 20MHz
163
MODO PWM CON UNA SALIDA El modo PWM con una salida est habilitado slo en el caso de que se pongan a cero los bits P1M1 y P1M0 en el registro CCP1CON. En tal caso, una seal PWM puede estar disponible simultneamente en como mximo cuatro diferentes pines de salida. Adems, la secuencia de seales PWM puede aparecer en forma de onda bsica o invertida. La distribucin de seales depende de los bits del registro PSTRCON, mientras que su polaridad depende de los bits CCP1M1 y CCP1M0 del registro CCP1CON. Si se utiliza una salida invertida, los pines activos a nivel bajo y los pulsos que tienen la misma forma de onda se generan siempre en parejas: en los pines P1A y P1C as como en los pines P1B y P1D, respectivamente.
164
MODO DE MEDIO-PUENTE En cuanto al modo de medio-puente, la seal PWM es una salida en el pin P1A, mientras que a la vez la seal complementaria PWM es una salida en el pin P1B. Estos pulsos activan a los controladores MOSFET en modo de Medio-Puente que habilitan/deshabilitan el flujo de corriente por el dispositivo. En este modo es muy peligroso encender los controladores MOSFET simultneamente (el cortocircuito producido en aquel momento sera fatal). Para evitarlo, es necesario proporcionar un tiempo muerto entre encender y apagar los controladores. Este tiempo muerto est marcado con 'td' (time delay) en la siguiente figura. El problema se resuelve al utilizar los bits PDC0-PDC6 del registro PWM1CON.
Como se muestra en la siguiente figura, el modo de medio-puente se puede utilizar para activar los controladores MOSFET en la configuracin Puente completo:
165
MODO PUENTE-COMPLETO Todos los cuatro pines se utilizan como salidas en el modo Puente completo. En la prctica, este modo es utiliza con frecuencia para activar los motores, lo que proporciona un control simple y completo de velocidad y direccin de rotacin. Hay dos configuraciones de este modo: Full Bridge-Forward (puente completo con salida directa) y Full Bridge-Reverse (puente completo con salida inversa).
166
Un uno lgico (1) aparece en el pin P1A (pin est activo a nivel alto); Secuencia de pulsos aparece en el pin P1D; y Un cero lgico (0) en los pines P1B y P1C (pines estn activos a nivel bajo).
La siguiente figura muestra el estado de los pines P1A-P1D durante un ciclo PWM completo:
167
CONFIGURACIN PUENTE COMPLETO - INVERSO Lo similar ocurre en modo Inverso, a menos que estos pines dispongan de funciones diferentes:
Un uno lgico (1) aparece en el pin P1C (pin est activo a nivel alto); Secuencia de pulsos aparece en el pin P1B; y Un cero lgico (0) aparece en los pines P1A y P1D (pines estn activos a nivel bajo).
168
Registro PWM1CON
bit 7
PRSEN: PWM Restart Enable bit (Bit de habilitacin del reinicio automtico del PWM). 1= Despus de un apagado automtico, el mdulo PWM se reinicia automticamente, y el bit ECCPASE del registro ECCPAS se pone a cero. 0 = Para iniciar el mdulo PWM despus de un apagado automtico, el bit ECCPASE debe ponerse a cero por software.
bit 6-0
PDC6 - PDC0: PWM Delay Count bits (Bits de configuracin del tiempo muerto en el modo PWM) PDCn=El nmero binario de 7 dgitos determina el nmero de ciclos de instrucciones de Fosc/4 (4*Tosc) aadidos como tiempo muerto al activar los pines de entrada PWM.
Registro PSTRCON
Bits no implementados: Se leen como 0. STRSYNC : Steering Sync bit (bit de sincronizacin de direccin) determina el momento de la direccin de los pulsos de PWM. 1 =La direccin ocurre despus de que el registro PSTRCION haya sido cambiado, slo si se ha completado la forma de onda del PWM. 0 = La direccin ocurre despus de que el registro PSTRCION haya sido cambiado. La seal PWM en la salida del pin ser cambiada inmediatamente sin reparar en si el ciclo anterior ha sido completado. Este procedimiento es til cuando es necesario detener la transmisin de una seal PWM del pin.
bit 3
STRD : Steering Enable bit D (bit D de habilitacin de direccin) determina la funcin del pin P1D. Unidad Educativa Tcnico Salesiano Ing. Pablo Rodas
169
1 = El pin P1D tiene la forma de onda del PWM con polaridad determinada por los bits CCP1M0 y CCP1M1. 0 =Pin est configurado como entrada/salida general del puerto PORTD. bit 2 STRC: Steering Enable bit C (bit C de habilitacin de direccin) determina la funcin del pin P1C. 1 = El pin P1C tiene la forma de onda del PWM con polaridad determinada por los bits CCP1M0 y CCP1M1 0 = Pin est configurado como entrada/salida general del puerto PORTD. bit 1 STRB: Steering Enable bit B (bit B de habilitacin de direccin) determina la funcin del pin P1B. 1 =El pin P1B tiene la forma de onda del PWM con polaridad determinada por los bits CCP1M0 y CCP1M1. 0 = Pin est configurado como entrada/salida general del puerto PORTD. bit 0 STRA: Steering Enable bit A (bit A de habilitacin de direccin) determina la funcin del pin P1A. 1 =El pin P1A tiene la forma de onda del PWM con polaridad determinada por los bits CCP1M0 y CCP1M1. 0 = Pin est configurado como entrada/salida general del puerto PORTC. Registro ECCPAS
ECCPASE: ECCP Auto-Shutdown Event Status bit (bit de estado del apagado bit 7 automtico) indica si ha ocurrido el apagado automtico del mdulo CCP (estado de Apagado): 1 = Mdulo CCP est en estado de Apagado. 0 = Mdulo CCP funciona normalmente. ECCPAS2 - ECCPAS0: ECCP Auto-Shutdown Source Select bits (Bits de bit 6-4 seleccin de la fuente de apagado automtico) selecciona la fuente de apagado automtico. 0 0 0 = Estado del apagado deshabilitado Ing. Pablo Rodas
170
PSSAC1, PSSAC0: Pins P1A, P1C Shutdown State Control bits (Bits de bit 3-2 configuracin de los pines P1A y P1C en modo de apagado) define el estado lgico de los pines P1A y P1C cuando el mdulo CCP est en el estado de apagado 0 0 1 0 1 X P1A, P1C = 0 P1A, P1C = 1 P1A, P1C = Alta impedancia (Tri-estado) Pins P1B, P1D Shutdown State Control bits (Bits de
configuracin de los pines P1B y P1D en modo de apagado) define el estado lgico de los pines P1B y P1D cuando el mdulo CCP est en el estado de apagado. 0 0 1 0 1 X P1B y P1D= 0 P1B y P1D = 1 P1B y P1D = Alta impedancia (Tri-estado)
171
172