|
|
  |
PIC18F8722 и внутренний EEPROM, компилятор С18 |
|
|
|
Aug 23 2008, 08:25
|
Участник

Группа: Участник
Сообщений: 26
Регистрация: 23-11-07
Из: Украина, Волынь
Пользователь №: 32 613

|
необходимо инициализировать EEPROM при прошивке кристалла. для HI-TECH код выглядит так: Код __EEPROM_DATA ( 50,0,50,0,50,0,50,0); Как аналогичное проделать для компилятора С18 от микрочипа?
|
|
|
|
|
Aug 25 2008, 09:59
|

Частый гость
 
Группа: Свой
Сообщений: 194
Регистрация: 14-02-07
Из: УКРАИНА
Пользователь №: 25 344

|
Цитата(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 свои или библиотечные . Хотя - "на любителя".
--------------------
"Для того чтобы избежать критики, надо ничего не делать, ничего не говорить и никем не быть" "Каждый из нас бывает дураком по крайней мере пять минут в день; мудрость заключается в том, чтобы не превысить лимит." Элберт Хаббард
|
|
|
|
|
Aug 26 2008, 05:53
|
Участник

Группа: Участник
Сообщений: 26
Регистрация: 23-11-07
Из: Украина, Волынь
Пользователь №: 32 613

|
Цитата(volodya @ Aug 25 2008, 12:59)  чтение как из переменной Но привильнее запись и чтение функциями доступа к EEPROM свои или библиотечные. Хотя - "на любителя". Написал свои функции чтения для int и long, используя библиотечные. Если читать просто как из переменной, то меняется последовательность байт. Вопрос второй: Переменные EEPROM инициализируются при каждом включении питания, или один раз при программировании? Надо один раз при программировании.
|
|
|
|
|
Aug 27 2008, 04:43
|

Частый гость
 
Группа: Свой
Сообщений: 194
Регистрация: 14-02-07
Из: УКРАИНА
Пользователь №: 25 344

|
Цитата(alex1979 @ Aug 26 2008, 08:53)  Надо один раз при программировании. При программировании только. При перезаписи софтом все соответствует задаче EEPROM - хренении данных.
--------------------
"Для того чтобы избежать критики, надо ничего не делать, ничего не говорить и никем не быть" "Каждый из нас бывает дураком по крайней мере пять минут в день; мудрость заключается в том, чтобы не превысить лимит." Элберт Хаббард
|
|
|
|
|
Aug 28 2008, 12:21
|
Знающий
   
Группа: Свой
Сообщений: 600
Регистрация: 27-05-05
Пользователь №: 5 482

|
Цитата(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};
|
|
|
|
|
Aug 28 2008, 16:06
|
Участник

Группа: Участник
Сообщений: 26
Регистрация: 23-11-07
Из: Украина, Волынь
Пользователь №: 32 613

|
для dac
изменение переменной и ИНИЦИАЛИЗАЦИЯ - это разные вещи. С18 и С30 - тоже.
Сообщение отредактировал alex1979 - Aug 28 2008, 16:08
|
|
|
|
|
Aug 29 2008, 05:41
|
Участник

Группа: Участник
Сообщений: 26
Регистрация: 23-11-07
Из: Украина, Волынь
Пользователь №: 32 613

|
Цитата(volodya @ Aug 29 2008, 07:43)  При программировании записывается инициаилизирующее значение При Запуске программы (холодный старт , RESET и т.д.) содержимое EEPROM не меняется, сохраняя последнее внесенное изменение. Вопрос возник по причине,что: а) реального микроконтроллера пока нет б) провожу отладку в Протеусе в)после добавления EEPROM переменных увеличилась секция _do_cinit в файле c018.c Спасибо за ответы
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|