PWM con PIC16F877A: Modulos y Registros Involucrados
-
Upload
eduardo-henriquez -
Category
Documents
-
view
16.338 -
download
2
description
Transcript of PWM con PIC16F877A: Modulos y Registros Involucrados
![Page 1: PWM con PIC16F877A: Modulos y Registros Involucrados](https://reader033.fdocument.pub/reader033/viewer/2022061514/558782a5d8b42a8f7d8b45b7/html5/thumbnails/1.jpg)
GENERACIÓN DE PWM CON MICROCONTROLADOR
![Page 2: PWM con PIC16F877A: Modulos y Registros Involucrados](https://reader033.fdocument.pub/reader033/viewer/2022061514/558782a5d8b42a8f7d8b45b7/html5/thumbnails/2.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022061514/558782a5d8b42a8f7d8b45b7/html5/thumbnails/3.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022061514/558782a5d8b42a8f7d8b45b7/html5/thumbnails/4.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022061514/558782a5d8b42a8f7d8b45b7/html5/thumbnails/5.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022061514/558782a5d8b42a8f7d8b45b7/html5/thumbnails/6.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022061514/558782a5d8b42a8f7d8b45b7/html5/thumbnails/7.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022061514/558782a5d8b42a8f7d8b45b7/html5/thumbnails/8.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022061514/558782a5d8b42a8f7d8b45b7/html5/thumbnails/9.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022061514/558782a5d8b42a8f7d8b45b7/html5/thumbnails/10.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022061514/558782a5d8b42a8f7d8b45b7/html5/thumbnails/11.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022061514/558782a5d8b42a8f7d8b45b7/html5/thumbnails/12.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022061514/558782a5d8b42a8f7d8b45b7/html5/thumbnails/13.jpg)
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](https://reader033.fdocument.pub/reader033/viewer/2022061514/558782a5d8b42a8f7d8b45b7/html5/thumbnails/14.jpg)
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