TODOPIC
Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: spaceluis en 11 de Marzo de 2013, 12:42:39
-
k tal amigos pues he estado tratando de configurar un pwm por software para controlar leds RGB pero bueno primero lo primero que es generar los PWM ahorita no busco generar correctamente los anchos de pulso ni las frecuencias correctas únicamente poder controlar el ancho de pulso osea generar correctamente las señales y poder manipular el valor del ancho de pulso.
el codigo que tengo hasta ahorita es el siguiente
#include <16f877A.h>
#fuses NOWDT,HS
#use delay(clock=4000000)
int sube,t;
//float alto=0,bajo=0;
#INT_TIMER1
VOID INTERRUPCION1(void)
{
set_timer1(64536);
sube++;
if(sube==1)
{
output_high(pin_b1);
t=0;
}
if(sube==60)
{ t++;
output_low(pin_b1);
if (t==19940)
{
sube=0;
}
}
}
void main()
{
setup_timer_1(t1_internal|t1_div_by_1);
set_timer1(64536);
enable_interrupts(INT_TIMER1);
enable_interrupts(global);
INTERRUPCION1();
}
lo que estoy tratando de hacer es que con cada desborde de 10 ms del timer incremente la varibale "sube" con el primer desborde enciendo el "pin_b1" y al llegar a cierto lo apago, el problema es que me generara una señal mas o menos cuadrada entonces no se de que manera hacer que la señal salga con la forma correcta , asi que agradecería ayuda.
(http://C:\Users\PEPE\Pictures\RGB.PNG)
pd. trate de adjuntar la foto de la simulación de la señal pero al poner la dirección donde esta guardada no me apareció la foto.
-
amigos encontre el error mientras escribia mi pregunta pero no supe como borrar el mensaje si me dicen como se los agradesco jajaj sorry
-
amigos encontre el error mientras escribia mi pregunta pero no supe como borrar el mensaje si me dicen como se los agradesco jajaj sorry
arriba a la derecha de tu post esta el boton de MODIFICAR.....
-
Dale una mirada a este por:
http://www.todopic.com.ar/foros/index.php?topic=25995.0
Creo puede servirte en el post de BrunoF
char step, pwm1,pwm2,pwm3;
step=1;
pwm1=128;
pwm2=64;
pwm3=250;
while(1){
if(pwm1>=step) output_high(pin_b0) else output_low(pin_b0);
if(pwm2>=step) output_highpin_b1) else output_low(pin_b1);
if(pwm3>=step) output_high(pin_b2) else output_low(pin_b2);
//delay_us(xxx);
step++; //incrementar paso
if(!step) step++; //si step==0, step=1
}
-
Dale una mirada a este por:
http://www.todopic.com.ar/foros/index.php?topic=25995.0
Creo puede servirte en el post de BrunoF
char step, pwm1,pwm2,pwm3;
step=1;
pwm1=128;
pwm2=64;
pwm3=250;
while(1){
if(pwm1>=step) output_high(pin_b0) else output_low(pin_b0);
if(pwm2>=step) output_highpin_b1) else output_low(pin_b1);
if(pwm3>=step) output_high(pin_b2) else output_low(pin_b2);
//delay_us(xxx);
step++; //incrementar paso
if(!step) step++; //si step==0, step=1
}
hey gracias pero ya solucione ese problema que amable