Autor Tema: Interrupciones xc8(Aqui les dejo un tip).  (Leído 1587 veces)

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

Desconectado electroipod

  • PIC16
  • ***
  • Mensajes: 166
Interrupciones xc8(Aqui les dejo un tip).
« en: 14 de Septiembre de 2013, 20:11:54 »
Si alguien ha trabajado con interrupciones y ha puesto mas de una funcion dentro de la funcion void interrupt xxx(void), habra visto que al compilar se genera un warning diciendo que se ha sobrepasado el nivel del stack, a mi siempre me pasaba lo mismo y lo que hacia para solucionar este inconveniente era mas o menos esto:

void funcion1(void);
void funcion2(void);

char flag1=0,flag2=0;
int main(void)
{
sentencias...
while(1)
{
sleep();
if(flag1)
{
funcion1();
flag1=0;
}
if(flag2)
{
funcion2();
flag2=0;
}

}
}

void interrupt xxx(void)
{
    __delay_ms(20);
    if (INTCONbits.INTF)
        flag1=1

    if (INTCONbits.RBIF)
        flag2=1

    INTCONbits.INTF = 0;
    INTCONbits.RBIF = 0;
}
void funcion1(void)
{
sentencias...
}
void funcion2(void)
{
sentencias....
}

Pero esto era muy tedioso ya que despues de salir de la interrupcion tenias que desabilitar el bit GIE o talvez el bit RBIE o el INTE ya que si dentro de las funciones 1 y 2 usabas una funcion que no debia ser interrumpida por nada como por ejemplo una funcion I2C que si era interrumpida no funcionaba bien, bueno despues de tanto buscar en la web y no encontrar solucion, me di cuenta que el mplabx entrando en las propiedades de nuestro proyecto veran una opcion que dice xc8 linker dentro del cuadro categorias, a la izquierda hay una opcion que dice Managed stack habilitan el check y con eso queda solucionado los problemas de desbordamiento de la pila, a mi me ayudo bastante esto, espero que a ustedes tambien ya que ahora puedo poner todas mis funciones detro de la funcion interrupt como esto:

void interrupt xxx(void)
{
    __delay_ms(20);
    if (INTCONbits.INTF)
        funcion1();

    if (INTCONbits.RBIF)
        funcinon2();

    INTCONbits.INTF = 0;
    INTCONbits.RBIF = 0;
}

Desconectado Duende_Azul

  • Colaborador
  • PIC24F
  • *****
  • Mensajes: 902
Re: Interrupciones xc8(Aqui les dejo un tip).
« Respuesta #1 en: 15 de Septiembre de 2013, 01:22:19 »
Buen dato...  Gracias


 

anything