Hola!!
Estoy implementando una funcion sencillita para el control de la potencia de un motor a traves de una señal PWM, pero en cuanto la potencia pasa del 30% se me resetea el PIC y no logro superar este punto.
Por supuesto la salida la tengo a un transistor, y el pulsador a traves de una resistencia a masa y unido al positivo, asi que el tema hardware lo descarto en principio.
A ver si algun genio me puede ayudar, por cierto en Proteus funciona perfecto, pero la realidad...falla
#INT_RA // Interrupcion cambio estado RA
void Leo_pulsador(){
output_low(MOTOR); // Apago el motor mientras pulso
if(input(PULSADOR)) { // Funcion antirrebote en pulsador
while(input(PULSADOR)) output_high(LED); // Indico pulsacion del pulsador en Leds
delay_ms(1); // Evito picos pulsador (antirrebote)
if (PWM < 100) PWM = PWM + 10;
else PWM = 0;
output_low(LED);
}
}
void Volar(){ // SONIDO DE DURACION Y TONO
output_high(MOTOR);
delay_us(PWM*2);
output_low(MOTOR);
delay_us(TIEMPO-PWM*2);
}
//*********************** MAIN ********************************************
void main(void){ // FUNCION PRINCIPAL
setup_oscillator(OSC_8MHZ|OSC_INTRC); // Activa el oscilador interno.
enable_interrupts(GLOBAL); // Interrupciones Habilitadas
enable_interrupts(INT_RA3); // Habilitamos interrupcion por cambio de estado para PIN3
output_low(MOTOR);
output_low(LED);
while(1){
if (PWM!=0) Volar();
}
}