We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
Hello everyone,
I am using the PGA400 from Texas Instruments (an 8051W processor) with uVision V4.02 and have traced an issue back to using a switch statement in the commBuff ISR. It appears to either have corrupted or overflowed some sort of variable (this might not be the case but that's what it appears to have done). I've replaced it from:
switch (CommandState) { case (0): // random code here break; }
to:
if(CommandState==0) { // random code here }
This seems to have fixed my problem for whatever reason. Is it a common practice to avoid using switch statements in an ISR or is this a Keil related issue? Any help you can give me would be appreciated. Thanks a lot!
"CommandState is local to the ISR"
Not as shown in the code posted.
"I left out the other 14 or so switch statements"
Do you really mean that?
Or do you mean that you left out the other 14 case clauses from that one switch statement?
Sorry for the confusion, Andrew. I had CommandState mixed up with commData, which is local. You are correct, CommandState is a global variable (though it could easily be made local).
And you are correct, I have 14 other case clauses from a single switch statement, not 16 switch statements.
Sorry about that!