Microcontroladores PIC => Lenguaje C para microcontroladores PIC => Mensaje iniciado por: RedPic en 08 de Enero de 2014, 10:18:51
Título: En el 24FJ256GA110 y CCS C v.4.140 ¿la interrupción ADDRERR es "enmascarable"?
Publicado por: RedPic en 08 de Enero de 2014, 10:18:51
Pues eso, la interrupción INT_ADDRERR, que debe saltar cuando se produzca un error de direccionamiento, ¿es enmascarable? o sea que se pueda habilitar / dehabilitar con el:
Código: CSS
enable_interrupts(INT_ADDRERR);
Es que me salta un error de "A numeric expression must appear here ::Not a valid interrupt" y ya me entra la duda. En caso negativo imagino que esta interrupción está siempre habilitada ¿no? :?
Título: Re: En el 24FJ256GA110 y CCS C v.4.140 ¿la interrupción ADDRERR es "enmascarable"?
Publicado por: MerLiNz en 08 de Enero de 2014, 10:31:56
No puedes deshabilitarla, es una interrupcion de error y no se puede hacer, lo que debes hacer es crear una interrupcion que borre el flag y asi no se te resetee el pic, algo asi:
INTCON1bits.ADDRERR=0;
no se bien como van las interrupciones en el ccs, pero seria algo asi, crear una interrupcion con INT_ADDRERR y poner el registro que indico en la linea de mas arriba a 0, asi no se te resetea.
Título: Re: En el 24FJ256GA110 y CCS C v.4.140 ¿la interrupción ADDRERR es "enmascarable"?
Publicado por: RedPic en 08 de Enero de 2014, 14:49:33
Gracias MerLiNz, si ya he visto que no es enmascarable.
También, de ese tipo, tengo las que se ejecutan cuando se produce un error en el Stack y en una operación Matemática (División por 0 por ejemplo) #INT_STACKERR e #INT_MATHERR.
Título: Re: En el 24FJ256GA110 y CCS C v.4.140 ¿la interrupción ADDRERR es "enmascarable"?
Publicado por: MerLiNz en 09 de Enero de 2014, 07:37:08
la division por 0 solo te daria error si utilizas la division por hardware, lo normal es que el CCS utilice su propia funcion de division (que suele ser mas lenta) que la division por hardware.