Vous êtes sur la page 1sur 2

PWM con un pic16f876 a 4mhz (Similar a PIC16877).

Básicamente utilizo los 2 pwm qu


e tiene el pic por hardware. Realizando lo siguiente.
================================================================================
================================================================================
==============================
//**********Funciones Usadas*************

void pwm1_send(unsigned int valor);


void pwm2_send(unsigned int valor);
void main() {
TRISB=3;
TRISC=0;
PORTB=0;
PORTC=0;
//Habilito TMR0
TMR0=0;
OPTION_REG=135; //Configuro preescaler de TMR0

//****************PWM 1 Volt**********************************
T2CON=1; //PreScaler 4
PR2=249; //PR2 249, parA 1KHZ
//PWM1 RC2
CCPR1L=0; //Ancho del Ciclo debe ser 1ms
CCP1CON=12;
//PWM2 RC1
CCPR2L=0; //Ancho del Ciclo debe ser 1ms
CCP2CON=12;
TMR2ON=1;//Tmr2 Encendido

while(1) {
if ((RB0==0)|(pwm_Volt<=1023) {pwm_Volt+=10;}
if ((RB1==0)|(pwm_Volt>=10) {pwm_Volt-=10;}
pwm1_send(pwm_Volt); //Pwm Voltaje
pwm2_send(204); // Pwm Amp
}
}
/*****************PWM 1 RC2****************/
void pwm1_send(unsigned int valor)
{
unsigned char temp,temp1 ;
temp=valor>>2;
temp1=(valor & 0x03)<<4;
//******Valor de PWM*******
CCPR1L=temp;
CCP1CON=temp1|12;
//************************
}
/******PWM 2 RC1****************/
void pwm2_send(unsigned int valor)
{
unsigned char temp,temp1 ;
temp=valor>>2;
temp1=(valor & 0x03)<<4;
//******Valor de PWM*******
CCPR2L=temp;
CCP2CON=temp1|12;
//************************
}

=================================================================
Este es un ejemplo que trate de adaptar para que veas el uso de las 2 pwm RC1 y
RC2. este pwm trabaja a una frecuencia de 1Kz utilizando 10bit de precisión.. si n
ecesitas modificar la frecuencia solo ve esta pagina que trate un calculador par
a modificar los registros

Vous aimerez peut-être aussi