| shtylman |
21-02-2007 01:54 |
Re: changing main.c
Quote:
Originally Posted by Alan Anderson
(Post 581725)
Consider yourself corrected. Take a look at the main() function in main.c and you'll see that it calls Process_Data_From_Master_uP() just before checking autonomous_mode. So it calls the "slow loop" code continuously before going autonomous, and then calls it one more time after autonomous is enabled and before calling User_Autonomous_Code().
|
In the default Code, Process_Data_From_Master_uP is only called once before autonomous if the OI is set to run autonomous mode. After the RC goes into autonomous mode, the while loop in the autonomous code blocks and Process_Data_From_Master_uP is not called again until autonomous code ends.
The reason for calling it first is most likely that teams usually run the regular code and not autonomous. Whatever the case, a Getdata must be called with the rx_data struct so the data can be retrieved from the master processor about which mode to go into. I have not done it myself, but I am confident that you can simply change
Quote:
if (statusflag.NEW_SPI_DATA) /* 26.2ms loop area */
{ /* I'm slow! I only execute every 26.2ms because */
/* that's how fast the Master uP gives me data. */
Process_Data_From_Master_uP(); /* You edit this in user_routines.c */
if (autonomous_mode) /* DO NOT CHANGE! */
{
User_Autonomous_Code(); /* You edit this in user_routines_fast.c */
}
}
|
to ->
Quote:
if (statusflag.NEW_SPI_DATA) /* 26.2ms loop area */
{ /* I'm slow! I only execute every 26.2ms because */
/* that's how fast the Master uP gives me data. */
Getdata(&rxdata);
if (autonomous_mode) /* DO NOT CHANGE! */
{
User_Autonomous_Code(); /* You edit this in user_routines_fast.c */
}
else
{
Process_Data_From_Master_uP(); /* You edit this in user_routines.c */
}
}
|
In main.c
And you will not run user code and yet still be ok. Someone should try this if they have a spare RC around (ours got shipped today and I don't have access to old robots). Just my $0.02
|