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.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.