реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> PIC18F8722 и внутренний EEPROM, компилятор С18
alex1979
сообщение Aug 23 2008, 08:25
Сообщение #1


Участник
*

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



необходимо инициализировать EEPROM при прошивке кристалла.

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


Как аналогичное проделать для компилятора С18 от микрочипа?
Go to the top of the page
 
+Quote Post
volodya
сообщение Aug 25 2008, 09:59
Сообщение #2


Частый гость
**

Группа: Свой
Сообщений: 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 свои или библиотечные .
Хотя - "на любителя".


--------------------
"Для того чтобы избежать критики, надо ничего не делать, ничего не говорить и никем не быть"
"Каждый из нас бывает дураком по крайней мере пять минут в день; мудрость заключается в том, чтобы не превысить лимит." Элберт Хаббард
Go to the top of the page
 
+Quote Post
alex1979
сообщение Aug 26 2008, 05:53
Сообщение #3


Участник
*

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



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


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

Вопрос второй:
Переменные EEPROM инициализируются при каждом включении питания, или один раз при программировании?
Надо один раз при программировании.
Go to the top of the page
 
+Quote Post
volodya
сообщение Aug 27 2008, 04:43
Сообщение #4


Частый гость
**

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



Цитата(alex1979 @ Aug 26 2008, 08:53) *
Надо один раз при программировании.


При программировании только.
При перезаписи софтом все соответствует задаче EEPROM - хренении данных.


--------------------
"Для того чтобы избежать критики, надо ничего не делать, ничего не говорить и никем не быть"
"Каждый из нас бывает дураком по крайней мере пять минут в день; мудрость заключается в том, чтобы не превысить лимит." Элберт Хаббард
Go to the top of the page
 
+Quote Post
dac
сообщение Aug 28 2008, 12:21
Сообщение #5


Знающий
****

Группа: Свой
Сообщений: 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};
Go to the top of the page
 
+Quote Post
alex1979
сообщение Aug 28 2008, 16:06
Сообщение #6


Участник
*

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



для dac

изменение переменной и ИНИЦИАЛИЗАЦИЯ - это разные вещи.
С18 и С30 - тоже.

Сообщение отредактировал alex1979 - Aug 28 2008, 16:08
Go to the top of the page
 
+Quote Post
volodya
сообщение Aug 29 2008, 04:43
Сообщение #7


Частый гость
**

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



При программировании записывается инициаилизирующее значение При Запуске программы (холодный старт , RESET и т.д.) содержимое EEPROM не меняется, сохраняя последнее внесенное изменение.


--------------------
"Для того чтобы избежать критики, надо ничего не делать, ничего не говорить и никем не быть"
"Каждый из нас бывает дураком по крайней мере пять минут в день; мудрость заключается в том, чтобы не превысить лимит." Элберт Хаббард
Go to the top of the page
 
+Quote Post
alex1979
сообщение Aug 29 2008, 05:41
Сообщение #8


Участник
*

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



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

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

Спасибо за ответы a14.gif
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 17th June 2025 - 00:59
Рейтинг@Mail.ru


Страница сгенерированна за 0.01417 секунд с 7
ELECTRONIX ©2004-2016