Ayuda control de servo por software

Estoy intentando controlar un servo por pwm. El pwm lo hago por software, primero lo intenté por hardware pero tube problemas y al no encontrar ejemplos para el pic que uso (16f88) lo hice por software, despues de leer y entender el funcionamiento del pwm (o eso creo), pero en el simulador proteus no me funciona el servo aunque en el osciloscopio(del mismo proteus) parece que el pwm está bien...
El programa es simple, hay 3 pulsadores y todos afectan a la misma salida, un pulsador tiene un duty de 0,7ms otro de 1,5ms y el ultimo de 2,3ms.
Aqui dejo el codigo en c:

Código:
#include <16f88.h>

#use delay(clock=4000000)

#fuses XT,NOWDT,NOPUT,NOPROTECT

#byte port_a=0x0005
#byte port_b=0x0006

void main( void )
{
set_tris_a(0b00000111);
set_tris_b(0);           
port_b = 0;                
port_a = 0;
DO{
if (input (PIN_A0)){          
	output_high(PIN_B1);
	delay_us(700);
	output_low(PIN_B1);
	delay_us(19300);   
  }
if (input (PIN_A1)){          
	output_high(PIN_B1);
	delay_us(1500);
	output_low(PIN_B1);
	delay_us(18500);   
  }
if (input (PIN_A2)){       
	output_high(PIN_B1);
	delay_us(2300);
	output_low(PIN_B1);
	delay_us(17700);   
  }


} while ( TRUE );
}
 
Última edición:
Creo que ya lo he solucionado, cuando tenga un poco de tiempo colgaré la solucion al problema y si puedo haré un pequeño tutorial de pwm por si alguien mas tiene problemas... pero antes tengo que assegurarme que domino el pwm...
 
Atrás
Arriba