Илья (24.04.2013 16:51, просмотров: 472) ответил Argon на чет торможу. как правильно инициализировать EEPROM в MPLAB C30?
вот так (примеры на разный вкус): /* *****************************************************
* Объявления данных в EEPROM PIC24F KA
***************************************************** */
#define _EEDATA_ALIGNED(N) __attribute__((space(eedata), aligned(N)))
#define _EEDATA_ADDR(N) __attribute__((space(eedata), address(N + 0x7FFE00)))
// инициализация массивов в EEPROM по фиксированным адресам
int _EEDATA_ADDR(ADDR_EE_0) dat_ee_0[] = {7, 6, 5, 4, 3, 2, 1, 0};
int _EEDATA_ADDR(ADDR_EE_1) dat_ee_1[] = {0x01, 0x06};
char _EEDATA_ADDR(ADDR_EE__DATE) date_compile[] = {__DATE__};
char _EEDATA_ADDR(ADDR_EE__TIME) time_compile[] = {__TIME__};
// инициализация массивов в EEPROM с выравниванием по _EE_8WORDS (для PIC24F это 16 байт). Компилятор сам решает по каким адресам располагать
int _EEDATA_ALIGNED(_EE_8WORDS) dat_ee_aligned1[_EE_8WORDS / 2] = {0, 1, 2, 3, 4, 5, 6, 7};
int _EEDATA_ALIGNED(_EE_8WORDS) dat_ee_aligned2[_EE_8WORDS / 2] = {8, 9, 0x0a, 0x0b, 0x0c, 0x0d, 0x0e, 0x0f};
int _EEDATA_ALIGNED(_EE_8WORDS) dat_ee_aligned3[] = {10, 11, 12};
int _EEDATA_ALIGNED(_EE_8WORDS) dat_ee_aligned4[] = {13, 14, 15, 16, 'c'};