Администрация форума не несёт ответственности за достоверность информации и оставляет за собой право редактировать или в особых случаях даже удалять посты без предупреждения. Спасибо за понимание.

Программирование ATMEL в BASCOM.

Информация о пользователе

Привет, Гость! Войдите или зарегистрируйтесь.


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Защита от сбоя питания при сохранении EEPROM


Защита от сбоя питания при сохранении EEPROM

Сообщений 1 страница 6 из 6

1

Подскажите как защититься от повреждения данных при сохранении в EEPROM если в момент записи пропало питание?
Есть какие либо алгоритмы или схемы?
У меня кроме как производить контроль напряжения блока питания, а перед питанием мк поставить емкость поболее и тоже контролировать напряжение и сравнивать.
Есть еще какие либо варианты?
Может микросхема есть какая для этого?
Спасибо

0

2

Вы должны осознавать, что всё зависит от задачи: сколько/объём пишется данных, сколько по времени он пишется, что делать если объём пишется, но понимаешь, что он не запишется до конца...
Тут путей несколько:

1. вести в данные контрольную сумму, чтобы понимать актуальность данных;
2. решение простецкое, часть схемы отвечающая за запись, должна иметь ёмкость/заряд электричества для "бесперебойного питания" на всё время записи и алгоритм определения "времени отсчета" при отключении питания.
3. оптимизировать алгоритм работы с данных, у меня в одном устройстве (работающем 24/7), алгоритм был такой, вначале записываются данные, потом пишется заголовок с адресом конца данных (в резервированное место). Внешние устройства, с которых писалась информация, быстрее умирали чем само устройство, следовательно, если данные приходили и потом внешка отваливалась, то было ещё время на запись. И если даже в этой ситуации запись была, но с сбоем, то максимум теряешь маленький кусок данных (т.к. адрес не изменился). Кстати адрес писать можно тоже в 2 места для надежности, если оба адреса не ровны, то берется за основу первый. В общем тут параноить можно до бесконечности. Можно вообще придумать так писать данные, что автоматом определять конец...

0

3

Спасибо за наводку.
Однако записываемые данные не так объемны. Всего 6 байт, но перезаписываются часто, при работе устр-ва 1 раз в полторы секунды. Еще надо додумывать чтобы менять адрес ячейки для записи, защита от переполнения кол-ва циклов записи.

0

4

Я писал тоже небольшой массив, причем он кешировался ДО записи в FRAM, дальше алгоритм был как выше описан, только каждый раз всё писалось в конец, если доходит до конца памяти, то идёт по кругу. За более года использования устройства не было потерь данных.

0

5

У меня схема такая: xmega + microsd карточка + конденсатор 10000 микрофарад + АЦП для контроля входного питания. Объемы - в несколько сот байт. При понижении питания Закрываю все файли и все. Ничего не пропадает. Сначала стоял конденсатор на 3900 микрофарад. Кстати на счет перезаписи раз всекунду, полторы у епромов есть ресурс чиклов чтени записи порядка 100000. А в сутках 86000 секунд. Может Имеет смысл сделат контроль питания, а записывать в короткий промежуток времени при пропадании питания?

0

6

lan_tosno написал(а):

у епромов есть ресурс чиклов чтени записи

Я по этом ушел сразу на FRAM и алгоритм был линейный, на подобии как у SSD (в одну и туже ячейку постоянно не писать, а делать ротацию ячеек с равномерном заполнением/устареванием).

lan_tosno написал(а):

конденсатор 10000 микрофарад

А зачем такой большой? Ведь достаточно диодом шоттки развязать схему с "мозгами" (МК) и там уже большая ёмкость не нужно (в районе 470мКф хватит за глаза). В общем во многом зависит от грамотной реализации питания...

0


Вы здесь » Программирование ATMEL в BASCOM. » Вопросы - ответы » Защита от сбоя питания при сохранении EEPROM