This discussion has been locked.
You can no longer post new replies to this discussion. If you have a question you can start a new discussion

variables values changes unexpectly

I declare these variables:

unsigned long idata xpaquetes,xbytes;
unsigned long errors,PHY,CRC;

I ran my progran and after 3 minutes the errors,PHY and CRC variables change to
0xaaaaaaaaaaaaaaaa

but the xpaquetes and xbytes still have the right value?

I think something is wrong during compilation
because my program started counting and updating these variables but after few minutes these variables are unstable

what can I do?

I put now :

unsigned long xdata errors,PHY,CRC;

but I got the same error

please give me suggestions

Parents
  • "..variables change to 0xaaaaaaaaaaaaaaaa ..."
    it's a bit too long, isn't it :-?
    (is it possibly double precision?)

    "what can I do?"
    I think look for the bug. I am almost sure it must be there.

    You didn't give any info what way you handle these variables, if there are any interrupts, etc.

Reply
  • "..variables change to 0xaaaaaaaaaaaaaaaa ..."
    it's a bit too long, isn't it :-?
    (is it possibly double precision?)

    "what can I do?"
    I think look for the bug. I am almost sure it must be there.

    You didn't give any info what way you handle these variables, if there are any interrupts, etc.

Children
  • the unsigned long variables are used to count events and only are counters ..
    yesterday I put

    unsigned long idata PHY,CRC, ERROR and works
    well
    soembody tell me why??

    thanks

  • A (hardware?) problem with your XDATA?

  • I don't think so, other int and char varibles work well, the only problem is with the float and the long variables

    any suggestion
    I'm using the 7.02 version of the c51 compiler

    thanks

  • Maybe an overlay problem - look at the linker mapfile to make sure that the address is only used by these variables.

    Make sure that the memory settings for your hardware are correct (XDATA).

    Do you have the same problem on using the simulator?

  • I have a similar problem.
    The following is code snippet:

    	a = Float2Int(23.1);
    	a = Float2Int(23.5);
    	a = Float2Int(-23.6);
    	a = Float2Int(-23.1);
     	a = ceil(-23.6);
    	a	 = (int) UcharAverage(ucA,10);
    	//after the sentence the a's value will be uncetain
    	iAvg = IntAverage(iA,10);
    	fAvg = FloatAverage(fA,10);
    
    	Float2asc(-1278.98791,ucA);
    	Float2asc(-99999.89971,ucA);
    
    after the sentece a = (int)UcharAverage(ucA,10);
    the value of a is changed irregularly.Note that,the a's value is never used later.
    However when I add a sentence behind,
    ...
    	a	 = (int) UcharAverage(ucA,10);
    	iAvg = IntAverage(iA,10);
    	fAvg = FloatAverage(fA,10);
          b = a;
    	Float2asc(-1278.98791,ucA);
    ...
    
    then the value of a is never changed. I think the reason is that,the variable(a) is not referenced any more later,so the compiler judge the space for the variable is unusful and frees the memory space.It depends on the compiler's optimization.But when it used later,the compiler think the variable may be used later on again,so it never freed the memory space.