Кто нибудь сталкивался с такой проблемой, вот текст:
__eeprom unsigned int LID_ADC_Tabl[10];
unsigned int Select_LID_Position(unsigned int U)
{
char i;
for (i=0; i<10; i++) if (LID_ADC_Tabl[i] <= U) break;
if (i==0) return 0;
if (abs(U-LID_ADC_Tabl[i]) < abs(U-LID_ADC_Tabl[i-1])) return i;
else return (i-1);
}
Линкер ругается на строке :
if (abs(U-LID_ADC_Tabl[i]) < abs(U-LID_ADC_Tabl[i-1])) return i;
Error[e18]: Range error,
Number out of range. Valid range is -128 (-0x80) to 255 (0xFF).
File: G:\ATMega_8\Climat\LID.c, Line: 31
Source: LDI R19, (LID_ADC_Tabl - 2) >> 8
Where $ = Select_LID_Position + 0x54 [0xE4]
in module "LID" (G:\ATMega_8\Climat\Release\Obj\LID.r90),
offset 0x54 in segment part 11, segment CODE
What: 8 ? ((LID_ADC_Tabl + 0xFFFFFFFE) >> 1 & 0x7FFFFFFF) >> 8 - 1 : (LID_ADC_Tabl + 0xFFFFFFFE) [0xFFFFFF]
Allowed range: 0xFFFFFF01 - 0xFF
Operand: LID_ADC_Tabl [0xffffffff]
in module LID (G:\ATMega_8\Climat\Release\Obj\LID.r90),
Offset 0xfffffffe in segment part 9, segment EEPROM_I
Что это может означать?
Причем, если заменить в порочной строке j=i-1; и далее, в качестве индекса использовать j, то проблема снимается.
В чем может быть дело???