|
|
|
![]() |
|
|||||||
|
||||||||
![]() |
|
|
Thread Tools | Rate Thread | Display Modes |
|
|
|
#1
|
|||
|
|||
|
Re: Error creating tasks that use encoders
Looks like an uninitilized pointer is being dereferenced, but I can't tell for sure unless you post the whole source file to show how things are called and when.
-Joe |
|
#2
|
|||
|
|||
|
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 |
|
#3
|
|||
|
|||
|
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 |
|
#4
|
|||
|
|||
|
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 ![]() |
|
#5
|
||||
|
||||
|
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) |
![]() |
| Thread Tools | |
| Display Modes | Rate This Thread |
|
|
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 |