Tengo un problema con el siguiente código. La variable loopTimes se restablece a 0 después de un bucle. El programa también tiene una rutina ISR para la interfaz TWI que actualiza el valor como se muestra en el siguiente código.
int main(void){
//my var
int loopTimes = 0;
for(;;){
if(loopTimes >= 0){
loopTimes--;
//Do some operations
}
// check if twi has data
if(TWI_has_data()){
//Read it into buffer
twi_read_data(rxBuffer,2);
if(loopTimes == 0){ // set the variable if it has reached zero
loopTimes = rxBuffer[0];
}
}
}
}
La configuración es un ATMEGA 8L en una placa personalizada con un cristal externo de 8 MHZ, programa compilado utilizando Atmel Studio 6 con optimización del compilador en el nivel 1. No puedo averiguar por qué la variable se pone a cero cada vez que pasa el bucle. El problema no ocurrirá si declaro loopTimes fuera del bucle principal.
Esto resuelve el problema
int loopTimes = 0;
int main(void){
//my var
... Rest of code is same
}
¿Alguien puede explicar esto un poco más?