PS2, PS1, PS0 Prescaler Rate Select bits (bit selector del valor del divisor de frecuencia)
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.
Frecuencias y resoluciones de PWM (Fosc = 20MHz):
Frecuencia de PWM 1.22kHz 4.88kHz 19.53kHz 78.12kHz 156.3kHz 208.3kHz Pre-escala del
temporizador 16 4 1 1 1 1
Valor del PR2 FFh FFh FFh 3Fh 1Fh 17h
Resolución máxima 10 10 10 8 7 6
Frecuencias y resoluciones de PWM (Fosc = 8MHz):
Frecuencia del PWM 1.22kHz 4.90kHz 19.61kHz 76.92kHz 153.85kHz 200.0kHz Pre-escala del
Valor del PR2 65h 65h 65h 19h 0Ch 09h
Resolución máxima 8 8 8 6 5 5
Vamos a hacerlo en mikroC...
/* En este ejemplo, el módulo PWM está inicializado y ajustado para producir una secuencia
de pulsos de ciclo de trabajo del 50%. Para este propósito, se utilizan las funciones
PWM1_Init(), PWM1_Start() y PWM1_Set_Duty(). Todas las funciones las contiene la librería
PWM del mikroC PRO for PIC. Sólo es necesario copiarlas al programa */ unsigned short duty_c; // Definir la variable duty_c
void initMain() {
ANSEL = ANSELH = 0; // Todos los pines de E/S se configuran como digitales
PORTC = TRISC = 0; // Estado inicial de los pines de salida del puerto PORTC
PWM1_Init(5000); // Inicialización del módulo PWM (5KHz) }
void main() { initMain();
duty_c = 127; // Valor inicial del ciclo de trabajo PWM1_Start(); // Iniciar el módulo PWM1
PWM1_Set_Duty(duty_c); // Ajustar el ciclo de trabajo de PWM al 50% ...
...
Registro CCP1CON
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:
P1M1 P1M0 Modo
0 0
PWM 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. 0 1 Configuració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.
1 0
Configuració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.
1 1
Configuració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.
CCP1M3 CCP1M2 CCP1M1 CCP1M0 Modo
0 0 0 0 Módulo está deshabilitado (reinicio).
0 0 0 1 No utilizado.
0 0 1 0
Modo de comparación
El bit CCP1IF bit se pone a 1 al ocurrir una coincidencia.
0 0 1 1 No utilizado.
0 1 0 0 Modo de captura
Cada flanco descendente en el pin CCP1.
0 1 0 1 Modo de captura
Cada flanco ascendente en el pin CCP1.
0 1 1 0
Modo de captura
Cada cuarto flanco ascendente en el pin CCP1.
0 1 1 1
Modo de captura
Cada decimosexto flanco ascendente en el pin CCP1.
1 0 0 0
Modo de comparación
La salida y el bit CCP1IF se ponen a 1 al ocurrir una coincidencia
1 0 0 1
Modo de comparación
La salida se pone a 0 y el bit CCP1IF se pone a 1 al ocurrir una coincidencia.
1 0 1 0 Modo de comparación
Llega la solicitud de interrupción y el bit CCP1IF se pone a 1 al ocurrir una
coincidencia
1 0 1 1
Modo de comparación
El bit CCP1IF se pone a 1, y los registros de temporizadores 1 o 2 se borran al ocurrir una coincidencia
1 1 0 0
Modo PWM
Pines P1A y P1C están activos a nivel alto. Pines P1B y P1D están activos a nivel alto.
1 1 0 1
Modo PWM
Pines P1A y P1C están activos a nivel alto. Pines P1B y P1D están activos a nivel bajo.
1 1 1 0
Modo PWM
Pines P1A y P1C están activos a nivel bajo. Pines P1B y P1D están activos a nivel alto.
1 1 1 1
Modo PWM
Pines P1A y P1C están activos a nivel bajo. Pines P1B y P1D están activos a nivel bajo.
MÓDULO 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.
Registro CCP2CON
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.
CCP2M3 CCP2M2 CCP2M1 CCP2M0 Modo
0 0 0 0 Módulo está deshabilitado (reinicio).
0 0 0 1 No utilizado.
0 0 1 0 No utilizado.
0 0 1 1 No utilizado.
0 1 0 0 Modo de Captura
Cada flanco descendente en el pin CCP2.
0 1 0 1 Modo de Captura
Cada flanco ascendente en el pin CCP2.
0 1 1 0
Modo de Captura
Cada cuarto flanco ascendente en el pin CCP2.
0 1 1 1
Modo de Captura
Cada decimosexto flanco ascendente en el pin CCP2.
1 0 0 0
Modo de comparación
La salida y el bit CCP2IF se ponen a 1 al ocurrir una coincidencia.
1 0 0 1
Modo de comparación
La salida se pone a 0 y el bit CCP2IF se pone a 1 al ocurrir una coincidencia
1 0 1 0
Modo 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.
1 0 1 1 Modo 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.
1 1 x x Modo PWM