Mi código C tiene un ISR, donde se debe tomar una decisión para ejecutar una función particular "A". Ahora sé que no es bueno ejecutar una función en un ISR. Pero en este caso de mi aplicación, no veo otra salida. Después de llamar a la función "A", noté un salto repentino en el tamaño de los datos consumidos y la ADVERTENCIA L15 repentina explicada en KEIL EXPLICACIÓN DE LA ADVERTENCIA .
Estoy seguro de que la función "A" no se ejecuta de manera reentrante, pero sí consume memoria física; tanto la función "A" como las funciones que llama. (Creo que esto se refiere a las variables declaradas en las funciones).
En primer lugar, ¿hay alguna manera de evitar el disparo en el espacio de la memoria de datos?
En segundo lugar, quiero aplicar el método 2 como se muestra en la explicación de keil. Pero no sé cómo & donde exactamente insertar la directiva OVERLAY en mi código. ¿En la inicialización? ¿En función de la declaración? Antes de la definición de la función? ¿Dónde exactamente?
EJEMPLO DE ADVERTENCIA en mi Código
*** WARNING L15: MULTIPLE CALL TO FUNCTION
NAME: _IECLOC_FUN/DATA_ACCESS
CALLER1: ?C_C51STARTUP
CALLER2: TIMER_ISR/TIMER
Se agradecerán correcciones, sugerencias, ejemplos de código y enlaces. Espero que esta pregunta sea clara.
Gracias a todos.