Hi, my eval board is Phytec KC-161 (with 64k ext RAM, and 256k ext FLASH). Why the target doesn't initialize arrays in free running? Thank you.
Thanks for those links, I'll see what can I do. Maybe the compiler optimized it away, if this really is all your code. You could check the assembly file. No. That code was just where I discovered the problem. I also tryed the follow code using Hyper Terminal. In debug mode the target is running well, but in free running not:
#include <reg161.h> #include <stdio.h> void setup_serial(); void main (void) { unsigned char cnt,array[6]={1,1,1,1,1,1}; setup_serial(); for(cnt=0; cnt<6; cnt++){ if(array[cnt] != 1) putchar('!'); else putchar('1'); //in hyper terminal is displaying six of '!', WHY? //it must be six of '1'! } while (1) { } } void setup_serial(){ P3 |= 0x0400; /* SET PORT 3.10 OUTPUT LATCH (TXD) */ DP3 |= 0x0400; /* SET PORT 3.10 DIRECTION CONTROL (TXD OUTPUT) */ DP3 &= 0xF7FF; /* RESET PORT 3.11 DIRECTION CONTROL (RXD INPUT) */ S0TIC = 0x80; /* SET TRANSMIT INTERRUPT FLAG */ S0RIC = 0x00; /* DELETE RECEIVE INTERRUPT FLAG */ S0BG = 0x19; /* SET BAUDRATE TO 19200 BAUD AT 16MHZ */ S0CON = 0x8011; /* SET SERIAL MODE */ }
> In debug mode the target is running well, but in free > running not
What do you mean exactly? Debug mode is on a simulator? Or on the target? And free run is on the target? Could there be a problem in the memory map/linker file? Is everything located in RAM?
What does the array contain in the incorrect situation?
- What do you mean exactly? Debug mode is on a simulator? Or on the target? I mean debug mode is on the target. - And free run is on the target? Yes. Free running I mean the execution of the device after I download the .H86 file to flash of the board.
- What does the array contain in the incorrect situation? I think that the length is not defined. When I tryed to determine what the array contains i think is 0xFF...
Thank you...
if(array[cnt] != 1) putchar('!');
might be wrong. You should better have written
if(array[cnt] != '1') putchar('!');
might be wrong.
No , it was correct. I made just a simple initialization, and tested if it had done...
No, the array is initialized with 1, not '1', so you should also check using 1 (not the ASCII value).
-- Joost
Sorry, maybe I didn't understand. the array is initialized with 1, not '1' Yes, it is... you should also check using 1 (not the ASCII value). So , i did. But not this is the problem , the problem is that after the initialization unsigned char array[6]={1,1,1,1,1,1}; the elements of the array are not values of 1 like I expect, so it isn't initialized. And I think the problem is in the project settings or startup file, where I don't know the solution...