[quote name='SZ0' date='Aug 23 2008, 11:22' post='458992']
В поиске был... не могу разобраться с указателями
Есть массив в EEPROM, при запуске проца надо перебросить его в RAM. Написал такой код:
Код
unsigned short *ptr_win, *ptr_win_ee, *ptr_eeprom, g = 0;
ptr_win = (unsigned short *)&win[0];
ptr_win_ee = (unsigned short *)&win_ee[0];
unsigned short size_w = sizeof(win), i = 0; //size_w размер массива в eeprom
while(i < size_w)
{
EEAR = g++;
EECR |= (1<<EERE);
*ptr_win++ = EEDR;
i++;
}
[quote]Не получилось вместо g использовать указатель ptr_win_ee, который указывает на массив в eeprom и присваивать его значение EEAR. И при увеличении указателя *ptr_win++ он увеличивается на два байта, вместо 1. А как его заставить увеличиваться на байт, не могу сообразить

Выручайте, а то голова ваще гудит

[/quote]
Ва уже сказали что ptr_win_ee и ptr_win указатели на массив данных типа
unsigned short - т.е. двухбайтных величин. Указатель в любом случае будет увеличиваться на 2.Хотите увеличиывть на 1 объявляйте массивы как
unsigned char. Может быть Вам стоит возложить все обязанности по считыванию данных из еепром на компилятор и использовать например такое:
Код
unsigned short *ptr_win, *ptr_win_ee, *ptr_eeprom, g = 0;
ptr_win = (unsigned short *)&win[0];
ptr_win_ee = (unsigned short *)&win_ee[0];
unsigned short size_w = sizeof(win), i = 0; //size_w размер массива в eeprom
//sizeof(win) возвратит размер массива в байтах
while(i < (size_w/2)) // size_w/2 - кол-во элементов в массиве
{
*ptr_win++ = *ptr_win_ee++;
i++;
}