Buenas a todos,
tengo una interrupción que cuenta los segundos, cuando se cumple el if entra y
llama al metodo HacerAlgo(); Este metodo enciende un led y hace un delay de 5s.
Pero cuando ejecuto el delay casi ni lo noto, creo que es por que la propia interrupcion interrumpe el metodo antes de que acabe. He visto que se puede proteger un fragmento de código para que no le afecte las interrupciones, he probado noInterrupts(); interrupts; pero no va. En el ejemplo cli(); sei(); tampoco va. No se como puedo hacerlo. La tarea real es mover un motor con un contador, etc. Lo digo por que se que se puede hacer parpadear el led de otra forma. Gracias de antemano.
ISR(TIMER1_COMPA_vect){
segundos++;
seg++;
if(seg==5){
cli();
HacerAlgo();
sei();
seg=0;
}
}
void HacerAlgo(){
digitalWrite(LedPin,HIGH);
delay(5000);
}