Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: PIC18F8722 и внутренний EEPROM
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > Все остальные микроконтроллеры > PIC
alex1979
необходимо инициализировать EEPROM при прошивке кристалла.

для HI-TECH код выглядит так:
Код
__EEPROM_DATA (    50,0,50,0,50,0,50,0);


Как аналогичное проделать для компилятора С18 от микрочипа?
volodya
Цитата(alex1979 @ Aug 23 2008, 11:25) *
необходимо инициализировать EEPROM при прошивке кристалла.

для HI-TECH код выглядит так:
Код
__EEPROM_DATA (    50,0,50,0,50,0,50,0);


Как аналогичное проделать для компилятора С18 от микрочипа?


Один из вариантов
Код
#pragma romdata EE_DATA
rom const int DATA_XX = -100;

Линкеры указать
Код
SECTION    NAME=EE_DATA     ROM=eedata


чтение как из переменной (но длиновастенько компилиться)
Но привильнее запись и чтение функциями доступа к EEPROM свои или библиотечные .
Хотя - "на любителя".
alex1979
Цитата(volodya @ Aug 25 2008, 12:59) *
чтение как из переменной
Но привильнее запись и чтение функциями доступа к EEPROM свои или библиотечные.
Хотя - "на любителя".


Написал свои функции чтения для int и long, используя библиотечные. Если читать просто как из переменной, то меняется последовательность байт.

Вопрос второй:
Переменные EEPROM инициализируются при каждом включении питания, или один раз при программировании?
Надо один раз при программировании.
volodya
Цитата(alex1979 @ Aug 26 2008, 08:53) *
Надо один раз при программировании.


При программировании только.
При перезаписи софтом все соответствует задаче EEPROM - хренении данных.
dac
Цитата(alex1979 @ Aug 26 2008, 09:53) *
Написал свои функции чтения для int и long, используя библиотечные. Если читать просто как из переменной, то меняется последовательность байт.

Вопрос второй:
Переменные EEPROM инициализируются при каждом включении питания, или один раз при программировании?
Надо один раз при программировании.

1. читайте про индейцев для своего компилятора (последовательность байт для переменных типа int и long)
2. а зачем тогда eeprom если изменяется только при программировании? ну напишите const и будет лежать во флэшь-памяти программ
ЗЫ
инициализируется следующим образом, правда для С30, подробнее читайте доку и смотрите примеры и шаблоны для компилятора, там все написано
Код
int _EEDATA(32) numberInDataEE[] = {    4, 2, 10, 10, 10, 0xFFFF, 0xFFFF, 0xFFFF,                 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF, 0xFFFF};
alex1979
для dac

изменение переменной и ИНИЦИАЛИЗАЦИЯ - это разные вещи.
С18 и С30 - тоже.
volodya
При программировании записывается инициаилизирующее значение При Запуске программы (холодный старт , RESET и т.д.) содержимое EEPROM не меняется, сохраняя последнее внесенное изменение.
alex1979
Цитата(volodya @ Aug 29 2008, 07:43) *
При программировании записывается инициаилизирующее значение При Запуске программы (холодный старт , RESET и т.д.) содержимое EEPROM не меняется, сохраняя последнее внесенное изменение.

Вопрос возник по причине,что:
а) реального микроконтроллера пока нет
б) провожу отладку в Протеусе
в)после добавления EEPROM переменных увеличилась секция _do_cinit в файле c018.c

Спасибо за ответы a14.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.