Answered: Cortex Disconnection Problems

Repost from https://vexforum.com/showthread.phpp=318144#post318144

I have been having consistent problems where VEXnet would disconnect and the joystick would lose control of the robot. Usually this is not a big problem and we can figure it ourselves via different vexnet keys or whatnot. The issue we are having now is that our arm motors would continue to run in the direction that it was previously moving in BEFORE the disconnect. We’ve ended up with only a couple of broken axles thankfully, as we have to dive to turn the robot off…

I am using the newest revision of robotC and any help is appreciated. Is it a problem with robotC or could it be my code? I’ve already removed my arm state codes and the includes file is a fresh copy.

EDIT :

I have flashed the three different firmwares required using ROBOTC (3.51)'s latest firmwares. I will try to replicate the problem tomorrow in class, but without our arm on so we don’t break any gears If it is indeed not my code and nothing wrong with ROBOTC, does that imply the cortex is … malfunctioning … ahh

Many thanks,
Timothy Leung

#pragma config(Sensor, dgtl1,  PistonLeft,     sensorDigitalOut)
#pragma config(Sensor, dgtl2,  PistonRight,    sensorDigitalOut)
#pragma config(Sensor, dgtl3,  EncoderLeft,    sensorQuadEncoder)
#pragma config(Sensor, dgtl5,  EncoderRight,   sensorQuadEncoder)
#pragma config(Sensor, dgtl7,  ArmEncoder,     sensorQuadEncoder)
#pragma config(Sensor, dgtl12, ArmButton,      sensorTouch)
#pragma config(Motor,  port1,           BackDriveLTwo, tmotorVex393, openLoop)
#pragma config(Motor,  port2,           FrontDriveL,   tmotorVex393, openLoop)
#pragma config(Motor,  port3,           ArmL2,         tmotorVex393, openLoop, reversed)
#pragma config(Motor,  port4,           ArmR1,         tmotorVex393, openLoop, reversed)
#pragma config(Motor,  port5,           BackDriveROne, tmotorVex393, openLoop)
#pragma config(Motor,  port6,           BackDriveLOne, tmotorVex393, openLoop, reversed)
#pragma config(Motor,  port7,           ArmL1,         tmotorVex393, openLoop)
#pragma config(Motor,  port8,           FrontDriveR,   tmotorVex393, openLoop, reversed)
#pragma config(Motor,  port9,           ArmR2,         tmotorVex393, openLoop)
#pragma config(Motor,  port10,          BackDriveRTwo, tmotorVex393, openLoop, reversed)
//*!!Code automatically generated by 'ROBOTC' configuration wizard               !!*//

#pragma platform(VEX)
#pragma competitionControl(Competition)
#pragma autonomousDuration(20)
#pragma userControlDuration(120)

#include "Vex_Competition_Includes.c"

// Variables

int joy_1_x = 0;
int joy_1_y = 0;
int joy_2_x = 0;
int FrontRight = 0;
int FrontLeft = 0;
int BackRight = 0;
int BackLeft = 0;
int armpower = 0;


void pre_auton()
{

	bStopTasksBetweenModes = true;


}



task autonomous()
{

}



task usercontrol()
{


	while (true)
	{



		// Getting Values
		joy_1_x = vexRT[Ch4];
		joy_1_y = vexRT[Ch3];
		joy_2_x = vexRT[Ch1];

		// Setting Deadzones
		if(joy_1_x <= 50 && joy_1_x >= -50){joy_1_x = 0;}
		if(joy_1_y <= 30 && joy_1_y >= -30){joy_1_y = 0;}
		if(joy_2_x <= 30 && joy_2_x >= -30){joy_2_x = 0;}


		// Holonomic math
		FrontLeft = (1*joy_1_y) + (joy_1_x) +	 (joy_2_x);
		FrontRight = (1*joy_1_y) + (-1*joy_1_x) + (-1*joy_2_x);
		BackRight = (1*joy_1_y) + (joy_1_x) + (-1*joy_2_x);
		BackLeft = (1*joy_1_y) + (-1*joy_1_x) + (joy_2_x);


		// Checking

		if (FrontLeft >= 127)
		{
			FrontLeft = 127;
		}
		else if (FrontLeft <= -127)
		{
			FrontLeft = -127;
		}

		if (BackRight >= 127)
		{
			BackRight = 127;
		}
		else if(BackRight <= -127)
		{
			BackRight = -127;
		}

		if (	FrontRight >= 127)
		{
			FrontRight = 127;
		}
		else if(	FrontRight <= -127)
		{
			FrontRight = -127;
		}

		if (BackLeft >= 127)
		{
			BackLeft = 127;
		}
		else if(BackLeft <= -127)
		{
			BackLeft = -127;
		}

		//// Motor


		motor[BackDriveLOne] = motor[BackDriveLTwo] = BackLeft;
		motor[FrontDriveL] = FrontLeft;
		motor[BackDriveROne] = motor[BackDriveRTwo] = BackRight;
		motor[FrontDriveR] = FrontRight;



		if(vexRT[Btn5U] == 1)
		{
			SensorValue[PistonLeft] =0;
			SensorValue[PistonRight] =0;

		}
		else if (vexRT[Btn5U] ==0)
		{
			SensorValue[PistonLeft] =1;
			SensorValue[PistonRight] =1;
		}




		if(vexRT[Btn6U] == 1)
		{
			armpower = 127;
		}
		else if (vexRT[Btn6D] ==1)
		{
			armpower = -127;
		}
		else
		{
			armpower = 0;
		}

		motor[ArmL1] = motor[ArmL2] = motor[ArmR1] = motor[ArmR2] = armpower;


	}

Timothy,

First we need to figure out the reason behind your connectivity issues.
Please describe the status of the LEDs on your Joystick before and after you drop the link.

I tried to duplicate your issue using the same version of ROBOTC along with the ROBOTC default code.
However I failed to duplicate the issue.

Can you email me your code in a zipped folder?
I would like to download and test your code, my email is support@VEXrobotics.com

-Eli

Email has been sent.

In regards to the status lights, I believe there is only one blinking green light. I believe it is the third light but I cannot be sure as we have not attempted to replicate the problem due to time constraints.

As I mentioned in the email, please take a look at

https://vexforum.com/t/urgent-cortex-disconnection-problems/22229/1