Автор Тема: Когда сохранять параметры в EEPROM?  (Прочитано 13285 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн AVE

  • Постоялец
  • ***
  • Сообщений: 161
  • Репутация: 2
  • Игорь, Казань
  • Поблагодарили: +228
Когда сохранять параметры в EEPROM?
« : 03 Декабря 2013, 21:14:44 »
0
С микроконтроллерами дело имею не часто, но не очень сложные вещи сделать могу. Поэтому заранее извиняюсь, если вопрос глупый.
В целом ситуация такая: есть некое устройство и есть несколько параметров (уставки), которые вводятся с кнопочек. Эти параметры должны сохраняться в EEPROM. Допустим устройство работает несколько часов, за это время параметры могут вообще не меняться, могут один-два раза измениться, но может быть, что в процессе изучения и настройки эти параметры будут сотни раз меняться.
Вопрос такой: когда записать эти параметры? Если я правильно понимаю, надо в момент выключения успеть записать, пока емкость БП еще не разрядилась. В общем пока не могу сообразить как это правильно сделать. Наверное есть уже отработанный способ?

Оффлайн Althair

  • Старожил
  • *****
  • Сообщений: 1766
  • Репутация: 11
  • Поблагодарили: +348
Re: Когда сохранять параметры в EEPROM?
« Ответ #1 : 03 Декабря 2013, 21:55:04 »
0
AVE, http://www.diyaudio.ru/forum/index.php?topic=1819.msg86095#msg86095
Читаем п. 2.1. Буду кусаться!

По теме: телепатів немає. Потрудитесь сообщить тип, марку и прочие характеристики контроллера.

и добавил...
Вопрос такой: когда записать эти параметры?

Думается мне, что записывать надо сразу по факту изменения. А то неровен час...  :laugh:
« Последнее редактирование: 03 Декабря 2013, 21:58:17 от Althair »

Оффлайн AVE

  • Постоялец
  • ***
  • Сообщений: 161
  • Репутация: 2
  • Игорь, Казань
  • Поблагодарили: +228
Re: Когда сохранять параметры в EEPROM?
« Ответ #2 : 03 Декабря 2013, 22:00:25 »
0
Профиль завтра поправлю.
Микроконтроллер AVR Mega.

и добавил...


и добавил...
С одной стороны - по факту изменения понятнее, проще и надежнее. С другой стороны если они будут часто и быстро меняться (как в моем примере) - не очень хорошо.
« Последнее редактирование: 03 Декабря 2013, 22:05:10 от AVE »

Оффлайн Althair

  • Старожил
  • *****
  • Сообщений: 1766
  • Репутация: 11
  • Поблагодарили: +348
Re: Когда сохранять параметры в EEPROM?
« Ответ #3 : 03 Декабря 2013, 22:15:09 »
0
Варианты на выбор: лепим на питание самой таракашки ионистор на пол-фарады, отгораживаем его от остального мира диодом. Назначаем на любую удобную ногу прерывание типа "ВСЕ ПРОПАЛО!!!", саму ногу закидываем на питающие 5 (или сколько там?) вольт ДО диода. По факту пропадания напряжения "снаружи" (за диодом), диод рано или поздно закроется, и АВРка будет питаться "сухпайком" от ионистора, пока снаружи творится трэш, угар, и содомия. Внешнее напряжение в итоге свалится ниже точки отработки Шмидта по входу прерывания (да-да, того самого "Нас предали!!!"), и вот тут нужно срочно и в панике ховаться по чердакам (записывать EEPROM), и давать глобальный HALT.
Ну, и еще (см. выше) - можно просто записывать все сразу по факту получения.

Оффлайн blindman

  • Старожил
  • *****
  • Сообщений: 798
  • Репутация: 13
  • Андрей
  • Поблагодарили: +18
Re: Когда сохранять параметры в EEPROM?
« Ответ #4 : 03 Декабря 2013, 22:50:53 »
0
если они будут часто и быстро меняться (как в моем примере) - не очень хорошо
часто и быстро - понятия относительные. Если за все время жизни девайса будет не более 100000 циклов записи - значит не часто.

Для борьбы с возможным повреждением EEPROM надо применять комплекс аппаратных и программных средств. Следует использовать монитор питания, внутренний или внешний. Обеспечить питание контроллера таким образом, чтобы при выключении напряжение удерживалось достаточно долго для завершения операции записи. Например, если питание 5В, то монитор должен быть настроен на 4, и при выключении напряжение должно падать от 4 до 3.3 В не быстрее, чем за 5 мс.  Можно завести 2 и более блока параметров в ПЗУ, и использовать поочередно. Активный блок определять по номеру версии, который писать вместе с  уставками и контрольной суммой. В качестве активного использовать блок с максимальным номером версии, из тех, что прошли проверку контрольной суммы

Оффлайн Althair

  • Старожил
  • *****
  • Сообщений: 1766
  • Репутация: 11
  • Поблагодарили: +348
Re: Когда сохранять параметры в EEPROM?
« Ответ #5 : 04 Декабря 2013, 00:20:01 »
0
Андрей, не мудри, пальцем покажи ;D
Какие контрольные суммы, тут, похоже, что-то очень бытовое. Вешать внешний супервайзер - не оправдает цели, имхо, а внутренний вроде как только на ресет умеет давить, не?

Оффлайн blindman

  • Старожил
  • *****
  • Сообщений: 798
  • Репутация: 13
  • Андрей
  • Поблагодарили: +18
Re: Когда сохранять параметры в EEPROM?
« Ответ #6 : 04 Декабря 2013, 17:42:15 »
0
Какие контрольные суммы
Я подсказываю, как сделать надежно. Порча ПЗУ при снятии  питания - факт, признаваемый атмелом. Хотя и редко себя проявляющий, нужно определенное стечение обстоятельств.

внутренний вроде как только на ресет умеет давить, не?
Большего и не требуется - нужно лишь не дать контроллеру возможности писать в ПЗУ когда питание ниже нормы.

Оффлайн Althair

  • Старожил
  • *****
  • Сообщений: 1766
  • Репутация: 11
  • Поблагодарили: +348
Re: Когда сохранять параметры в EEPROM?
« Ответ #7 : 04 Декабря 2013, 19:05:18 »
0
Большего и не требуется - нужно лишь не дать контроллеру возможности писать в ПЗУ когда питание ниже нормы.
Воооот, а человек как раз хочет при пропадании питалова успеть все записать, что сердцу дорого...

Оффлайн AVE

  • Постоялец
  • ***
  • Сообщений: 161
  • Репутация: 2
  • Игорь, Казань
  • Поблагодарили: +228
Re: Когда сохранять параметры в EEPROM?
« Ответ #8 : 04 Декабря 2013, 19:28:31 »
0
Спасибо за советы.
Сегодня посмотрел схему промышленного девайса, в котором есть сохранение настроек при выключении питания. Там сделано как советовал Althair (только без ионистров ацкой емкости и криков "Шеф, усе пропало").
Стоит внешний супервайзер питания, на него заведено напряжение до стабилизатора (с выпрямителя и сгл. конд.). Стабилизатор напряжения отделен от этой точки диодом. После стаба конденсатор приличной емкости. При снижении напряжения супервайзер генерирует аппаратное прерывание, по которому и происходит запись в EEPROM.
Контрольную сумму и какое-то резервирование (дублирование) наверное надо будет, но это еще впереди.

Оффлайн xar

  • Старожил
  • *****
  • Сообщений: 5224
  • Репутация: 16
  • Ренат
  • Поблагодарили: +271
Re: Когда сохранять параметры в EEPROM?
« Ответ #9 : 04 Декабря 2013, 19:41:13 »
0
тысячи мкф по 5в бооолее чем достаточно, никаких диодов (разве что остальная железяка кушает уйму, а если и кушает - отключать по преодолении определенного предела по минимуму) и тем более супервайзеров (если это не критичный девайс, но тогда уже и выключение извольте делать средствами мк). при выключении пишем в область памяти №1 с некой простенькой контрольной суммой, при включении проверяем контрольную сумму. если все норм, то инитимся в штатном режиме и копируем данные в область памяти номер два. если не норм - грузимся из области памяти №1

Оффлайн AVE

  • Постоялец
  • ***
  • Сообщений: 161
  • Репутация: 2
  • Игорь, Казань
  • Поблагодарили: +228
Re: Когда сохранять параметры в EEPROM?
« Ответ #10 : 04 Декабря 2013, 20:12:38 »
0
OK!
Про области памяти понял, у меня похожие мысли вертелись.
Начало не совсем понял, как без внешнего супервайзера понять, что питание пропадает?
Устройство не бытовое и должно быть достаточно надежным.
Спасибо.

Оффлайн xar

  • Старожил
  • *****
  • Сообщений: 5224
  • Репутация: 16
  • Ренат
  • Поблагодарили: +271
Re: Когда сохранять параметры в EEPROM?
« Ответ #11 : 04 Декабря 2013, 20:32:25 »
0
AVE, ацп встроенное юзать. или опору и компаратор.

Оффлайн blindman

  • Старожил
  • *****
  • Сообщений: 798
  • Репутация: 13
  • Андрей
  • Поблагодарили: +18
Re: Когда сохранять параметры в EEPROM?
« Ответ #12 : 05 Декабря 2013, 04:25:20 »
0
Ухищрения  с  записью в ПЗУ в критический момент (пропадание питания) надежности никак не добавляют. Писать в ПЗУ надо именно тогда, когда изменились уставки.

Если надо сохранять состояние, которое часто меняется в процессе работы, между включениями устройства, я бы применил внешнее ОЗУ с батарейным питанием. Опять же, с контролем целостности данных.

Оффлайн Althair

  • Старожил
  • *****
  • Сообщений: 1766
  • Репутация: 11
  • Поблагодарили: +348
Re: Когда сохранять параметры в EEPROM?
« Ответ #13 : 05 Декабря 2013, 07:48:46 »
0
У нас в светофорах сделано именно так - диод и ионистор. Правда, в еепром ничего не пишется, но состояние контроллера сохраняется очень надолго - около суток. Имхо, чтобы скинуть уставки, ионистора хватит заглаза.

 

Похожие темы

  Тема / Автор Ответов Последний ответ
45 Ответов
43225 Просмотров
Последний ответ 07 Октября 2011, 08:49:39
от TANk
14 Ответов
11868 Просмотров
Последний ответ 19 Апреля 2018, 16:03:59
от TANk
3 Ответов
4943 Просмотров
Последний ответ 10 Марта 2020, 15:11:05
от SSS2