Autor Tema: Diferencias en el funcionamiento del programa segun el nivel de optimizacion  (Leído 2170 veces)

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

Desconectado jgpeiro

  • PIC10
  • *
  • Mensajes: 24
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?

Desconectado antoniof

  • Moderadores
  • PIC24F
  • *****
  • Mensajes: 729
RE: Diferencias en el funcionamiento del programa segun el nivel de optimizacion
« Respuesta #1 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.


 

anything