|
|
  |
IAR и EEPROM, Инициализация |
|
|
|
Jan 19 2009, 11:56
|

Местный
  
Группа: Свой
Сообщений: 378
Регистрация: 10-09-07
Из: UKR/Voz
Пользователь №: 30 423

|
Возник такой вопрос. Еепром память планирую использоать для хранения корректирующих данных. Подскажите как иар проводит инициализацию этой памяти, а точнее не будит ли он затирать её при перезагрузке контроллера вначале пробовал писать так, получается как я понял иар перед выполнением функции майн инициализируется, из флеш памяти дублирует в еепром память Код unsigned char __eeprom ipaddr_gate_eeprom[4] = {192,168, 0, 2}; потом убрал данные, в итоге инициализация осталась но в еепром памяти логично стали "0" Код unsigned char __eeprom ipaddr_gate_eeprom[4]; мне нужно что данные после перезагрузки не инициализироваль в еепром а оставались от предыдущего сеанса работы контроллера, для этихже целей нужна еепром подскажите как правильней это сделать, не прибегая к собственным функциям
|
|
|
|
|
Jan 19 2009, 12:39
|

Частый гость
 
Группа: Свой
Сообщений: 152
Регистрация: 11-10-05
Из: Воронеж
Пользователь №: 9 491

|
Цитата(west329_ @ Jan 19 2009, 14:56)  Возник такой вопрос. Еепром память планирую использоать для хранения корректирующих данных. Подскажите как иар проводит инициализацию этой памяти, а точнее не будит ли он затирать её при перезагрузке контроллера вначале пробовал писать так, получается как я понял иар перед выполнением функции майн инициализируется, из флеш памяти дублирует в еепром память Код unsigned char __eeprom ipaddr_gate_eeprom[4] = {192,168, 0, 2}; потом убрал данные, в итоге инициализация осталась но в еепром памяти логично стали "0" Код unsigned char __eeprom ipaddr_gate_eeprom[4]; мне нужно что данные после перезагрузки не инициализироваль в еепром а оставались от предыдущего сеанса работы контроллера, для этихже целей нужна еепром подскажите как правильней это сделать, не прибегая к собственным функциям вопрос поставлен расплывчато. вообще, память EEPROM является энергонезависимой и предназначена как раз для хранения значений при потере питания, перезагрузках и прочих сбоях. Для того, чтобы воспользоваться этой ее функцией, достаточно просто записать значение в ячейку памяти. Другой вопрос, что будет происходить с этой памятью при стирании чипа (перепрошивке FLASH) - этим управляет фьюз EESAVE.
|
|
|
|
|
Jan 20 2009, 07:39
|

Частый гость
 
Группа: Свой
Сообщений: 152
Регистрация: 11-10-05
Из: Воронеж
Пользователь №: 9 491

|
Цитата(west329_ @ Jan 19 2009, 16:25)  to Rst7, именно это и требуется
Нужен тогда __no_init или без него.
В начале при включении питания просто получаю данные из еепром переменных, прогоняю их через сrс и сравниваю с сrс которое хранится в том же еепром, со стороны С компилятора разницы никакой что срам что епром сравниваеш. Хочется простоты и нехочется помнить по камим адресам в еепром всё это хранится пусть этим компилятор занимается.
В противном случае если ошибка данных сигнализация. ну тогда пишите __no_init __eeprom и все. суть вопроса до сих пор непонятна
|
|
|
|
|
Jan 20 2009, 11:12
|

Частый гость
 
Группа: Свой
Сообщений: 152
Регистрация: 11-10-05
Из: Воронеж
Пользователь №: 9 491

|
Цитата(west329_ @ Jan 20 2009, 14:08)  Благодарю за помощь, теперь всё понятно.
Подскажите а как правильней использовать еепром память, я вижу 2 варианта первый во время работы непосредственно брать данные с еепром и второй в начале программы поместить данные с еепром в озу, а дальше работать с озу ? это зависит от того, что Вам надо делать с этими данными. EEPROM энергонезависим, но работает заметно медленнее и имеет ограниченное число циклов стирания-записи
|
|
|
|
|
Jan 20 2009, 12:26
|
Местный
  
Группа: Свой
Сообщений: 426
Регистрация: 5-04-07
Из: Санкт-Петербург
Пользователь №: 26 782

|
Цитата(sergik_vrn @ Jan 20 2009, 14:12)  это зависит от того, что Вам надо делать с этими данными. EEPROM энергонезависим, но работает заметно медленнее и имеет ограниченное число циклов стирания-записи В дополнение. Рекомендуется, для сохранения ресурса, перед операцией записи выполнять сравнение уже хранящегося значения с записываемым и производить запись только если они отличаются.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|