Autor Tema: Efecto memoria de interrupciones en 18F  (Leído 1411 veces)

0 Usuarios y 1 Visitante están viendo este tema.

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Efecto memoria de interrupciones en 18F
« en: 09 de Agosto de 2007, 14:43:36 »
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

Desconectado Modulay

  • Moderadores
  • DsPIC30
  • *****
  • Mensajes: 2651
Re: Efecto memoria de interrupciones en 18F
« Respuesta #1 en: 09 de Agosto de 2007, 15:09:02 »
Bajar el flag correspondiente

Desconectado Nocturno

  • Administrador
  • DsPIC33
  • *******
  • Mensajes: 18286
    • MicroPIC
Re: Efecto memoria de interrupciones en 18F
« Respuesta #2 en: 09 de Agosto de 2007, 15:23:22 »
Arreglado. Muchas gracias

            INTCON = INTCON & 0xFD;
            INTCON3 = INTCON3 & 0xFE;


 

anything