PWM con PIC16F877A: Modulos y Registros Involucrados

31,782 views 14 slides Apr 23, 2013
Slide 1
Slide 1 of 14
Slide 1
1
Slide 2
2
Slide 3
3
Slide 4
4
Slide 5
5
Slide 6
6
Slide 7
7
Slide 8
8
Slide 9
9
Slide 10
10
Slide 11
11
Slide 12
12
Slide 13
13
Slide 14
14

About This Presentation

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


Slide Content

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 CCP1 El 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 CCP2 El 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 CCP Recurso Temporizador Captura Timer1 Comparación Timer1 PWM Timer2 Tabla 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 CCP2CON Registros para la configuración de los módulos CCP1 y CCP2 respectivamente en modo Captura, Comparación o PWM . CCPR1L y CCPR2L Registros para controlar el ciclo de trabajo de cada onda PWM . CCPR1H y CCPR2H Funcionan como registros imagen de los dos anteriores, pero no pueden ser accedidos directamente. TMR2, PR2 y T2CON Son 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 implementar Se leen como ‘0’ Bit 5-4 CCPxX:CCOxY Solo 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:CCPxM0 Bits de selección para el modo del modulo CCPx 0000 = Modo Captura/Comparación/ PWM inhabilitados ( Reset modulo CCPx ) 0100 = Modo Captura, cada flanco de bajada 0101 = Modo Captura, cada flanco de subida 0110 = Modo Captura, cada 4 flancos de subida 0111 = Modo Captura, cada 16 flancos de subida 1000 = 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 TIMER 2 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 (F OSC /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 implementar Se lee como ‘0’ Bit 6-3 TOUTPS3:TOUTPS0 Bits de selección para el postscale de salida del Timer2 0000 = 1:1 0001 = 1:2 0010 = 1:3 0011 = 1:4 0100 = 1:5 . . . 1111 = 1:16

Bit 2 TMR2ON Bit de encendido del Timer2 1 = Timer2 esta encendido 0 = Timer2 esta apagado Bit 1 T2CKPS1:T2CKPS0 Bits de selección de prescale para el reloj del Timer2 00 = Prescale es de 1 01 = Prescale es de 4 1X = 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 PWM El 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 * T OSC * (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>) * T OSC * (Valor del Prescaler TMR2)

PARA PARA CONFIGURACIÓN DEL PWM Establecer el periodo del PWM mediante el registro PR2 Establecer el ciclo de trabajo mediante el registro CCPR1L y los bits CCP1CON<5:4> Definir como salida el pin CCP1 Establecer el Prescaler del TMR2 y habilitar el Timer2 mediante el registro T2CON Configurar el modulo CCP1 para operación del PWM