Autor Tema: PWM con 16F877A  (Leído 3103 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado alanitotkd

  • PIC10
  • *
  • Mensajes: 20
PWM con 16F877A
« en: 05 de Junio de 2011, 21:35:04 »
hola que tal, estoy haciendo un programa que me genere un pwm dependiendo de un valor de la lectura de un adc pero por mas que estoy buscando o que hago el codigo no me genera ningun pulso en la simulacion en proteus.. quisiera que alguien me ayude con este detalle mi codigo es el siguiente

#include "16f877A.h"
#device adc=10
#use delay(clock=4000000) // reloj 4 mhz
#fuses xt,nowdt,noput,nobrownout,noprotect

long time;
void main()
{

   setup_adc_ports(ALL_ANALOG);
   setup_adc(ADC_CLOCK_INTERNAL);
   setup_timer_0(RTCC_INTERNAL|RTCC_DIV_1);
   setup_timer_2(T2_DIV_BY_4,249,1);    // 1khz
   setup_ccp1(CCP_PWM);
   
   while (TRUE)
   {
   set_adc_channel(0);
   delay_us(20);
   time = read_adc()/2;
   set_pwm1_duty(time);
   
   }
}


si alguien me puediera ayudar lo agradeceria mucho ...

saludos

Desconectado Suky

  • Moderador Local
  • DsPIC33
  • *****
  • Mensajes: 6758
Re: PWM con 16F877A
« Respuesta #1 en: 05 de Junio de 2011, 21:39:38 »
A simple vista no se ve nada mal  :tongue: Podrías probarlo en hardware real. El PWM generado es de 10-bits, si divides el valor leido por ADC siempre el ciclo de trabajo será menor a 50%


Saludos!
No contesto mensajes privados, las consultas en el foro

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: PWM con 16F877A
« Respuesta #2 en: 06 de Junio de 2011, 00:45:57 »
el programa se ve bien, pero el proteus tiene un problema al simular el pwm, si quieres que se vea en proteus despues de cargar el valor del pwm borra el valor del timer2

set_pwm1_duty(xxx);
set_timer2(0);
"Nada es imposible, no si puedes imaginarlo"

Desconectado alanitotkd

  • PIC10
  • *
  • Mensajes: 20
Re: PWM con 16F877A
« Respuesta #3 en: 06 de Junio de 2011, 01:58:12 »
ya borre el timer2 pero auun asi no sale.  :?
si tienen un programa para este mismo pic o para el 16f876 con simulacion se los agradeceria les dejo una imagen de mi siimulacion.

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: PWM con 16F877A
« Respuesta #4 en: 06 de Junio de 2011, 02:18:13 »
te envio una simulacion, es tu codigo con unos pequeños cambios

http://www.4shared.com/file/WoQ7yl5S/pwm.html
"Nada es imposible, no si puedes imaginarlo"

Desconectado alanitotkd

  • PIC10
  • *
  • Mensajes: 20
Re: PWM con 16F877A
« Respuesta #5 en: 06 de Junio de 2011, 02:38:37 »
oooo correcto ... entonces solo era poner un delay despues de poner el timer2 a cero

la verdad te doy las gracias me quebre la cabeza analizando por que no salia..

por que es necesario ese delay? 

Desconectado rivale

  • Colaborador
  • PIC24H
  • *****
  • Mensajes: 1707
Re: PWM con 16F877A
« Respuesta #6 en: 06 de Junio de 2011, 02:46:06 »
tienes que darle un tiempo de espera entre lo que cambias de canal y haces la conversion, tambien si checas, le cambie el set_adc_channel, lo saque del while, si solo vas a usar uno, no tiene caso que lo estes escogiendo repetidamente
"Nada es imposible, no si puedes imaginarlo"

Desconectado alanitotkd

  • PIC10
  • *
  • Mensajes: 20
Re: PWM con 16F877A
« Respuesta #7 en: 06 de Junio de 2011, 02:54:06 »
tienes toda la razon, aunque al principio lo tenia dentro del main pero no me salia por el otro delay ,
muchas gracias jejeje me alegraste el domingo seguimos en contacto