pwm con pic16f877a: modulos y registros involucrados
DESCRIPTION
Configuración de los modulos y registros del microcontrolador PIC16F877A para usar el PWM.TRANSCRIPT
GENERACIÓN DE PWM CON MICROCONTROLADOR
MODULO CCP (CAPTURA/ COMPARACIÓN/ PWM)
Cada modulo CCP contiene un registro de 16 bits los cuales pueden ser operados como:• Modo Captura• Modo Comparación• Modo PWM
MODULO CCP1El primer registro del modulo CCP (CCPR1 ) esta conformado por dos registros de 8 bits: CCPR1L (LSB) y CCPR1H (MSB). El registro CCP1CON controla la operación del modulo CCP1.
MODULO CCP2El segundo registro del modulo CCP (CCPR2) esta conformado por dos registros de 8 bits: CCPR2L (LSB) y CCPR2H (MSB). El registro CCP2CON controla la operación del modulo CCP2.
Modo CCPRecurso
Temporizador
Captura Timer1
Comparación Timer1
PWM Timer2Tabla 1. Modos del modulo CCP – Temporizador
requerido
En lo referente a los modos “Captura” o “Comparación”, algunas tipicas aplicaciones son la generación de un pulso de ancho programado o medida del ancho de un pulso externo. En ambos casos, los módulos CCP1 y CCP2 trabajan con el Timer1.
Cada modulo CCPx puede generar una onda PWM de hasta 10 bits de resolución con una frecuencia y ciclo de trabajo (duty cycle) configurables. Ambas ondas son semi independientes, es decir, pueden tener diferente ciclo de trabajo pero comparten la misma frecuencia.
Figura 1. Salidas de los módulos CCPx.
Cada módulo CCPx se puede habilitar o inhabilitar independientemente. La salida PWM del módulo CCP1 es el pin RC2/CCP1 y del módulo CCP2 es el pin RC1/CCP2. Dichos pines deben ser configurados como salidas.
REGISTROS DE LOS MODULOS CCP
• CCP1CON y CCP2CONRegistros para la configuración de los módulos CCP1 y CCP2 respectivamente en modo Captura, Comparación o PWM.
• CCPR1L y CCPR2LRegistros para controlar el ciclo de trabajo de cada onda PWM.
• CCPR1H y CCPR2HFuncionan como registros imagen de los dos anteriores, pero no pueden ser accedidos directamente.
• TMR2, PR2 y T2CONSon los registros del Timer2. Sirven para establecer el periodo, o la frecuencia, de los dos canales PWM.
REGISTRO CCP1CON / REGISTRO CCP2CON
Bit 7-6 Sin implementarSe leen como ‘0’
Bit 5-4 CCPxX:CCOxYSolo se utilizan para el modo PWM. Estos son los dos bits menos
significativos del ciclo de trabajo (duty cycle) del PWM. Los 8 bits mas significativos se encuentran en el registro CCPRxL.
Bit 3-0 CCPxM3:CCPxM0Bits de selección para el modo del modulo CCPx0000 = Modo Captura/Comparación/PWM inhabilitados (Reset modulo
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, poner a ‘1’ en coincidencia (bit CCPxIF se
setea)1001 = Modo Comparación, poner a ‘0’ en coincidencia (bit CCPxIF se
setea)1010 = Modo Comparación, genera una interrupción por software en coincidiencia (el bit CCPxIF se setea)1011 = Modo Comparación, disparo por evento especial (CCPxIF se
setea)CCP1 pone a cero el TMR1; CCP2 pone a cero el TMR1 e inicia la conversión A/D si el modulo esta habilitado.11xx = Modo PWM
MODULO TIMER2
TIMER2 es un temporizador de 8 bits que dispone de un prescaler y un postscaler, además, puede ser usado como la base de tiempo para el modulo CCP en modo PWM. El registro TMR2 es un registro de lectura y escritura.
El reloj de entrada (FOSC/4) tiene una opción de pre-escala de 1:1, 1:4 y 1:16, que se selecciona mediante los bits de control T2CKPS1:T2CKPS0 (Registro T2CON).
El modulo Timer2 tiene un registro de periodo de 8 bits, PR2. El Timer2 se incrementa desde 00h hasta que su valor sea igual al valor del registro PR2, y se pone a 00h luego de ejecutado el siguiente ciclo de instrucción. PR2 es un registro de lectura y escritura, y se inicializa a FFh después de cada Reset.
La salida del TMR2 pasa a través de un postscaler de 4 bits (el cual proporciona escalas de 1:1 hasta 1:16) para generar la interrupción del TMR2 (TMR2IF).
Figura 1. Diagrama de Bloques del Tiimer2
REGISTRO DE CONTROL PARA TIMER2 (T2CON)
Bit 7 Sin implementarSe lee como ‘0’
Bit 6-3 TOUTPS3:TOUTPS0Bits de selección para el postscale de salida del Timer20000 = 1:1 0001 = 1:20010 = 1:30011 = 1:40100 = 1:5...1111 = 1:16
Bit 2 TMR2ONBit de encendido del Timer21 = Timer2 esta encendido0 = Timer2 esta apagado
Bit 1 T2CKPS1:T2CKPS0Bits de selección de prescale para el reloj del Timer200 = Prescale es de 101 = Prescale es de 41X = Prescale es de 16
MODO PWM
En el modo de modulación por ancho de pulso, el pin CCPx produce una salida de PWM de hasta 10 bits de resolución. Dado que el pin CCP1 esta multiplexado con otras funciones en PORTC, el bit TRISC<2> debe ponerse a ‘0’ para hacer del pin CCP1 una salida.La salida PWM tiene un tiempo base (periodo) y un tiempo en el cual la salida permanece en estado ALTO (ciclo de trabajo, duty cycle). La frecuencia de la salida de PWM es el inverso del periodo (1/periodo).
Figura 2. Salida PWM
PERIODO PWMEl periodo del PWM se especifica mediante el registro PR2. El periodo del PWM puede calcularse mediante la siguiente ecuación:
Periodo PWM = [(PR2 + 1)] * 4 * TOSC * (Valor del Prescaler TMR2)
CICLO DE TRABAJO DEL PWM (DUTY CYCLE)El ciclo de trabajo del PWM se especifica en el registro CCPR1L y en los bits CCP1CON<5:4>. La siguiente ecuación permite encontrar el ciclo de trabajo en tiempo:
Ciclo de Trabajo PWM = (CCPR1L:CCP1CON<5:4>) * TOSC * (Valor del Prescaler TMR2)
PARA PARA CONFIGURACIÓN DEL PWM1) Establecer el periodo del PWM mediante el registro PR22) Establecer el ciclo de trabajo mediante el registro CCPR1L
y los bits CCP1CON<5:4>3) Definir como salida el pin CCP14) Establecer el Prescaler del TMR2 y habilitar el Timer2
mediante el registro T2CON5) Configurar el modulo CCP1 para operación del PWM