PWM con PIC16F877A: Modulos y Registros Involucrados

14
GENERACIÓN DE PWM CON MICROCONTROLADOR

description

Configuración de los modulos y registros del microcontrolador PIC16F877A para usar el PWM.

Transcript of PWM con PIC16F877A: Modulos y Registros Involucrados

Page 1: PWM con PIC16F877A: Modulos y Registros Involucrados

GENERACIÓN DE PWM CON MICROCONTROLADOR

Page 2: PWM con PIC16F877A: Modulos y Registros Involucrados

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.

Page 3: PWM con PIC16F877A: Modulos y Registros Involucrados

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.

Page 4: PWM con PIC16F877A: Modulos y Registros Involucrados

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.

Page 5: PWM con PIC16F877A: Modulos y Registros Involucrados

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.

Page 6: PWM con PIC16F877A: Modulos y Registros Involucrados

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.

Page 7: PWM con PIC16F877A: Modulos y Registros Involucrados

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

Page 8: PWM con PIC16F877A: Modulos y Registros Involucrados

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.

Page 9: PWM con PIC16F877A: Modulos y Registros Involucrados

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

Page 10: PWM con PIC16F877A: Modulos y Registros Involucrados

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

Page 11: PWM con PIC16F877A: Modulos y Registros Involucrados

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

Page 12: PWM con PIC16F877A: Modulos y Registros Involucrados

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

Page 13: PWM con PIC16F877A: Modulos y Registros Involucrados

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)

Page 14: PWM con PIC16F877A: Modulos y Registros Involucrados

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