TODOPIC

Microcontroladores PIC => dsPIC => Mensaje iniciado por: jgpeiro en 16 de Febrero de 2006, 04:49:00

Título: Diferencias en el funcionamiento del programa segun el nivel de optimizacion
Publicado por: jgpeiro en 16 de Febrero de 2006, 04:49:00
tengo un programa en C en el que declaro una variable (static int GP_DELAY) fuera del main, justo antes de la ISR de una interrupcion. En esa interrupcion vario el valor de GP_DELAY) y en otra funcion testeola variable con un while (GP_DELAY<5);.

static int GP_DELAY=0;
void ISR
{
GP_DELAY++;
}


main
{
...
}

void funcion
{
while(GP_DELAY>5);
}

Cuando hago una compilacion sin optimizar el codigo el programa funciona perfectamente, permanece en el bucle solo mientras GP_DELAY vale menos que 5. Pero cuendo pongo un nivel de optimizacion del codigo mayor el programa nunca sale de ese bucle... que puede ocurrir? he declarado bien la variable y en el lugar adecuado?
Título: RE: Diferencias en el funcionamiento del programa segun el nivel de optimizacion
Publicado por: antoniof en 16 de Febrero de 2006, 05:22:00
Yo quitaría lo de static, puesto que es una variable global normal no estática. Si fuera estática, su valor no se modificaría en todo el programa.

Quizás al optimizar, el compilador ve que la tienes declarada como estática y la hace constante a 0 e ignora todas las modificaciones que le hagas en el programa.