Chief Delphi

Chief Delphi (http://www.chiefdelphi.com/forums/index.php)
-   Programming (http://www.chiefdelphi.com/forums/forumdisplay.php?f=51)
-   -   Delay code isn't delaying. (http://www.chiefdelphi.com/forums/showthread.php?t=66912)

Guy Davidson 13-04-2008 19:47

Delay code isn't delaying.
 
1 Attachment(s)
I'm working with Kevin Watson's 3.0 compatible FRC framework. I have code in the begining of my Autonomous() function that should cause the robot to wait, based on a few constants defined in Autonomous.h. It doesn't seem to work, and just takes off immediately. Could it have something to do with the fact that the field control system spends a moment in teleop before jumping to autonomous in the begining?

I attached a .zip archive with my entire workspace.

Thank you for helping.

-Guy Davidson

Alan Anderson 13-04-2008 20:13

Re: Delay code isn't delaying.
 
Might it have something to do with this line in autonomous.h?
Code:

#define WAITING_TIME 0

Guy Davidson 13-04-2008 20:29

Re: Delay code isn't delaying.
 
That line is commented out as part of this block:
Code:

/*
#define LOOPS_IN_A_SECOND 38
#define WAITING_TIME 0
#define TICKS_IN_A_FOOT 156 //163 * 23 / 24
#define DRIVE_FORWARD_1 10 //45 //in ft
#define DRIVE_FORWARD_2 10 //in ft
#define DRIVE_FORWARD_3 40 //in ft
#define DRIVE_FORWARD_4 10 //in ft
#define TURN_LEFT_1 65 // in diffs
#define TURN_LEFT_2 57 // in diffs
#define ANGULAR_INCREMENT 5 //in diffs
#define LINEAR_INCREMENT 156 //163 * 23 / 24
#define POSITION_INPUT_1 rc_dig_in17 //0 && 0 = LEFT, 1 && 0 or 0 && 1 = CENTER, 1 && 1 = RIGHT
#define POSITION_INPUT_2 rc_dig_in18 //0 && 0 = LEFT, 1 && 0 or 0 && 1 = CENTER, 1 && 1 = RIGHT
*/

The copy I hope it's using is defined a few lines later:
Code:

#define LOOPS_IN_A_SECOND 38
#define WAITING_TIME 8

Is there any way that's causing issues?

Alan Anderson 13-04-2008 20:37

Re: Delay code isn't delaying.
 
I didn't think the preprocessor cared about comment lines. Are you getting any compiler errors or warnings about trying to redefine a symbol?

Guy Davidson 13-04-2008 20:38

Re: Delay code isn't delaying.
 
Nope. No errors or warnings what-so-ever, as far as I can see.

iTHOS=awesome 13-04-2008 20:47

Re: Delay code isn't delaying.
 
The best thing to do for delays is make a counter that does everything. Here is a few lines that I used for our robot in the Tacoma Regional:

int timer = 0;

if(timer < 72)
/* 72, if I remember right, is about 2 seconds, this number can be adjusted however you need it to be */
{
timer ++;
}
else
{
// This is where the remainder of autonomous functions occured
}

Ctrl Alt Delete 13-04-2008 20:52

Re: Delay code isn't delaying.
 
It cycles 40 times a second right? So you can just make a function that returned i / 40 so you can say if(timer < 2) which would be the actual amount of seconds. I know it's basic math to just multiply by 40, but it makes the code a little more readable for someone that doesn't know that.

Guy Davidson 13-04-2008 20:52

Re: Delay code isn't delaying.
 
That's pretty much what I have there.

iTHOS=awesome 13-04-2008 20:56

Re: Delay code isn't delaying.
 
Quote:

Originally Posted by Guy Davidson (Post 736256)
That's pretty much what I have there.

if that is what you are doing, I don't know what the issue would be. Can you copy and paste your delay code here so I (or anyone else) can help you?

Guy Davidson 13-04-2008 20:59

Re: Delay code isn't delaying.
 
It's in autonomous.c in the attached archive. Since it's also based on stuff in autonomous.h, I left it in an archive. Would it help if I copy both .c and .h here?

Ctrl Alt Delete 13-04-2008 21:03

Re: Delay code isn't delaying.
 
The only thing I can think of now is changing this:

if(auton_counter < WAITING_TIME * LOOPS_IN_A_SECOND)

to this:

if(auton_counter < (WAITING_TIME * LOOPS_IN_A_SECOND))

Maybe try printing out WAITING_TIME and LOOPS_IN_A_SECOND and see what it's outputting.

Joe Ross 13-04-2008 21:12

Re: Delay code isn't delaying.
 
What does your debug statement say for the value of counter?

iTHOS=awesome 13-04-2008 21:16

Re: Delay code isn't delaying.
 
The code is fairly confusing for me as to what you are trying to do. The way I learned programming makes this very hard to read, no offense. I just can't figure out what is wrong with it.

Alan Anderson 13-04-2008 21:29

Re: Delay code isn't delaying.
 
Quote:

Originally Posted by iTHOS=awesome (Post 736286)
The way I learned programming makes this very hard to read, no offense.

I too find the highly compact style a hindrance to readability. I actually reformatted the relevant lines in order to make it easier for me to see what the code was trying to do.

I don't remember who said it, but I agree with the philosophy that says a programmer's job is to write documentation that compiles into a working program.

Guy Davidson 13-04-2008 21:44

Re: Delay code isn't delaying.
 
Quote:

Originally Posted by Joe Ross (Post 736280)
What does your debug statement say for the value of counter?

That's the next thing I was going to check. I put it in there during our last competition in hopes of getting around to test it there, and I haven't been able to yet. I'm hoping to do that early Thursday morning in Atlanta.


All times are GMT -5. The time now is 00:57.

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