Rafael Freitas

Strange Things With simple loop

Discussion created by Rafael Freitas on Sep 6, 2012
Latest reply on Sep 11, 2012 by puppetmaster

I am having the follow issue.
When a declare a variable and try to use inside a loop, its value is modified and I do not know where or why.


Like the code below:

 

void main (void) { volatile uint32_t i = 0;    /* Dummy idle counter */  volatile uint8_t seg = 0;
// JUST CONFIGURATION BEGIN ----------------------------------------- {
initModesAndClock();     /* Initialize mode entries and system clock */  initPeriClkGen();       /* Initialize peripheral clock generation for DSPIs */ disableWatchdog();      /* Disable watchdog */          initPads();                /* Initialize pads used in example */   initADC();                 /* Init. ADC for normal conversions but don't start yet*/   initCTU();                 /* Configure desired CTU event(s) */   initEMIOS_0();             /* Initialize eMIOS channels as counter, SAIC, OPWM */   initEMIOS_0ch3();     /* Initialize eMIOS 0 channel 3 as OPWM and channel 2 as SAIC*/       initEMIOS_0ch0();      /* Initialize eMIOS 0 channel 0 as modulus counter*/ initEMIOS_0ch23();      /* Initialize eMIOS 0 channel 23 as modulus counter*/ initEMIOS_0ch4();      /* Initialize eMIOS 0 channel 0 as OPWM, ch 4 as time base */ initEMIOS_0ch6();      /* Initialize eMIOS 0 channel 0 as OPWM, ch 6 as time base */ initEMIOS_0ch7();      /* Initialize eMIOS 0 channel 1 as OPWM, ch 7 as time base */  init_LinFLEX_0_UART();  // Hace la configuracion basica de el switch e o habilita como dispositivo de entrada. // Hace la configuracion basica de el motor. empiezaSwitchEntrada(); empiezaMotor(); empiezaLEDs();
// JUST CONFIGURATION ENDS ------------------------------------------------------------------- }
        seg  = 0; /* Loop forever */ for(;;)  {// *1 - But, If put "seg = 0" here, It works for Led_1.  // If button one is pressed  if(presionouLED(_LED1))  {   if(seg == 0)   {
                                // Turn on LED_1    conectaLed(_LED1);    seg++;   }   // Turn on LED_2.   else if(seg == 1)   {    conectaLed(_LED2);    seg++;   }      } }}

 

 If I run the code in that way, no one Led is turned up.

But I put the attribution in *1, It works for the Led_1.

 

Neither of this functions change the variable;

 

uint8_t presionouLED(uint8_t led);
uint8_t conectaLed(uint8_t led);

I tested the push buttons and the leds are working very well separete.

 

Have anyone any idea of what is happening?

I am using Code Warrio 5.9.0 and the board: TRK-MPC5604B.

Outcomes