This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

Infinite Loop

I am using the following code to blink a LED 10 times and then stop. But it goes on blinking even after 10 counts. please let me know where i have gone wrong in the code

#include <stdio.h>
#include <chipcon/hal.h>
#include <chipcon/cc1010eb.h>

#define Wait_Time 200

void main()
{
	int a=0;

	// Set Port 1 Bit 2 as O/P
	halSetPortBitDir(1, 2, POUT);

	// Initialise Counter
	while(a!=10) {
	// Wait period between blinks
	halWait(Wait_Time, CC1010EB_CLKFREQ);
	//Toggle LED
	halSetPortBit(1, 2, FALSE);
	a++;
	}
} //main

Parents
  • Most embedded environments are not like a PC where a program that exits main() implicitly or explicitly via a return statement or call to exit(), exits back to an operating system. You have to prevent main() from terminating by adding some kind of forever loop before main()'s closing brace. For example:

        for (;;);

Reply
  • Most embedded environments are not like a PC where a program that exits main() implicitly or explicitly via a return statement or call to exit(), exits back to an operating system. You have to prevent main() from terminating by adding some kind of forever loop before main()'s closing brace. For example:

        for (;;);

Children
  • Hi Dan thanks for helping again. I tried putting a infinite loop just before the closing braces of main(), but the LED still blinks infdefinitely. I still cant figure out how to get this code fixed. please help

    #include <stdio.h>
    #include <chipcon/hal.h>
    #include <chipcon/cc1010eb.h>
    
    #define Wait_Time 200
    
    void main()
    {
    	int a=0;
    
    	// Set Port 1 Bit 2 as O/P
    	halSetPortBitDir(1, 2, POUT);
    
    	// Initialise Counter
    	while(a!=10) {
    
    	// Wait period between blinks
    	halWait(Wait_Time, CC1010EB_CLKFREQ);
    
    	//Toggle LED
    	halSetPortBit(1, 2, FALSE);
    	a++;
    	}
    
    	//A forever loop
    	for (;;);
    } //main
    

  • "... the LED still blinks infdefinitely."

    Perhaps the watchdog is periodically resetting the MCU, causing your program to start over again. The watchdog timer is enabled by default. You need to either keep the watchdog happy or disable it.