Цитата(BelTech @ Feb 22 2007, 22:51)

Проблема в следующем.
Есть переменная типа integer .Например unsigned int current_position=50000.
По ходу программы она меняется и при выключении устройства надо сохранить эту переменную во внутреннем EEPROM.
Но так как ячейки байтовые , то как я понимаю эту переменную надо разделить на 2 по 8 бит и записать по двум адресам.
С этим вот проблем вроде нет.Делаю так:
#define LOW(int) (unsigned char)(*((char*)&(int)+0)) //returns lowbyte
#define HIGH(int) (unsigned char)(*((char*)&(int)+1)) //returns highbyte
unsigned int current_position=50000;
unsigned char current_position_msb; //highbyte
unsigned char current_position_lsb; //lowbyte
current_position_msb=HIGH(current_position); // возвращает 195
current_position_lsb=LOW(currentr_position); // возвращает 80
И эти значения пишу в EEPROM.
При включении надо восстановить эту переменную.
Читаю current_position_msb и current_position_lsb,но как соеденить их в Integer,чтобы получилось current_position=50000, не знаю.
Или может есть решение по проще?
В IARе к примеру это всё - лишнее.
достаточно переменную объявить так, к примеру, и работать.
int16_t __eeprom eMinX = CLASTER_X*LENGTH_X;
если так как вы делаете, то достаточно сделать так
current_position = current_position_lsb + current_position_msb<<8;