Hi everybody,
i have detected some absurd behavior in my project. In not determinated intervalls i have a repeating problem with my At89c51Re2 software.
Now i reduced the Problem to a minimum.
Anywhere in my code i add a simple global variable (like static UINT32 g_ParameterChecksum = 0;) and the following code triggered the impossible error.
static UINT8 g_DigitalByteValue = 0; ... g_DigitalByteValue = 0; if (g_DigitalByteValue != 0) { Debug_ErrorOutput("Compiler Error? @digout"); Error_FatalError(ERROR_UNKOWN); } ...
when i removed the new variable it works well.
I am use code banking,funtion pointers, interupts and Uv3 (from command line). Program Size: data=233.1 xdata=8183 const=112 code=91375 Maximum block depth: 8
i suggest that some addresses pointers are mixed up, but i does not know why.
Has somebody a hint or solution for this problem?
Thanks a lot, David
I dont understand why this is working well or do I miss a point
probably you have less than 64k code and no banking.
In AT89C51RE2 there are 3 code bank and 1 common bank with each 32K code space. NO, In AT89C51RE2 there is 128k of code space that can be configured as "are 3 code bank and 1 common bank"
Erik
In my AT89C51RE2 there are 3 code bank and 1 common bank with each 32K code space configured as shown in www.atmel.com/.../doc7639.pdf .
code size=70977 const=120
*** CODE BANK 1 *** 008000H - 00B613H
*** CODE BANK 2 *** 008000H - 00AEAAH
*** CODE BANK 3 *** 008000H - 008AAFH
*** COMMON AREA *** 000000H - 00DBDDH
When i am put more than 64 in common area the compiler detected an overflow otherwise not.
David