# PWM con pic18f4550 y pic c



## coope01 (Jul 13, 2014)

Muy buenas tardes, necesito un favor. Como se configura el PWM del pic18f4550 con el pic c (PCWHD), he tratado de configurarlo y el pin 17 (CCP1/RC2) arranca con 5 voltios y se mantien siempre ahi, deseo controlarlo con un slider desne netbeans. Gracias ...


----------



## TRILO-BYTE (Jul 13, 2014)

para configurar los timer de los modulos CCP debes configurar el timer0 el timer 0 dicta a los modulos la frecuencia con la que hara el PWM y la resulucion del PWM lo marcas en el modulo CCP

pera mover el USB del Pic C nunca lo he movido solo en C18
pero por lo que veo siempre tienen conexion por CDC o sea un puerto serie emulado

para hacerlo en modo HID hay que moverle al USB descriptor para que sea reconocido como un dispositivo HID pero hacer la interfaz desde la PC va ser otro show

te dejo un ejemplo del PWM con Pic C

este PWM el ciclo util lo modificas con el ADC no me acuerdo como va solo lo copie de mis viejos proyectos


void main()
{

unsigned int16 duty_cicle;


setup_adc_ports(ALL_ANALOG);
setup_adc(ADC_CLOCK_INTERNAL);

setup_ccp1(CCP_PWM);

set_adc_channel(1); //uso el puerto en A0
//   The cycle time will be (1/clock)*4*t2div*(period+1)
          //   In this program clock=10000000 and period=127 (below)
          //   For the three possible selections the cycle time is:
          //     (1/10000000)*4*1*128 =  51.2 us or 19.5 khz
          //     (1/10000000)*4*4*128 = 204.8 us or 4.9 khz
          //     (1/10000000)*4*16*128= 819.2 us or 1.2 khz

setup_timer_2(T2_DIV_BY_16, 75, 1);





for(;
{




delay_us(2);        //retardo de 5 us
duty_cicle=read_adc();   //el ADC se guarda en leido

//duty_cicle = 258; // [408/(4*(128+1))]=0.5=50%
set_pwm1_duty(duty_cicle);



} 


}


----------



## coope01 (Jul 14, 2014)

Muchas gracias Trilo por tu repuesta. Tengo un mayor interes en poder controlar el pwm con un slider desde netbeans. la conexion por usb ya la tengo y funciona muy bien, solo que el voltaje del pin por donde sale la señal pwm se mantiene siempre en 5 voltios


----------



## TRILO-BYTE (Jul 14, 2014)

hoo ya entonces ya lo tienes mas facil

como vez el timer0 depende mucho de como configures el reloj del pic y sus PLL debes tener en cuenta el PLL

aveces uno se olvida yo cuando se me olvida como va saco por un pin togleando la señal y puedo ver a que velocidad corre mi interrupcion de timer0 con el osciloscopio.

ahora si no tomas en cuenta los fuses PLL tendras problema en sacar la señal
recuerda que correra a 48Mhz si usas bootloader aunque configures los PLL
eso se corrige remapeando vectores

saludos


----------



## coope01 (Jul 14, 2014)

nuevamente te agradezco, vamos a ponernos en eso a ver como nos va. Un cordial saludo


----------

