Motor 10 Not Listed

Any idea why the following RobotC (3.54) code displays the motor configured on port 10 as “No Motor” in the Motors debug window?

Also, it seems somewhat inconsistent to reference IME values using the Motor Name as an index, while using the Sensor Name for the older encoders. Why even bother to name the IMEs if this how they are to be used?

In fact, a bit more consistency throughout RobotC would be great for kids just starting. For instance, why are we using hungarian notation for the IME values (nMotorEncoder]) yet all lowercase to reference the motor values (motor]). There are several other examples of mixed case, lower initial case, abbreviations, etc… being used for similar purposes. Would it be possible to adopt a uniform convention? Or, perhaps there is some sort of standard at work here, but I’m just too dense to recognize it. In which case, please let this aging mind in on the secret:)

In any event, here is the code producing the “no motor” value in the debug window.


#pragma config(I2C_Usage, I2C1, i2cSensors)
#pragma config(Sensor, in1,    ArmPosition,    sensorPotentiometer)
#pragma config(Sensor, dgtl1,  ScoopUpOuter,   sensorDigitalOut)
#pragma config(Sensor, dgtl2,  ScoopUpInner,   sensorDigitalOut)
#pragma config(Sensor, dgtl3,  ScoopDown,      sensorDigitalOut)
#pragma config(Sensor, I2C_1,  EncDriveRightRear, sensorQuadEncoderOnI2CPort,    , AutoAssign)
#pragma config(Sensor, I2C_2,  EncDriveLeftRear, sensorQuadEncoderOnI2CPort,    , AutoAssign)
#pragma config(Sensor, I2C_3,  EncDriveLeftMiddle, sensorQuadEncoderOnI2CPort,    , AutoAssign)
#pragma config(Sensor, I2C_4,  EncArmUpper,    sensorQuadEncoderOnI2CPort,    , AutoAssign)
#pragma config(Sensor, I2C_5,  EncArmLower,    sensorQuadEncoderOnI2CPort,    , AutoAssign)
#pragma config(Sensor, I2C_6,  EncDriveLeftFront, sensorQuadEncoderOnI2CPort,    , AutoAssign)
#pragma config(Sensor, I2C_7,  EncDriveRightFront, sensorQuadEncoderOnI2CPort,    , AutoAssign)
#pragma config(Sensor, I2C_8,  EncDriveRightMiddle, sensorQuadEncoderOnI2CPort,    , AutoAssign)
#pragma config(Motor,  port1,           DriveRightRear, tmotorVex393HighSpeed, openLoop, reversed, encoder, encoderPort, I2C_1, 1000)
#pragma config(Motor,  port2,           DriveRightFront, tmotorVex393HighSpeed, openLoop, reversed, encoder, encoderPort, I2C_7, 1000)
#pragma config(Motor,  port3,           ArmRightUpper, tmotorVex393HighSpeed, openLoop, reversed)
#pragma config(Motor,  port4,           DriveRightMiddle, tmotorVex393HighSpeed, openLoop, reversed, encoder, encoderPort, I2C_8, 1000)
#pragma config(Motor,  port5,           ArmRightLower, tmotorVex393HighSpeed, openLoop, reversed)
#pragma config(Motor,  port6,           ArmLeftLower,  tmotorVex393HighSpeed, openLoop, encoder, encoderPort, I2C_5, 1000)
#pragma config(Motor,  port7,           DriveLeftMiddle, tmotorVex393HighSpeed, openLoop, encoder, encoderPort, I2C_3, 1000)
#pragma config(Motor,  port8,           ArmLeftUpper,  tmotorVex393HighSpeed, openLoop, encoder, encoderPort, I2C_4, 1000)
#pragma config(Motor,  port9,           DriveLeftFront, tmotorVex393HighSpeed, openLoop, encoder, encoderPort, I2C_6, 1000)
#pragma config(Motor,  port10,          DriveLeftRear, tmotorVex393HighSpeed, openLoop, encoder, encoderPort, I2C_2, 1000)
//*!!Code automatically generated by 'ROBOTC' configuration wizard               !!*//

#pragma platform(VEX)

//Competition Control and Duration Settings
#pragma competitionControl(Competition)
#pragma autonomousDuration(20)
#pragma userControlDuration(120)

#include "Vex_Competition_Includes.c"

void pre_auton()
{
   bStopTasksBetweenModes = true;
}

task autonomous()
{
   AutonomousCodePlaceholderForTesting () ; 
}

task usercontrol()
{
   while (true)
   {
      UserControlCodePlaceholderForTesting () ;
   }
}