Programar en CCS un servomotor hitec hs-755hb

hola amigos del foro tengo dudas de como mover un servo hitec hs-755hb, según las espesificaciones este servo va desde -90° con 600us, 0° con 1500us y 90 con 2400us, estoy utilizando la interrupcion Timer1, utilizo un krystal de 4Mhz y según la formula del desborde calculando que se desborde a cada 50 us, me da que debo de cargar al timer1 con 65486.

según el timer1 se desborda a cada 50us y con esto creo una variable para que se desbor de a 600us, 1500us y 2400us, pero nada de esto me funciona
le adjunto mi código, si alguien me puede orientar se lo agradeceria.


Código:
#include<18f4455.h>                                                  
#fuses NOWDT,XT                                                     
#use delay(clock=4Mhz)                                              

int16 Pulso_pwm1 = 0;
INT8 PWM1 = 0,i=0;

#INT_TIMER1
void Generacion_pwm1() 
   { 
   pulso_pwm1++;  
   if(Pulso_pwm1==200){
      output_high(PIN_A3);
      pulso_pwm1=0;
   }
   
   if(Pulso_pwm1 == PWM1){
      output_low(PIN_A3);
   }
   set_timer1(65486);delay_us(10);
   //set_timer1(65486);
   }

   

void main(){

  setup_timer_1(T1_DIV_BY_1 | T1_INTERNAL);           //Interrupción generación PWM.   
  enable_interrupts(INT_TIMER1);  
  enable_interrupts(GLOBAL);
   
   while(true){    
  
  
   PWM1=12;     // para 600us
   delay_ms(50);
 PWM1=30;    // para 1500us
   delay_ms(50);
   PWM1=48; // para 2400 us
   delay_ms(50);
}

con estos valores se debe mover hacia un extremo el servo, luego al centro y al otro extremo, pero nada de esto me funciona.

el servo gira desde el inicio al final y se queda temblando

que estoy haciendo mal o que debo de hacer?
 
Atrás
Arriba