TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: alanitotkd 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
-
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!
-
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);
-
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.
-
te envio una simulacion, es tu codigo con unos pequeños cambios
http://www.4shared.com/file/WoQ7yl5S/pwm.html
-
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?
-
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
-
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