Как записать в EEPROM перед отключением питания

Если ваш вопрос не влез ни в одну из вышеперечисленных тем, вам сюда.
Аватара пользователя
RadioKot
Прорезались зубы
Сообщения: 218
Зарегистрирован: Вс авг 15, 2010 18:03:04

Re: Как записать в EEPROM перед отключением питания

Сообщение RadioKot »

Добрый день. Подскажите а данные в еепром портятся от пропажи питания, так что потом фиг в эти ячейки запишешь? Или просто перезаписать можно появившийся мусор.
Я хочу раз в месяц писать в еепром меги 8 или 16 длинную стоковую переменную(50 символов). В чем минусы юзанья внутреней еепром для таких размеров переменной? И мне бы желательно тоже ставить внешний компаратор и проверять питание, дабы не начать запись в момент его пропажи? Или бода достаточно? (Запись в момент пропажи питания мне если кто не понял, не нужна). Заранее тенкс. БП обычный транс 12вольт
Имею 9 жизней
----------
Прошу не путать меня с тёзкой - "radio-kot"
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Re: Как записать в EEPROM перед отключением питания

Сообщение Arlleex »

Данные в EEPROM-памяти можно будет перезаписать. Испортится (возможно(!)) - содержимое ячеек. Но этот мусор можно будет перезаписать новыми правильными данными. Время записи в EEPROM-память довольно большое (по крайней мере в AVR), поэтому я бы позаботился в внешнем слежении за уровнем питающего напряжения. С помощью аналогового компаратора например (как это делается в большинстве случаев), ну или тем же BOD-ом (как предложили Вы).
Не умеешь - не берись, но не взявшись не научишься...
SmarTrunk
Друг Кота
Сообщения: 6014
Зарегистрирован: Чт ноя 26, 2009 11:16:50
Откуда: Москва

Re: Как записать в EEPROM перед отключением питания

Сообщение SmarTrunk »

Должно быть не сложно, если раз в месяц писать. Сложно, если "перед отключением", тут надо огород городить, и были дискуссии, как правильно, а как - нет. Но надо предотвратить порчу данных в ЕЕПРОМ при выключении питания. Тут есть известные стандартные рекомендации, а некоторые советуют ставить и внешний монитор питания.
LowBass
Первый раз сказал Мяу!
Сообщения: 27
Зарегистрирован: Ср июн 06, 2012 22:01:04

Re: Как записать в EEPROM перед отключением питания

Сообщение LowBass »

Здравствуйте, многоуважаемые. Нарисовал вот схемку, с LM393.
Первый компаратор при отключении питания должен вызвать прерывание, по которому МК запретит прерывания, переведёт все порты в z-состояние, считает eeprom, сравнит и, по необходимости, запишет в eeprom 10 байт.
Второй компаратор должен определить, что питание МК упало до 2,8V, и прижать ресет к земле, открыв транзистор Q1. По плану, ресет там и останется до полного обесточивания схемы.
Питание от компового БП. МК tiny2313a, тактируется от внутреннего генератора 1МГц. Диоды Шоттки.
А вопрос, собственно, такой: Достаточно ли будет кондёров 330, 220, 150 мкф для корректной работы схемы, на Ваш взгляд?
Вложения
LM393_12V.PNG
(20.69 КБ) 845 скачиваний
SmarTrunk
Друг Кота
Сообщения: 6014
Зарегистрирован: Чт ноя 26, 2009 11:16:50
Откуда: Москва

Re: Как записать в EEPROM перед отключением питания

Сообщение SmarTrunk »

Откуда же известно, с какой скоростью будет уменьшаться напряжение питания?
Выход LM393 уже с открытым коллектором, ни к чему ставить транзистор еще на выход.
Микросхемы-мониторы питания предпочтительнее, есть разные, на разные напряжения. Они "додержат" сброс до предельного уменьшения напряжения питания, а LM393 ниже 3В работать не будет (ну может и будет, но не до 1,5В точно), и что выдаст - неизвестно.
Если оставить компаратор, то следить лучше за напряжением +12В, которое является источником для схемы. Через обычный резистивный делитель... в этой теме уже про это писали, и обходились без компаратора.
LowBass
Первый раз сказал Мяу!
Сообщения: 27
Зарегистрирован: Ср июн 06, 2012 22:01:04

Re: Как записать в EEPROM перед отключением питания

Сообщение LowBass »

12В пропадут первыми. А для того, чтобы ресет остался на земле, как раз и использован транзистор. Когда 393 перестанет работать, база транзистора останется подтянутой к остаткам от 3,15В. Транзистору, чтобы быть открытым, достаточно 0,7В
LowBass
Первый раз сказал Мяу!
Сообщения: 27
Зарегистрирован: Ср июн 06, 2012 22:01:04

Re: Как записать в EEPROM перед отключением питания

Сообщение LowBass »

Тут вопрос, не прижмёт ли 393 ресет раньше, чем тинька успеет записать свои 10 байт?
SmarTrunk
Друг Кота
Сообщения: 6014
Зарегистрирован: Чт ноя 26, 2009 11:16:50
Откуда: Москва

Re: Как записать в EEPROM перед отключением питания

Сообщение SmarTrunk »

Это отдельный вопрос, очень важный. Он тут, в этой теме, обсуждался, правда, в другом контексте - как сделать, чтобы МК успел записать данные при пропадании напряжения питания.

Легко посчитать время, которое для этого нужно, и подобрать конденсатор нужной емкости. Зная тактовую частоту и тип МК - знаем ток (учесть, что ток может увеличиваться при записи в ЕЕПРОМ). - это все в даташите. Зная ток, подбираем емкость конденсатора, чтобы с запасом. У меня для АТмеги8 с 8МГц, для записи 4 байт, достаточно было около 300 мкФ. Еще зависит, стоит конденсатор до стабилизатора (по цепи 12В) или после. Первый вариант считается более грамотным, т.к. входное напряжение проседает, а выходное еще стабильно. Но и мониторить тогда надо входное напряжение, до стабилизатора.

В общем, все постоянные времени рассчитываются, а для бОльшей уверенности можно схемку в Микрокапе нарисовать и посмотреть.
LowBass
Первый раз сказал Мяу!
Сообщения: 27
Зарегистрирован: Ср июн 06, 2012 22:01:04

Re: Как записать в EEPROM перед отключением питания

Сообщение LowBass »

SmarTrunk, а Вы схемку-то мою не смотрели, поди?)) Там вот как раз всё это и мониторится. И вопрос у меня про кондёры как раз... viewtopic.php?p=1649321#p1649321
Я посчитал примерно, исходя из того, что тинька будет жрать 1,5 мА, и 393 1,5 мА. В даташите очень расплывчато потребление описано, да и моё знание буржуинского языка добавляет этим описаниям расплывчатости, ох как добавляет))
SmarTrunk
Друг Кота
Сообщения: 6014
Зарегистрирован: Чт ноя 26, 2009 11:16:50
Откуда: Москва

Re: Как записать в EEPROM перед отключением питания

Сообщение SmarTrunk »

Смотрел-смотрел, но сам бы все по-другому сделал, как обычно.

Например, зачем компаратор, для которого своих конденсаторов нужна куча, когда можно напряжения подавать, через делители, на ножки МК (в т.ч. на встроенный аналоговый компаратор, возможно, подключенный к встроенному источнику опорного напряжения).
LowBass
Первый раз сказал Мяу!
Сообщения: 27
Зарегистрирован: Ср июн 06, 2012 22:01:04

Re: Как записать в EEPROM перед отключением питания

Сообщение LowBass »

С внутренним компаратором разбираться долго - я первую свою программу в жизни написал, новичок в этом деле, плату вот готовлю... свободных ног у МК не осталось, а подтяжка к внутреннему Vref решит только задачу прерывания по внутреннему компаратору, ресет же прижать будет некому... LM393 вроде как подходит для решения обеих задач. Ладно, завтра соберу, посмотрим, правильно ли я насчитал этих чёртовых микрофарад и микросекунд)))
LowBass
Первый раз сказал Мяу!
Сообщения: 27
Зарегистрирован: Ср июн 06, 2012 22:01:04

Re: Как записать в EEPROM перед отключением питания

Сообщение LowBass »

Кондёры поставил. Проверил. С кондёром 100мкф на второй компаратор я переборщил, конечно)) Заряжается долго. Заменил на 10мкф. Ну а в основном, схема работает, как задумано. Ресет прижимается через 190мс после вызова прерывания. Тинька за это время чёрта лысого сосчитает и запишет... Я надеюсь)) Тестил с резюком 2К в качестве нагрузки. Щас буду с МК тестить
pavelm-ks
Первый раз сказал Мяу!
Сообщения: 38
Зарегистрирован: Пн мар 29, 2010 12:19:06

Re: Как записать в EEPROM перед отключением питания

Сообщение pavelm-ks »

Flasher писал(а):это из даташита на Вашу супер-пупер микросхему.Изображение

Давно ломали копья , но думаю никога не поздно внести ясноть. Уважаеммый, флешер, вы любите всех посылать в датащит, но сими то не особо углуюляетесь. Если вы внимательно прочитаете суть написанного в приведенной вами выдержке , то станет ясно, что опасность спада напруги на входе быстрее чем на выходе есть только тогда, когда напряжение выхода более 7вольт. Притание же процессоров в 99% процентах случаев не превышает 5 вольт. Поэтому плюсов в диодной защите нет никаких , только нминусы. И если ваш стаб выдает на выходе не более 5 вольт, то можно смело на выходе ставить емкость больше, чем на входе не опасаясь за выход схемы из строя, а вот если больше, тоди все сказанное флешером имеет место быть и диод нужен и кондер на входе не меньше чем на выходе ,а лучше больше.
Аватара пользователя
Serzh2000
Опытный кот
Сообщения: 867
Зарегистрирован: Пт фев 27, 2015 12:00:53
Откуда: Рязанская область

Re: Как записать в EEPROM перед отключением питания

Сообщение Serzh2000 »

прочитал всю ветку ... :shock: так и непонял что сделать надо чтобы записать в EEPROM перед отключением питания :dont_know:

если поставить от блока питания на плюсовой вывод диод и на +5 v ардуино. и конденсатор на 470мкф адуино по питанию , остальнее потребители просто от блока питания запитать.

задействовть пин N как вход.
digitalWrite(N, HIGH); // высокий сигнал

От плюсового вывода блока питания через сопротивление на 10кОм к пин N.
А в loop скече написать
if (пин N==0) записать eeprom;

правильно я понял?
parovoZZ
Мудрый кот
Сообщения: 1759
Зарегистрирован: Пт июн 01, 2018 07:28:45

Re: Как записать в EEPROM перед отключением питания

Сообщение parovoZZ »

Некоторые МК умеют заходить на прерывание при подходе питания к границе отключения монитором питания.

Сама дурина настолько медленная, что мониторить питание её функциями - это утопия.
Аватара пользователя
Serzh2000
Опытный кот
Сообщения: 867
Зарегистрирован: Пт фев 27, 2015 12:00:53
Откуда: Рязанская область

Re: Как записать в EEPROM перед отключением питания

Сообщение Serzh2000 »

тогда как?
Calligraff
Первый раз сказал Мяу!
Сообщения: 36
Зарегистрирован: Пн авг 12, 2013 11:59:28

Re: Как записать в EEPROM перед отключением питания

Сообщение Calligraff »

А зачем столько сложностей? Не проще на входе перед кренкой поставить Диод, до диода питание оптопары, а ключ оптопары на ногу МК для прерывания и перехода к записи eeprom? Ну соответственно до кренки, но после диода кондёр мкФ так на 1100 или 2200
Аватара пользователя
VNS
Говорящий с текстолитом
Сообщения: 1614
Зарегистрирован: Пт дек 10, 2021 12:48:46
Откуда: Тюмень

Re: Как записать в EEPROM перед отключением питания

Сообщение VNS »

правильно я понял?

Существует множество вариантов исполнения… всё зависит от схемотехники и от алгоритма в целом… один из простых вариантов, это желательно задействовать пин внешнего прерывания (INT0; INT1)… перед диодом установите делитель верхний допустим 1 кОм, нижний резистор 4,7 кОм и с выхода делителя уже на вывод внешнего прерывания. Условие для прерывания выбрать переход с 1 в 0. При возникновении прерывания записывайте необходимые значения в EEPROM. Не забудьте фьюзами включить контроль питания. Если нет возможности задействовать внешнее прерывание, то можно задействовать АЦП, хоть это уменьшит быстродействие отслеживания исчезновения питания…
jcxz
Мудрый кот
Сообщения: 1717
Зарегистрирован: Вт авг 15, 2017 10:51:13

Re: Как записать в EEPROM перед отключением питания

Сообщение jcxz »

А ещё сущестует FRAM/MRAM память. Она надёжнее любых мониторов питания. Имха.
phalanx
Нашел транзистор. Понюхал.
Сообщения: 158
Зарегистрирован: Сб апр 24, 2021 18:42:11

Re: Как записать в EEPROM перед отключением питания

Сообщение phalanx »

А ещё сущестует FRAM/MRAM память. Она надёжнее любых мониторов питания. Имха.

+1. А еще копеечные SPI Serial EERAM и I2C Serial EERAM, которым вообще кроме одного внешнего конденсатора ничего не нужно.
Ответить

Вернуться в «Разные вопросы по МК»