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