ВходНаше всё Теги codebook 无线电组件 Поиск Опросы Закон Четверг
18 апреля
404953 Топик полностью
Илья (24.04.2013 16:51, просмотров: 425) ответил 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'};