I am using CodeWarrior V5.6 to program freescale's Power Quicc processor MPC852T. I am having a problem with Global variables which are being used in both source code and ISR. I have a code in which a global variable "Count" gets incremented in the ISR and is being decremented in a function in the source code. Now it so happens that an interrupt comes while this function (in the source code) is executing. Most of the times this code works fine, ie at the end of the function this "count" value shows the increment. But sometime, at random this does not happen, althought the ISR has got executed ie this "count" value shows NO increment and is not updated. What can be the cause of this problem? How can i avoid it? Are there any special compiller options that i need to set?
Also i have not enabled any optimisation setting in Codewarrior IDEand i also tried making this global variable "volatile" but there was no effect