Hi, I want to know whether below code will perform expected task or not ?
void test(unsigned char const xdata* buffer);
unsigned char magicString[8] = {0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00};
void main(void) { unsigned char i;
while(1) { for(i=0; i<8; i++) { magicString[i] += 1; } test(magicString); } }
void test(unsigned char const xdata* buffer) { unsigned char j;
for (j=8; j>0; j++) { send(*buffer++); // another function } }
Will test() and send() function works ok ? Will send() will send all 8 byte of data of magicString or not ? is there any logic mistake ?
Thanks in advance ?
I can do it on simulator and it works fine... but while i m running real time, its giving unpredicted behavior... i just wrote a simple modified piece of code, actual code is a bit different, but the piece giving error is that i wrote... do u find anything strange in that ?
I can do it on simulator and it works fine... but while i m running real time, its giving unpredicted behavior... sounds as if you are addressing xdata you do not have (activated). 1) what derivative do you use (all numbers and letters) 2) external RAM? if yes to 2) 3) what RAM (all numbers and letters) 4) what speed RAM? 5) what clock speed the uC? 6) what Vcc the uC, what Vcc the RAM
"...but while i m running real time, its giving unpredicted behavior..."
And that behavior is what, exactly?
behavior is as sometime processor is getting reset as there is nothing in the code which will cause reset. But as i have seen that my idata is getting corrupted somehow with strange pattern every time, so Program Counter is reset to 0x00 (Reset Vector Address)... and strange thing is that it only due to above code snippet... i doubt for the microcontroller....but not confirmed... so i just raised a question that whether is there something wrong to the above piece of code ? Pointer arithmetic is not proper or casting ... ??
Well, i am using a microcontroller with 256 byte internal data memory and 2K XRAM. i am using Large memory model which causes all local/global data stored in XRAM. Speed of uController may not cause this issue ....
Watchdog?
You haven't shown send().
behavior is as sometime processor is getting reset as there is nothing in the code which will cause reset.
Might be a hardware issue. Too little information to make this more than a guess, though.
Well, i am using a microcontroller with 256 byte internal data memory and 2K XRAM.
Would you please be so kind and not make life hard for the people who are trying to help you, free of charge ? Please post the exact model of microcontroller you're using. This information might not mean much to you, but it might be crucial for finding out what's going wrong.
Please post the exact model of microcontroller you're using.
I already posted, but evidently should have highlighted
"1) what derivative do you use (all numbers and letters)"
Erik