Me encuentro con un problema que es nuevo para mí, pero confío en que alguno de vosotros ya lo tenga resuelto y pueda ayudarme.
Tengo una aplicación que utiliza, entre otras, dos interrupciones externas conectadas a sendos pulsadores.
En cada una de las interrupciones tengo un proceso que dura unos segundos y me interesa bloquear la ejecución de la otra interrupción mientras dicho proceso esté activo.
Por tanto, lo primero que hago al entrar en ambas interrupciones es:
disable_interrupts(INT_EXT);
disable_interrupts(INT_EXT1);
Y al salir de las mismas, vuelvo a activar las interrupciones con sus correspondientes:
enable_interrupts(INT_EXT);
enable_interrupts(INT_EXT1);
Hasta aquí todo bien, cuando pulso un botón se ejecuta su proceso correspondiente. El problema viene cuando pulso un botón y durante su proceso pulso el otro, o el mismo botón nuevamente.
Parece que el micro no atiende la interrupción, pero la memoriza y la ejecuta tan pronto como acabe con la ejecución de la que tiene entre manos en ese momento.
No veo lógica a este efecto puesto que las interrupciones están deshabilitadas, pero es así.
¿Sabéis que puedo hacer para evitarlo?
Gracias