I want to make my Atmega robot to operate multiple modes (line following, obstacle avoidance, direct guidance from PC ) How can I load these separated programs on flash and how to select one of them when restarting the robot?
The easiest way is to make one big program with all the functionality of all the modes. On startup, in main()
check if certain buttons are pressed, then choose which mode you are going to operate in. Then only use the functions and control mechanisms for that mode from then on. The rest of the code just sits there unused, but it would anyway in any other scheme.
There isn't an easy way to break the code into several different complete programs. For example, the vector table is fixed to be where it is. You would have to have the interrupt handlers check to see which mode is active then call the appropriate function for that mode.