TODOPIC

Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: fastyx en 16 de Enero de 2006, 20:34:00

Título: como se definen 2 pwm en el mismo pic?
Publicado por: fastyx en 16 de Enero de 2006, 20:34:00
como se hace para entrar con 2 analogicas en ano y an1 y salir con pwm1 pwm2
en pines distintos?

lo que necesito hacer es entrar con una continua en an0 y otra continua en an1
y en funcion de esos valores que cambie el pwm en ccp1 y ccp2(pic16f873)

no encuentro como definir la instruccion de setup_adc_ports(an1)

desde ya gracias
Título: RE: como se definen 2 pwm en el mismo pic?
Publicado por: Arlequin en 30 de Enero de 2006, 01:03:00
Primero en el encabezado debes setear el número de bits en la adquisición:

#device ADC=10                // Seteo del ADC para 10Bits

Después en el main debes setear el adc, timer2 (base de tiempo para pwm) y el pwm:

setup_adc_ports (ALL_ANALOG);      // toda analógicas
setup_adc(ADC_CLOCK_INTERNAL); // a clock interno

setup_ccp1(CCP_PWM);    //ccp1 modo PWM
setup_ccp2(CCP_PWM);   //ccp2 modo PWM

setup_timer_2(T2_DIV_BY_16, 127, 1);    // 488Hz (con XT=4MHz) esta frecuencia la podes variar cambiando los valores, fijate en el datasheet del micro que uses, que vienen las relaciones para calcular lo inherente a la frecuencia y al duty.

Por último, por ejemplo, en un bucle tomas los valores del ADC y seteas con los mismos el ancho del PWM:

   set_adc_channel(0);  // seteo del canal 0 del ADC
   valor1 = read_adc();  // Lectura del canal 0 y se guarda en variable valor1
   
  set_adc_channel(1);  // seteo del canal 1 del ADC
  valor2= read_adc();  // Lectura del canal 1 y se guarda en variable valor2
   
set_pwm1_duty(valor1);  // Se cambia el ancho con el valor obtenido en canal 0.
set_pwm2_duty(valor2);  // Se cambia el ancho con el valor obtenido en canal 1.

Espero que te sea de utilidad.
Título: RE: como se definen 2 pwm en el mismo pic?
Publicado por: fastyx en 30 de Enero de 2006, 04:52:00
gracias !!!
lo voy a aprender...loco