Hi there All, I have a problem which seemed to be defying explanation, but I have come up with a theory. Could I possibly have some feedback on whether the following is likely, plausible, possible, untrue or downright rubbish? If one reads the contents of a CAN or ADC chip register at a particular address, then the label volatile is placed upon that address to prevent the compiler optimising out repeat readings of the address. If one reads the contents of the address into a variable, then the compiler would automatically treat the contents of this variable with similar care. Is it possible that there has been an oversight with statements where the contents of a variable depend on the contents of a volatile by way of an if statement, ie...
normal_var=volatile_var;
normal_var=voltile_var; if (normal_var=0x00) { another_normal_var+=1; }
just tried without xdata - it works too... And who gives a hoot. Succesful testing does no prove the abscence of bugs, it only proves the abscence of known bugs. Hans-Bernhard states: says nothing about what may happen next week, after you added some completely unconspicious pieces of code elsewhere in the program, or upgrade your compiler He is actually missing the real problem. The interrupt variable may share the location with an extremely rarely accessed variable in the mainstream and when - and only when - the interrupt happens while this little rarely active piece of code is running, you program will go astray. Why discuss "can I get by naking it the wrong way" just make it the right way and go on. Erik