Go Down

Topic: Problem with java.lang.StackOverflowError (Read 849 times) previous topic - next topic

HighFever73

Hi,

I have written a program, and expanded it abit to breakout some code into routines, and when I try to compile it I get 'java.lang.StackOverflowError'. :(

I have got ver 12 Alpha of the compiler, running on Vista.  I have also re-installed java, but have no idea how to check the version.  

Any ideas of how to fix would be very welcome 8-).

Thanks,

Martin

Here is the code:
Code: [Select]

/*          Wheel encoder multi test 4
*
*    This test is designed to test 6 motor driver
*    
*  Mapping so far (Default direction in bracketts):
*   1-Not Working
*   2-Base     (CounterClockwise)
*   7-Shoulder (ClockWise)
*   4-Not Working
*   5-Gripper   (Close)
*/

       int MotorSpeed1 = 0;
       int MotorSpeed2 = 0;
       int MotorSpeed3 = 0;
       int MotorSpeed4 = 0;
       int MotorSpeed5 = 0;
       int MotorSpeed6 = 0;

       int PinPulse1 = 3;
       int PinDirection1 = 2;
       
       int PinPulse2 = 5;
       int PinDirection2 = 4;
       
       int PinPulse3 = 6;
       int PinDirection3 = 7;
       
       int PinPulse4 = 9;
       int PinDirection4 = 8;
       
       int PinPulse5 = 10;
       int PinDirection5 = 12;
       
       int PinPulse6 = 11;
       int PinDirection6 = 13;

       int SerialStreamByte = -1;
       int StepSize = 128;

       void setup()
       {
           Serial.begin(9600);
           for (int x = 2; x < 14; x++)
           {
               pinMode(x, OUTPUT);
               digitalWrite(x, LOW);
           }
           Serial.println("P4 Ready");
          // ExecCommand('r');
       }


       void loop()
       {
           SerialStreamByte = ListenForCommand();
           if (SerialStreamByte != -1)
           {
               ExecCommand(SerialStreamByte);
               DebugMotorSpeeds()
               LimitHardware();
               InterfaceHardware();
           }
       }
       int ListenForCommand()
       {
           if (Serial.available() > 0)
           {
               return Serial.read();
           }
           return -1;
       }
       void LimitHardware()
       {
           MotorSpeed1 = constrain(MotorSpeed1, -255, 255);
           MotorSpeed2 = constrain(MotorSpeed2, -255, 255);
           MotorSpeed3 = constrain(MotorSpeed3, -255, 255);
           MotorSpeed4 = constrain(MotorSpeed4, -255, 255);
           MotorSpeed5 = constrain(MotorSpeed5, -255, 255);
           MotorSpeed6 = constrain(MotorSpeed6, -255, 255);
       }
       void InterfaceHardware()
       {
           analogWrite(PinPulse1, abs(MotorSpeed1));
           digitalWrite(PinDirection1, MotorSpeed1 > 0 ? HIGH : LOW);

           analogWrite(PinPulse2, abs(MotorSpeed2));
           digitalWrite(PinDirection2, MotorSpeed2 > 0 ? HIGH : LOW);

           analogWrite(PinPulse3, abs(MotorSpeed3));
           digitalWrite(PinDirection3, MotorSpeed3 > 0 ? HIGH : LOW);

           analogWrite(PinPulse4, abs(MotorSpeed4));
           digitalWrite(PinDirection4, MotorSpeed4 > 0 ? HIGH : LOW);

           analogWrite(PinPulse5, abs(MotorSpeed5));
           digitalWrite(PinDirection5, MotorSpeed5 > 0 ? HIGH : LOW);

           analogWrite(PinPulse6, abs(MotorSpeed6));
           digitalWrite(PinDirection6, MotorSpeed6 > 0 ? HIGH : LOW);
       }
       void DebugMotorSpeeds()
       {
           Serial.print("MotorSpeed 1=");
           Serial.print(MotorSpeed1, DEC);
           Serial.print("            MotorSpeed 2=");
           Serial.print(MotorSpeed2, DEC);
           Serial.print("            MotorSpeed 3=");
           Serial.print(MotorSpeed3, DEC);
           Serial.print("            MotorSpeed 4=");
           Serial.print(MotorSpeed4, DEC);
           Serial.print("            MotorSpeed 5=");
           Serial.print(MotorSpeed5, DEC);
           Serial.print("            MotorSpeed 6=");
           Serial.print(MotorSpeed6, DEC);
           Serial.println();

       }
       void ExecCommand(int Command)
       {

           switch (Command)
           {
               case 'r':
                   Serial.println("Reset");
                   MotorSpeed1 = 0;
                   MotorSpeed2 = 0;
                   MotorSpeed3 = 0;
                   MotorSpeed4 = 0;
                   MotorSpeed5 = 0;
                   MotorSpeed6 = 0;
                   break;
               case '1':
                   MotorSpeed1 += StepSize;
                   break;
               case '!':
                   MotorSpeed1 -= StepSize;
                   break;
               case '2':
                   MotorSpeed2 += StepSize;
                   break;
               case '\"':
                   MotorSpeed2 -= StepSize;
                   break;
               case '7':
                   MotorSpeed3 += StepSize;
                   break;
               case '&':
                   MotorSpeed3 -= StepSize;
                   break;
               case '4':
                   MotorSpeed4 += StepSize;
                   break;
               case '$':
                   MotorSpeed4 -= StepSize;
                   break;
               case '5':
                   MotorSpeed5 += StepSize;
                   break;
               case '%':
                   MotorSpeed5 -= StepSize;
                   break;
               case '6':
                   MotorSpeed6 += StepSize;
                   break;
               case '^':
                   MotorSpeed6 -= StepSize;
                   break;
           }

       }


Anachrocomputer

Could you try something for me please?  Could you change the line:

Code: [Select]
               case '\"':

to:

Code: [Select]
               case 34:

and then recompile and see if anything changes.  I've seen a stack-dump recently where a mis-matched quote was present in a source file.  I'm suspicious of that escaped double quote.

Go Up
 


Please enter a valid email to subscribe

Confirm your email address

We need to confirm your email address.
To complete the subscription, please click the link in the email we just sent you.

Thank you for subscribing!

Arduino
via Egeo 16
Torino, 10131
Italy