miércoles, 20 de julio de 2016

Modulo CCP2

Con exclusión de los nombres diferentes de los registros y de los bits, este módulo es una muy buena copia del módulo CCP1 puesto en modo normal. La única diferencia significativa entre ellos es el funcionamiento en modo de comparación del módulo CCP2. La diferencia se refiere a la señal de reinicio del temporizador T1. Concretamente, si el convertidor A/D está habilitado, al igualarse los valores de los registros TMR1 y CCPR2, la señal de reinicio del temporizador T1 iniciará automáticamente la conversión A/D. Similar al módulo anterior, este circuito también está bajo el control de los bits del registro de control. Esta vez es el registro CCP2CON.
al-mundo-de-los-microcontroladores-chapter-03-fig3-73

Registro CCP2CON

al-mundo-de-los-microcontroladores-chapter-03-fig3-74
DC2B1, DC2B0 – PWM Duty Cycle Least Significant bits (bits menos significativos del ciclo de trabajo de PWM) – Se utilizan sólo en modo PWM y representan dos bits menos significativos de un número de 10 bits. Este número determina el ciclo de trabajo de la señal PWM. Los demás 8 bits se almacenan en el registro CCPR2L.
CCP2M3 – CCP2M0 – CCP2 Mode Select bits (bits de selección de modo del módulo CCP2) determina el modo del módulo CCP2.
CCP2M3CCP2M2CCP2M1CCP2M0MODO
0000Módulo está deshabilitado (reinicio).
0001No utilizado.
0010No utilizado.
0011No utilizado.
0100Modo de Captura
Cada flanco descendente en el pin CCP2.
0101Modo de Captura
Cada flanco ascendente en el pin CCP2.
0110Modo de Captura
Cada cuarto flanco ascendente en el pin CCP2.
0111Modo de Captura
Cada decimosexto flanco ascendente en el pin CCP2.
1000Modo de comparación
La salida y el bit CCP2IF se ponen a 1 al ocurrir una coincidencia.
1001Modo de comparación
La salida se pone a 0 y el bit CCP2IF se pone a 1 al ocurrir una coincidencia
1010Modo de comparación
Se produce una interrupción, el bit CCP2IF se pone a 1 y no hay cambio el pin CCP2 pin al ocurrir una coincidencia.
1011Modo de comparación
Al ocurrir una coincidencia, el bit CCP2IF se pone a 1, los registros del temporizador 1 se borran y la conversión A/D se inicia si el convertidor A/D está habilitado.
11xxModo PWM

¿Cómo configurar e iniciar el módulo CCP1 para funcionar en modo PWM?

Para configurar e iniciar el módulo CCP1 para funcionar en modo PWM, siga los siguientes pasos:
  • Deshabilitar el pin de salida del CCP1. Deberá estar configurado como entrada.
  • Seleccionar el período de señal PWM al introducir el valor en el registro PR2.
  • Configurar el módulo CCP1 para funcionar en modo PWM al combinar los bits del registro CCP1CON.
  • Ajustar el ciclo de trabajo de señal PWM al introducir el valor en el registro CCPR1L y al utilizar los bits DC1B1 y DC1B0 del registro CCP1CON.
  • Configurar e iniciar el temporizador Timer2:
    • Poner a cero el bit de bandera de interrupción TMR2IF en el registro PIR1
    • Ajustar el valor de división de frecuencia del temporizador Timer2 por los bits
    • T2CKPS1 y T2CKPS0 del registro T2CON.
    • Iniciar el temporizador Timer2 al poner a uno el bit TMR2ON del registro T2CON.
  • Habilitar los pines de salida de PWM después de que haya sido acabado un ciclo de PWM:
    • Esperar el desbordamiento del temporizador Timer2 (el bit TMR2IF del registro PIR1 se pone a uno)
    • Configurar el pin apropiado como salida al poner a cero el bit en el registro TRIS.

Modulo CCP1

Una parte central de este circuito es un registro CCPR1 de 16 bits que consiste en registros CCPR1L y CCOR1H. Se utiliza para capturar y comparar sus valores con los números almacenados en el registro del temporizador Timer1 (TMR1H y TMR1L).
al-mundo-de-los-microcontroladores-chapter-03-fig3-65
Si está habilitado por software, puede ocurrir el reinicio del temporizador Timer1 al igualarse los valores en modo de Comparación. Además, el módulo CCP1 puede generar señales PWM de frecuencia y de ciclo de trabajo variados.
Los bits del registro CCP1CON están en control del módulo CCP1.

CCP1 EN MODO DE CAPTURA

En este modo, el registro del temporizador Timer1 (que consiste en los TMR1H y TMR1L) se copia al registro CCP1 (que consiste en los CCPR1H y CCPR1L) en las siguientes situaciones:
  • Cada flanco ascendente (1 -> 0) en el pin RC2/CCP;
  • Cada flanco descendente (0 -> 1) en el pin RC2/CCP1;
  • Cada cuarto flanco ascendente (0 -> 1) en el pin RC2/CCP1; y
  • Cada decimosexto flanco descendente (0 -> 1) en el pin RC2/CCP1.
Una combinación de cuatro bits (CCP1M3 – CCP1M0) del registro de control determina cuál de estos eventos causará transmisión de dato de 16 bits. Además, se deben cumplir los siguientes requisitos::
  • El pin RC2/CCP1 debe estar configurado como entrada; y
  • El Timer1 debe funcionar como temporizador o contador síncrono.
al-mundo-de-los-microcontroladores-chapter-03-fig3-66
El bit de bandera CCP1IF se pone a uno después de acabar la captura. Si se pone a 1 el bit CCP1IE del registro PIE1, se producirá una interrupción.
En caso de que el módulo CCP1 esté en modo de captura, puede producirse una interrupción no deseada. Para evitarlo, antes de que ocurra un cambio en el registro de control se deben poner a 0 tanto el bit que habilita la interrupción CCP1IE, como el bit de bandera CCP1IF.
Las interrupciones no deseadas pueden producirse al cambiar el valor del pre-escalador. Para evitarlo, el módulo CCP1 debe estar apagado temporalmente antes de cambiar el valor del pre-escalador.
CCP1 EN MODO DE COMPARACIÓN
En este modo, el valor almacenado en el registro CCP1 se compara constantemente al valor almacenado en el registro del temporizador Timer1. Al igualarse los valores, el estado lógico en el pin de salida puede ser cambiado, lo que depende del estado de bits en el registro de control (CCP1M3 – CCP1M0). El bit de bandera CCP1IF se pone a uno simultáneamente.
al-mundo-de-los-microcontroladores-chapter-03-fig3-67
Para poner el módulo CCP1 en este modo de funcionamiento, se deben cumplir dos condiciones:
  • El pin RC2/CCP1 debe estar configurado como salida; y
  • El temporizador Timer1 debe estar sincronizado con el reloj interno.

CCP1 EN MODO PWM

Las señales de frecuencia y de ciclo de trabajo variados tienen una amplia gama de aplicaciones en automatización. Un ejemplo típico es un circuito de control de potencia. Refiérase a la siguiente figura. Si un cero lógico (0) indica un interruptor abierto y un uno lógico (1) indica un interruptor cerrado, la potencia eléctrica que se transmite a los consumidores será directamente proporcional a la duración del pulso. Esta relación se le denomina Ciclo de Trabajo.
al-mundo-de-los-microcontroladores-chapter-03-fig3-68
El otro ejemplo, común en la práctica, es el uso de señales PWM en un circuito para generar señales de forma de onda arbitraria como una onda sinusoidal. Vea la siguiente figura:
al-mundo-de-los-microcontroladores-chapter-03-fig3-69
Los dispositivos que funcionan según este principio se utilizan con frecuencia en la práctica como variadores de frecuencia ajustable que controlan motores eléctricos (velocidad, aceleración, desaceleración etc.)
al-mundo-de-los-microcontroladores-chapter-03-fig3-70
La Figura anterior muestra el diagrama de bloques del módulo CCP1 puesto en el modo PWM. Para generar un pulso de forma arbitraria en el pin de salida, es necesario ajustar el período de pulsos (frecuencia) y la duración de pulsos.
al-mundo-de-los-microcontroladores-chapter-03-fig3-71

PERÍODO DE PWM

El período de pulso de salida (T) se determina por el registro PR2 del temporizador Timer2. El período de PWM se puede calcular por la siguiente ecuación:
Período PWM = (PR2 +1) * 4Tosc * Valor de pre-escala del Timer2
Si el período de PWM (T) es conocido, es fácil determinar la frecuencia de señal F, porque estos dos valores están relacionados por la ecuación F=1/T.

CICLO DE TRABAJO DE PWM

El ciclo de trabajo de PWM se especifica al utilizar en total 10 bits: los ocho bits más significativos del registro CCPR1L y los dos bits menos significativos adicionales del registro CCP1CON (DC1B1 y DC1B0). El resultado es un número de 10 bits dado por la siguiente fórmula:
Ancho de pulsos = (CCPR1L,DC1B1,DC1B0) * Tosc * Valor de pre-escala del Timer2
La siguiente tabla muestra cómo generar las señales PWM de diferentes frecuencias cuando el microcontrolador utiliza un cristal de cuarzo de 20 MHz (Tosc=50nS).
FRECUENCIA [KHZ]1.224.8819.5378.12156.3208.3
Pre-escalador del TMR21641111
Registro PR2FFhFFhFFh3Fh1Fh17h
Notas adicionales:
  • El pin de salida se va a poner a 1 constantemente, si por error el ancho de pulso generado es más largo que el período de PWM.
  • En esta aplicación, no se puede utilizar el post-escalador del temporizador Timer2 para generar períodos de PWM largos.

RESOLUCIÓN DE PWM

Una señal PWM no es nada más que una secuencia de pulsos que varían su ciclo de trabajo. Para una frecuencia específica (número de pulsos por segundo), hay un número limitado de combinaciones de ciclos de trabajo. Este número representa una resolución medida en bits. Por ejemplo, si una resolución es de 10 bits estarán disponibles 1024 ciclos de trabajo discretos; si una resolución es de 8 bits estarán disponibles 256 ciclos de trabajo disretos etc. En este microcontrolador la resolución es determinada por el registro PR2. El máximo valor se obtiene al usar el número FFh.
Registro CCP1CON
al-mundo-de-los-microcontroladores-chapter-03-fig3-72
P1M1, P1M0 – PWM Output Configuration bits (bits de configuración del modo PWM) – El pin P1A es la entrada del módulo de Captura/Comparación en todos los modos, menos en modo PWM. Los pines P1B, P1C y P1D actúan como los pines de E/S del puerto D.
En modo PWM estos bits afectan al funcionamiento del módulo CCP1 como se muestra en la siguiente tabla:
P1M1P1M0MODO
00PWM con una sóla salida
Por el pin P1A sale una señal modulada.
Pines P1B, P1C y P1D son entradas/salidas del puerto D.
01Configuración Full Bridge – Forward
(puente completo con salida directa)
Por el pin P1D sale una señal modulada.
Por el pin P1D sale una señal modulada.
Pines P1B y P1C están inactivos.
10Configuración Half Bridge (medio-puente)
Por los pines P1A y P1B sale una señal modulada.
Pines P1C y P1D son entradas/salidas del puerto D.
11Configuración Full Bridge – Reverse
(puente completo con salida inversa)
Por el pin P1B sale una señal modulada.
Pin P1C está activo.
Pines P1A y P1D están inactivos.
DC1B1, DC1B0 – PWM Duty Cycle Least Significant bits (bits menos significativos del ciclo de trabajo de PWM) – Se utilizan sólo en el modo PWM y representan dos bits menos significativos de un número de 10 bits. Este número determina el ciclo de trabajo de la señal PWM. Los demás 8 bits se almacenan en el registro CCPR1L.
CCP1M3 – CCP1M0 – (bits de selección de modo del módulo CCP1) determina el modo del módulo CCP1.
CCP1M3CCP1M2CCP1M1CCP1M0MODO
0000Módulo está deshabilitado (reinicio).
0001No utilizado.
0010Modo de comparación
El bit CCP1IF bit se pone a 1 al ocurrir una coincidencia.
0011No utilizado.
0100Modo de captura
Cada flanco descendente en el pin CCP1.
0101Modo de captura
Cada flanco ascendente en el pin CCP1.
0110Modo de captura
Cada cuarto flanco ascendente en el pin CCP1.
0111Modo de captura
Cada decimosexto flanco ascendente en el pin CCP1.
1000Modo de comparación
La salida y el bit CCP1IF se ponen a 1 al ocurrir una coincidencia
1001Modo de comparación
La salida se pone a 0 y el bit CCP1IF se pone a 1 al ocurrir una coincidencia.
1010Modo de comparación
Llega la solicitud de interrupción y el bit CCP1IF se pone a 1 al ocurrir una coincidencia
1011Modo de comparación
El bit CCP1IF se pone a 1, y los registros de temporizadores 1 o 2 se borran al ocurrir una coincidencia
1100Modo PWM
Pines P1A y P1C están activos a nivel alto.
Pines P1B y P1D están activos a nivel alto.
1101Modo PWM
Pines P1A y P1C están activos a nivel alto.
Pines P1B y P1D están activos a nivel bajo.
1110Modo PWM
Pines P1A y P1C están activos a nivel bajo.
Pines P1B y P1D están activos a nivel alto.
1111Modo PWM
Pines P1A y P1C están activos a nivel bajo.
Pines P1B y P1D están activos a nivel bajo.