Calculador PWM
Este applet permite calcular los valores de los regitros necesarios
para configurar PWM por harware en microcontroladores PIC
El bit 2 de T2CON arranca/para el Timer2 que se usa en el PWM.
Hay que asegurarse de que que el pin correspondiente se configura como salida.
Ejemplo de uso
Este fragmento de codigo en C (SDCC) es un ejemplo de como usar los valores obtenidos.
Un Led conectado a la salida PWM1 se enciende y se apaga progresivamente.
Es necesaria una librería de retardos, la funcion delay_ms() podría ser otra.
void main()
{
// Hay que configurar pin PWM como salida, esto depende del modelo PIC
unsigned int duty_max = 0; // Poner valor obtenido en el applet
unsigned int duty = 0; // Variable usada para variar intensidad de led
PR2 = 0; // Poner valor obtenido en el applet
T2CON = 0; // Poner valor obtenido en el applet
CCP1CON = 0; // Poner valor obtenido en el applet
while( true )
{
for( duty=0; duty<=duty_max; duty++ ) // Enciende 0% - 100%
{
setDuty( duty );
delay_ms(10);
}
for( duty=duty_max; duty>=0; duty-- ) // Apaga 100% - 0%
{
setDuty( duty );
delay_ms(10);
}
}
}
void setDuty( unsigned int d ) // Esta funcion fija el duty por valor 0 - duty_max
{
CCP1CON,CCP1X = d,1;
CCP1CON,CCP1Y = d,0;
CCPR1L = d>>2;
}
void setDutyPc( unsigned char percent ) // Esta funcion fija el duty por % 0 - 100%
{
unsigned int d = percent*duty_max/100;
setDuty( d );
}
|