I’ve seen now two videos of a couple of engineers from Intellitek that are teaching a seminar on EasyC and both of them show creating a WHILE (1) LOOP in the operatorcontrol function and putting your code inside the loop.
Is this required? I’ve got my code to excute just fine without putting a while (1) loop inside the OperatorControl function. Doesn’t it loop anyway?
I know the autonmous mode does not excute in a loop, once it completes to the end it’s done, unless you put a while loop in there.
One thing that would be handy to see is a generic FLOW CHART on your “Competion Template”. Like the one we get when we download default code from innovation first.
I am wondering if this loop is required and part of my problem of timing my standard CPU “Scan time”. In another post.
It still would be nice to see a FLOW CHART on the EasyC excution of the PIC controller, if it is any different than the default FRC code from IFIRobotics.
OK - here you go - the runtime code in EasyC and in WPILib does this:
Initialize();
while (!IsEnabled());
while (1) {
if (IsAutonomous())
{
Autonomous();
while (IsAutonomous());
}
OperatorControl();
}
Notice that Initialize() is always run first - whenever the controller is turned on or reset.
Then it waits for the robot to be enabled.
Then it continuously runs either Autonomous() or OperatorControl() depending on the field condition. If you exit from Autonomous() it waits until
OperatorControl starts.
If you reset the robot during the match, it runs Initialize(), then either Autonomous() or OperatorControl() depending on the field setting.
One thing you can’t see in this code is some magic stuff that happens behind the scenes that will cause the program to exit from Autonomous() or OperatorControl() if the field condition changes once either of those functions starts running.