Dean: We encourage kids to learn about science, technology.... Colbert: And does that include creation science? Dean: .... Well we teach kids to be very creative..... - Kevin Sevcik [more]
 Chief Delphi Solution to Timing Loops
 User Name Remember Me? Password
 Team 51 CD-Events CD-Media CD-Swap CD-Spy FRC-Spy Unsung FIRST Heroes WFA
The Chief Delphi Forums are sponsored by Innovation First International, Inc.

#1
01-26-2003, 11:43 AM
 Steven Carmain Bit Twiddler #0045 (TecknoKats) Team Role: Electrical Join Date: Jan 2003 Rookie Year: 2002 Location: Kokomo, IN Posts: 84
Solution to Timing Loops

I have found out how to time. Based of the information from Innovation First, a loop is every 26.2 ms, assuming your code does't lengthen it. Based off of that, there are 38.167938931297709923664122137405 loops per sec. So to do close timing without overloading the stamp, you do:

Time VAR byte
RealTime VAR byte

Time = Time + delta_t + 1
if Time > 38 then
Time = Time - 38
RealTime = RealTime + 1
EndIf

This way only uses 2 bytes insted of a byte and a word. I tryed the delta_t * 262 / 10 but it overloaded the stamp and was very inaccurate.

Based of of this formula, then the basic stamp will be 0.530431579 seconds fast at end of match.

You can check this information on this xls I inclosed.
__________________
Team 45's Student Lead Electrical

A robot is like a campfire: it takes a while to bulid it, and then everyone surounds it!
A world without standards is chaos. A world with standards is chaos.
My Website! Includes a spelling program that speaks!
1993 Video Archive
#2
01-26-2003, 02:31 PM
 Anthony Kesich Programmer Turned Engineer AKA: SonKenshin #1097 (Site 3 Engineernig) Team Role: Leadership Join Date: Jan 2003 Rookie Year: 2003 Location: Sacramento, CA Posts: 186
Dear god thats great

i must applaud you for your idea. I myself, being a rookie programmer on a rookie team, am just getting the hang of the language, but after reading the forum got this idea yesterday, but then flushed it out, on one basis. doesn't delta_t count the total number of packets missed since starting the program?

-Anthony
__________________
C is screwing up my English--I'm ending all my sentences in semi-colons;

Horray for most things! -George Carlin

"Sure, I'll play rugby. Besides, I have a lot of experience running from really big guys who want to cream me." -Me, Freshman year
#3
01-26-2003, 02:40 PM
 Noah Code Monkey #0861 (The Gondobots) Team Role: Programmer Join Date: Apr 2002 Location: Venice, California Posts: 139
Re: Dear god thats great

Quote:
 Originally posted by Anthony Kesich [Bdoesn't delta_t count the total number of packets missed since starting the program? [/b]
No, delta_t counts the number of missed packets since your last serin. it gets reset to 0 with each serin.
__________________
"It's broken? NOOAAHH!!! This is your doing, isn't it!"

"We can fix it in the software!"
"It's a BROKEN GEAR!"
#4
01-26-2003, 03:07 PM
 Anthony Kesich Programmer Turned Engineer AKA: SonKenshin #1097 (Site 3 Engineernig) Team Role: Leadership Join Date: Jan 2003 Rookie Year: 2003 Location: Sacramento, CA Posts: 186
thats good to hear, you always want to check your bases. you know, play it safe.

-Anthony
__________________
C is screwing up my English--I'm ending all my sentences in semi-colons;

Horray for most things! -George Carlin

"Sure, I'll play rugby. Besides, I have a lot of experience running from really big guys who want to cream me." -Me, Freshman year
#5
01-26-2003, 08:19 PM
 Steven Carmain Bit Twiddler #0045 (TecknoKats) Team Role: Electrical Join Date: Jan 2003 Rookie Year: 2002 Location: Kokomo, IN Posts: 84
Did you get the xls. If you guys didn't, then can I have a email address if you want a copy or to post it in the internet
__________________
Team 45's Student Lead Electrical

A robot is like a campfire: it takes a while to bulid it, and then everyone surounds it!
A world without standards is chaos. A world with standards is chaos.
My Website! Includes a spelling program that speaks!
1993 Video Archive
#6
01-26-2003, 08:23 PM
 Noah Code Monkey #0861 (The Gondobots) Team Role: Programmer Join Date: Apr 2002 Location: Venice, California Posts: 139
You can attach it to your post as a file. That would probably be best. That way everyone can download it straight from here.
__________________
"It's broken? NOOAAHH!!! This is your doing, isn't it!"

"We can fix it in the software!"
"It's a BROKEN GEAR!"
#7
01-27-2003, 07:08 AM
 Greg McCoy boiler up! FRC #3940 (CyberTooth) Team Role: Engineer Join Date: Feb 2002 Rookie Year: 2002 Location: Kokomo, IN Posts: 484
Re: Solution to Timing Loops

Quote:
 Originally posted by Steven Carmain I have found out how to time. Based of the information from Innovation First, a loop is every 26.2 ms, assuming your code does't lengthen it.
How is this possible? Unless you use only the default code, this number will change, and you have to change the code if you are going to do anything automated.

It's really not that hard to just figure out the numbers by guess and check.

You can do a timer with 2 bytes too, only difference is that you can only count to 255, and when you reach this number you simply start a new step, as documented in my programming sample in the white papers.

Last edited by Greg McCoy : 01-27-2003 at 07:12 AM.
#8
01-27-2003, 07:17 AM
 Steven Carmain Bit Twiddler #0045 (TecknoKats) Team Role: Electrical Join Date: Jan 2003 Rookie Year: 2002 Location: Kokomo, IN Posts: 84
If you do the research like I did, then you would see that a loop is 26.2 ms a loop. If your code is shorter then you wait at serin until you get the information and start the loop over. If you take too long in your code, then the delta_t comes in. It count the number of loops you missed as long as it is in the serin. If you miss 5 serins then you have the basic run error. So in theory, this should be accurate.
__________________
Team 45's Student Lead Electrical

A robot is like a campfire: it takes a while to bulid it, and then everyone surounds it!
A world without standards is chaos. A world with standards is chaos.
My Website! Includes a spelling program that speaks!
1993 Video Archive
#9
01-27-2003, 09:32 PM
 Anthony Kesich Programmer Turned Engineer AKA: SonKenshin #1097 (Site 3 Engineernig) Team Role: Leadership Join Date: Jan 2003 Rookie Year: 2003 Location: Sacramento, CA Posts: 186

all i know is this code works. I played with basic autonomous mode today (this isn't that sad, seeing as i am the only real programmer at my school, this is a rookie team, and i have taught myself almost all of the code) and this works like a charm. Since most people only use timing in auton mode, you will only be off by about .066 seconds, and that is extremely insignificant. (It was so little that i didn't notice at all)

-Anthony
__________________
C is screwing up my English--I'm ending all my sentences in semi-colons;

Horray for most things! -George Carlin

"Sure, I'll play rugby. Besides, I have a lot of experience running from really big guys who want to cream me." -Me, Freshman year
#10
01-27-2003, 09:47 PM
 Ian W. College? What? no team (Gompei and the Herd) Team Role: College Student Join Date: Jan 2002 Rookie Year: 2002 Location: Worcester, MA | Smithtown, NY Posts: 1,464
one question. why the timing loops? why not just a counter?

i made a little program a few days ago, all it does is use a byte and a nibble, and based on the counter and nibble advances through a select case. all you do to control it is adjust the byte to how high to count, and always advance the nibble by one. you can get up to 18 operations in this way, actually more if you don't use the full 255 loops from one byte at a time.

if this doesn't make sense, i'll post the code tomorrow afternoon when i find it. it's very simple when you see it, and it works fine. no need to worry about time, because if the loop gets longer, even a timer would get screwed up.
__________________
AIM --> Woloi
Email --> ian@woloschin.com
#11
01-28-2003, 06:33 PM
 Greg McCoy boiler up! FRC #3940 (CyberTooth) Team Role: Engineer Join Date: Feb 2002 Rookie Year: 2002 Location: Kokomo, IN Posts: 484
Yeah, that's pretty much what I did. It seems to me that it does the exact same thing with less complexity and the exact same efficiency if done correctly.
#12
01-29-2003, 03:36 PM
 mjt902 Registered User #0902 Join Date: Apr 2002 Location: Heritage High School Posts: 31
First, this thread starter knows what he's talking about. Second, a counter counts loops. The number of loops you get in one second changes. Don't believe me:

copy a simple statement 100 times, or use some calc in your program and see how slow the counter goes.

I can forsee that this years coding is that complex when compared to last years (all we needed were a few if statements). The delta_t is the only TRUE thing in your code, so it is imperative that you do the auton mode the way suggested, and do NOT use counters.

GUESS AND CHECK IS NOT HELPING US LEARN ANYTHING
__________________
Top Ten Reasons to Procrastinate:
1.
#13
01-29-2003, 04:03 PM
 Ian W. College? What? no team (Gompei and the Herd) Team Role: College Student Join Date: Jan 2002 Rookie Year: 2002 Location: Worcester, MA | Smithtown, NY Posts: 1,464
uh, i can control how long it does something based on counting with cycles AND delta_t. it's the same as a timing loop, minus the extra memory and added difficulty. and i've seen no problems so far with my code. sure, it aint pretty, but it's dead reckoning, it's not supposed to be!
__________________
AIM --> Woloi
Email --> ian@woloschin.com
#14
01-29-2003, 05:17 PM
 rbayer Blood, Sweat, and Code no team (Teamless Orphan) Join Date: Mar 2002 Rookie Year: 2001 Location: Minnetonka, MN Posts: 1,087
There is no advantage to converting Stamp loops to "real" time. It is a 1-to-1 conversion, meaning that each "real" time value corresponds to some fixed number of loops and vice-versa. For example, the following code would do exactly the same thing:

Code:
```loopCnt VAR byte
loopCntHigh VAR nib
loopCnt=0
loopCntHigh=0

SERIN...

if (loopCnt + 1 + delta_t > 255) then loopCntHigh=loopCntHigh + 1 : loopCnt=loopCnt+1+delta_t-255 else loopCnt=loopCnt+1+delta_t

SELECT (loopCntHigh<<8 + loopCnt)
CASE range1Low TO range2High
'do stuff
CASE range2Low TO range2High
'do other stuff
CASE ELSE
'do even more stuff
ENDSELECT

SEROUT...```
This will let you count up to 4096 loops, which is approx 1min 45s worth of autonomous time. Plus, it only uses 1.5 bytes!

Questions about the above stuff? Email or PM me and I'd be more than happy to explain.
__________________
New C-based RoboEmu2 (code simulator) available at: http://www.robbayer.com/software.php
#15
01-29-2003, 05:36 PM
 mjt902 Registered User #0902 Join Date: Apr 2002 Location: Heritage High School Posts: 31
Once again you correct me!!! Oh, I'm lazy anyway but thanks for the free code. Only one question have I:
where'd you get the 8 from in SELECT(loopCntHigh<<8 + loopcnt)

i think you and i are on the same page (only i'm on a different plane) , and its great learning from you!!!
__________________
Top Ten Reasons to Procrastinate:
1.

 Thread Tools Display Modes Rate This Thread Linear Mode Rate This Thread: 5 : Excellent 4 : Good 3 : Average 2 : Bad 1 : Terrible

 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 User Control Panel Private Messages Subscriptions Who's Online Search Forums Forums Home Announcements     User Announcements FIRST     General Forum         FIRST E-Mail Blast Archive     Rumor Mill     Career     Robot Showcase     Moderated Discussion Technical     Technical Discussion     Robotics Education and Curriculum     Motors     Electrical         CAN     Programming         NI LabVIEW         WindRiver C++         Java         MATLAB & Simulink         Python     intelitek easyC/REC information         easyC v2 for Vex         easyC for FRC         REC/Learnmate         WPILib         easyC PRO     Control System         IFI Control System         FRC Control System         Sensors         USB Chicklet     Pneumatics     Kit & Additional Hardware     CAD         Inventor         SolidWorks         Pro ENGINEER / Creo     IT / Communications         3D Animation and Competition         Website Design/Showcase         Videography and Photography         Computer Graphics     National Instruments LabVIEW and Data Acquisition         LabView and Data Acquisition Competition     Awards         Chairman's Award     Rules/Strategy         Scouting         You Make The Call     Team Organization         Fundraising         Starting New Teams         Finding A Team         College Teams     Championship Event     Regional Competitions     FIRST in Michigan     Mid-Atlantic Robotics     Off-Season Events         Chief Delphi Invitational     Thanks and/or Congrats     FRC Game Design     OCCRA         OCCRA Q&A         OCCRA Programming Other     Unsung FIRST Heroes     Chit-Chat         Games/Trivia             Fantasy FIRST     Car Nack's Corner     College & University Education     Dean Kamen's Inventions     FIRST-related Organizations         Western Region Robotics Forum         Robot Chicks Union (RCU)         Southern California Regional Robotics Forum         Hearing-Impared Network         FIRST Interactive Rural SupporT         freelanceFIRST         FIRST Scouting Network         openFIRST         The Grand FIRST Team         FloridaFIRST         Inspiration Foundation Inc.         South Dakota FIRST         FIRST International Partners         FIRSTwiki         Ultimate Robot Challenge         East Coast Drivers Union         Team San Diego         CollegiateFIRST         Dream FIRST         FIRST Brasil         The Blue Alliance             Video Archives     FIRST Historians     FIRST-A-Holic's Anonymous Mailbox     FIRST In the News...     FIRST Lego League         Lego Mindstorm Discussion     FIRST Tech Challenge         FTC E-Mail Blast Archive     VEX         VEX Robotics Competition     Televised Robotics     Math and Science         NASA Discussion ChiefDelphi.com Website     CD Forum Support         Bulletins and Newsletters     Extra Discussion Old Forum Archives     1999     2000     2001

 Similar Threads Thread Thread Starter Forum Replies Last Post Timing of nats for next year Ian W. Championship Event 13 03-03-2003 05:28 PM Way back there. Size of Nationals, and a solution archiver 2001 23 06-24-2002 02:28 AM what is or isn't a timing belt? archiver 2001 6 06-23-2002 10:26 PM two sided timing belt archiver 2001 3 06-23-2002 09:34 PM Dual Sided Timing Belts Lachuck894 Technical Discussion 9 01-14-2002 09:10 AM

All times are GMT -5. The time now is 07:15 AM.

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

 -- English (12 hour) -- English (24 hour) Contact Us - Chief Delphi - Rules - Team Site - Archive - Top