MPLAB syntax error?? No Way!!

OK, I am no programming Guru, so I am asking for help.
I am coding a simple torque limiting function. I have very carefully checked my work, yet when I “Build All”, MPLAB says I made a Syntax error. When I comment out the entire function, the error goes away. Please take a look at it and comment to your hearts content. The error is on line 111, which is where my first “if” takes place.

 /******************************************************** ****************************
*	Function name: Torque_Limit
*
*	Purpose: Reduce max torque to allow smoother driving transitions
*
*	Called from: autonomous./Autonomous(), and teleop.c/Teleop()
*
*	Arguments:	Target value from code or joystick, Previous value of pwm,
*   Max change (MAXTORQUE). DO NOT FORGET TO STORE FINAL PWM VALUE TO CORRECT 
*   VARIABLE (lastpwmXX) WHEN RETURNED!!!
*
*	Returns:	(int) pwm value
*
*
**************************************************************************************/
int Torque_Limit (int target, int previous)
{
	int setpmw;
	if((target - previous) > MAXTORQUE)
	{
		setpwm = (previous + MAXTORQUE);
	}
	else if((previous - target) > MAXTORQUE)
	{
		setpwm = (previous - MAXTORQUE);
	}
	else
	{
		setpwm = target;
	}
	return setpwm;
}

See the screen shot for the error.

mplab_error.JPG


mplab_error.JPG

what is MAXTORQUE defined to?

you are defining setpmw, but using setpwm after the if statements

Yep.

Is that a valid return statement? I thought it should be return(variable);

Silly question, but MAXTORQUE is defined globally somewhere? Hmm… is that a syntax error or something else?

If you comment out the first if thru to the else /if … else/ so the **else if **is now an if, does the error drop down to that if or does it go away?

The setpwm / setpmw error will crop up after this error is fixed.

Heh. I feel like I’m on a game show, with all these answers coming back.

Currently MAXTORQUE is defined to a value of 100 in the bob.h file. It will be modified once we experiment a little.

OK, I corrected my spelling error (thank you), but am still getting the same error for the same line of code.

Is there an include statement for bob.h in this file?

Did you put a semicolon or anything after #define MAXTORQUE 100

Does this c file #include the bob.h file? Or is this file bob.c? If you (temporarily) define MAXTORQUE in this file does the error go away?

Yep, MAXTORQUE is defined in bob.h.

I tried the comment out as you suggested before posting the question. The error moves to the new “if” statement.

I tried the comment out … The error moves to the new “if” statement.

That shows that both those if statements have the same error. Probably not an imbalanced { } from above. (You can remove the /* comment */). I’m still thinking the #define MAXTORQUE isn’t being seen by this file.

If you change MAXTORQUE to 100 does the error go away?

(I’m also imagining poor billbo911 running from the computer with mplab all the way across the room to the computer with internet access.)

Yes, bob.h included.
No, it doesn’t go away when defined locally.

Yes, bob.h is included.
No semi-colon on definition. BUT!!!
We have a winner!!! The line looked like this “#define MAXTORQUE = 100” The equal sign killed it.

Not the problem. Tried both ways. Problem solved above!

THANK YOU EVERYONE for helping me find this problem.!!

Note to self: “=” good in variable declaration, bad in definition.

Luckily, I have access on 2 side by side computers. It makes this much easier!:slight_smile: