Go to Post If winning that individual match is more important to you than being there in the first place, then I believe you've got your priorities in the wrong spot. - Tom Bottiglieri [more]
Home
Go Back   Chief Delphi > Technical > Programming
CD-Media   CD-Spy  
portal register members calendar search Today's Posts Mark Forums Read FAQ rules

 
 
 
Thread Tools Rate Thread Display Modes
Prev Previous Post   Next Post Next
  #2   Spotlight this post!  
Unread 16-12-2007, 09:01
Bongle's Avatar
Bongle Bongle is offline
Registered User
FRC #2702 (REBotics)
Team Role: Mentor
 
Join Date: Feb 2004
Rookie Year: 2002
Location: Waterloo
Posts: 1,069
Bongle has a reputation beyond reputeBongle has a reputation beyond reputeBongle has a reputation beyond reputeBongle has a reputation beyond reputeBongle has a reputation beyond reputeBongle has a reputation beyond reputeBongle has a reputation beyond reputeBongle has a reputation beyond reputeBongle has a reputation beyond reputeBongle has a reputation beyond reputeBongle has a reputation beyond repute
Send a message via MSN to Bongle
Re: user_routines_fast

The user_autonomous_code function is indeed fast:
Code:
void User_Autonomous_Code(void)
{
  // ... stuff deleted for clarity
  while (autonomous_mode)   /* DO NOT CHANGE! */
  {
    // this part here happens over and over very very quickly
    if (statusflag.NEW_SPI_DATA)      /* 26.2ms loop area */
    {		
        // ... stuff deleted for clarity
        // this code is only executed once every 26.2ms
    }
    // back to really really fast code here
  }
}
When you're waiting the RC to indicate that there is new data, you're just doing a busy loop spinning around the while(autonomous_mode) loop. This will happen as fast as the RC can do it, which is entirely dependant on how much code is there.

If you wanted to know how fast that is without any code to execute, you could do this (note that lots of default code here is omitted for clarity):
Code:
void User_Autonomous_Code(void)
{
  int cExecutions;
  
  while (autonomous_mode)   /* DO NOT CHANGE! */
  {    
    if (statusflag.NEW_SPI_DATA)      /* 26.2ms loop area */
    {  
        // I don't remember the exact printf syntax, it has been awhile
        printf("%d\r\n cycles in 26.2ms means %d per second",cExecutions,(10000*cExecutions)/262)); 
        cExecutions = 0;
    }
    cExecutions++;
    // back to really really fast code here
  }
}
So cExecutions will increment on every fast loop, then once you get into the 26.2ms code, you print it out and reset it to zero. This way, you can tell how many fast loops occurred per slow loop, and thus derive how many fast loops you get per second. But keep in mind, the fast loops per second count will change dramatically as you add new code to the fast-loop portion.

Last edited by Bongle : 16-12-2007 at 12:50.
 


Thread Tools
Display Modes Rate This Thread
Rate This Thread:

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Forum Jump

Similar Threads
Thread Thread Starter Forum Replies Last Post
timers in user_routines_fast stephenthe1 Programming 2 17-02-2006 12:35
what is user_routines_fast.c? sjung9442 Programming 2 26-01-2006 21:13
Speed of user_routines_fast.c JoeFryman Programming 2 20-02-2005 01:09
Autonomous weirdness in user_routines_fast.c Roland Programming 6 30-03-2004 11:36
Where is user_routines_fast()? SeanCassidy Programming 3 25-01-2004 16:14


All times are GMT -5. The time now is 01:22.

The Chief Delphi Forums are sponsored by Innovation First International, Inc.


Powered by vBulletin® Version 3.6.4
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.
Copyright © Chief Delphi