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