Go to Post And if in the end the students are inspired and more of the public becomes aware of the program, and people gain more appreciation for engineering, how can that not be a good thing? - dlavery [more]
Home
Go Back   Chief Delphi > Technical > Programming > C/C++
CD-Media   CD-Spy  
portal register members calendar search Today's Posts Mark Forums Read FAQ rules

 
Reply
 
Thread Tools Rate Thread Display Modes
  #1   Spotlight this post!  
Unread 07-02-2010, 09:36
tbinns tbinns is offline
Registered User
FRC #0131 (CHAOS)
Team Role: Mentor
 
Join Date: Feb 2010
Rookie Year: 2008
Location: Manchester, NH
Posts: 4
tbinns is an unknown quantity at this point
Re: Error creating tasks that use encoders

Joe, Thanks

I have uploaded the files for the dribbler. It is created in the dribbler class is created in the main Iterative robot and defined in its .h file. Segments of the main robot included at the end to show order of creation.

The Dashboard is past in from to the constructor and appears to have the same issues.

AccessDribblerStateMachine(Dribbler *d) (a file scoped function) called the dribbler class statemachine, but during testing we moved the encoder to see if there was different results and there was no change in the error. In the statemachine we commented out // DashData-> to work on one issue at the time, this also goes for the victors at the end of the function that result in the same error.

Parts from our Main robot:
Breakaway10::Breakaway10(void) : camera(AxisCamera::GetInstance())
{
//Robot Base Drive Initializers:
//Gamepad Initializers:
//Gyro Initializers:
//PID Output Initializers:
//TurnController Initializers USES PID OUTPUT, USES GYRO
//Dashboard Initializers:
dds = new DashboardDataSender();
//Compressor Initializers:
compressor = new Compressor(COMPRESS_PRESSURE_SWITCH_CHANNEL, COMPRESS_RELAY_CHANNEL);
//Encoder Initializers: (were passed to dribbler but now created within dribbler
// leftEncoder = new Encoder(DIO_MODULE1, LEFT_MOTOR_ENCODER_CHANNEL_A, DIO_MODULE1, LEFT_MOTOR_ENCODER_CHANNEL_B, ENCODER_DISTANCEPERPULSE);
// rightEncoder = new Encoder(DIO_MODULE1, RIGHT_MOTOR_ENCODER_CHANNEL_A, DIO_MODULE1, RIGHT_MOTOR_ENCODER_CHANNEL_B, ENCODER_DISTANCEPERPULSE);
//Dash Sharing Initializers:
DashData = new DashSharing();
//Dribbler Initializers: USES DASH DATA
dribbler = new Dribbler(DashData);
......

void Breakaway10::TeleopContinuous(void)
{

//We need to start these tasks before we begin the loop, to use the enable function
//ChaosKicker->Start();
//Wait(0.5);
dribbler->Start();

// ->->-> MAIN LOOP BEGINS HERE <-<-<-
...........

Thanks,
Todd Binns
Software Mentor
Attached Files
File Type: cpp Dribbler.cpp (3.9 KB, 9 views)
File Type: h Dribbler.h (1.4 KB, 9 views)
Reply With Quote
  #2   Spotlight this post!  
Unread 07-02-2010, 10:00
tbinns tbinns is offline
Registered User
FRC #0131 (CHAOS)
Team Role: Mentor
 
Join Date: Feb 2010
Rookie Year: 2008
Location: Manchester, NH
Posts: 4
tbinns is an unknown quantity at this point
Re: Error creating tasks that use encoders

In the original version we passed in the encoders and we ran the Keep code in the Iterative robot without issue. The students wanted it to run all the time since it was needed as long as the robot was enabled.

Todd
Reply With Quote
  #3   Spotlight this post!  
Unread 14-02-2010, 10:17
tbinns tbinns is offline
Registered User
FRC #0131 (CHAOS)
Team Role: Mentor
 
Join Date: Feb 2010
Rookie Year: 2008
Location: Manchester, NH
Posts: 4
tbinns is an unknown quantity at this point
Re: Error creating tasks that use encoders

Hi,
We have done some more work with this and it appears that some classes like encoder, dashboard are not thread safe. We are able to include joystick, digital I/O and analog, without an error. Has anyone else try including encoders in a task and if so did they have errors while the oRICO ran?

Todd
Reply With Quote
  #4   Spotlight this post!  
Unread 14-02-2010, 10:28
byteit101's Avatar
byteit101 byteit101 is offline
WPILib maintainer (WPI)
AKA: Patrick Plenefisch
no team (The Cat Attack (Formerly))
Team Role: Programmer
 
Join Date: Jan 2009
Rookie Year: 2009
Location: Worcester
Posts: 699
byteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of lightbyteit101 is a glorious beacon of light
Re: Error creating tasks that use encoders

we use tasks, but have only one task access the sensors, the other must ask the first for the value. You could also use semaphores: http://www.chiefdelphi.com/forums/sh...ad.php?t=82398
also, could you use [CODE ] Tags on your posts? It helps a lot. (the # button in the editor)
__________________
Bubble Wrap: programmers rewards
Watchdog.Kill();
printf("Watchdog is Dead, Celebrate!");
How to make a self aware robot: while (∞) cout<<(sqrt(-∞)/-0);
Previously FRC 451 (The Cat Attack)
Now part of the class of 2016 at WPI & helping on WPILib
Reply With Quote
Reply


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
Periodic Tasks Luke Pike NI LabVIEW 1 04-02-2009 01:14
Need help in creating program to use servo's to shift drive archiver 2001 19 24-06-2002 00:35


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

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