We are running a survey to help us improve the experience for all of our members. If you see the survey appear, please take the time to tell us about your experience if you can.
hi i am trying to compare the value of two signed chars. one is a plain variable currentval while the other is a signed char inside an array of type signed char called spectrumarray.for some reason it doesnt work.
xdata signed char spectrumarray[256]; signed char currentval;//current value at this freq int xdata channel; for(channel=0;channel<256;channel++){ for(sample=0;sample<70;sample++){//sample 70 times at this freq currentval=halSpiReadStatus(CCxxx0_RSSI); //this just reads a register from some a source external to the microcontroller if((signed char)spectrumarray[channel] < (signed char)currentval) spectrumarray[channel]=currentval; //want to put currentval into the array if it is more than the value currently in the array } printf("%Bd\n\r",(signed char)currentval); //did this just to check to see what the currentval was }
Used this to initalize the array
void init_array(void){ int xdata arrayindex; for(arrayindex=0;arrayindex<256;arrayindex++){ spectrumarray[arrayindex]=-128;//initialize to the lowest value possible } }
I am sure the currentval values are more than what is inside the array when they are compared, yet when i print out the whole array it only holds -128 for every value except the last.I'm kind of stumped.oh yea forgot to mention im also new to the C51. microcontroller in use is the Silabs C8051F320.
"i kept telling myself..."
So, the lesson to learn here is: assume nothing!
Always verify your assumptions; test your theories.
As already mentioned, this chip has on-chip debug - use it!