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.
Dear all, The linker gives following error:
*** ERROR L107: ADDRESS SPACE OVERFLOW SPACE: DATA SEGMENT: ?DT?TIMER0_ISR?TIMER LENGTH: 0002H
I have a global buffer. If i declare it idata then the linker does not give any error. But the sprintf function gives garbage values. I am unable to understand the problem.
The following is the piece of code:
dtptr = &buff; strlen = sprintf(dtptr, "%d", PrbTemperature*1000); UART_TxArray(dtptr, strlen);
PrbTemperature is a float. dtptr, buff[7] and strlen are unsigned char.
kindly assist.
this is what i see on my terminal: Input Set-point Temperature 20201 ëGAÈ20264 îGAï20298 ðGB 20309 ïGB 20336 ðGB20176 óGB'19968 òGB219977 òGB>20239 õGBN20425 õGBT20433 öGBZ20447 õGBi20443 õGBr20464 ùGB€20443 ùGBˆ20165 úGB"20087 ùGBŸ20260 úGB«20542 ûGB®20572 ûGB¸20549 üGB¿20565 ûGBÅ20585 üGBÌ20579 ýGB×20342 þGBä20220 ÿGBê20275 20597 20702
The numbers are correctly displayed except that they are prefixed with some garbage values which i am unaware of how they creep in. and this is the change made in the code:
strlen = sprintf(dtptr, "%d", (uint16_t)(PrbTemperature*1000));
fixing it with IDATA only works if that leaves enough stack You, probably, have stack overflow