Как записать в EEPROM перед отключением питания
Re: Как записать в EEPROM перед отключением питания
Добрый день. Подскажите а данные в еепром портятся от пропажи питания, так что потом фиг в эти ячейки запишешь? Или просто перезаписать можно появившийся мусор.
Я хочу раз в месяц писать в еепром меги 8 или 16 длинную стоковую переменную(50 символов). В чем минусы юзанья внутреней еепром для таких размеров переменной? И мне бы желательно тоже ставить внешний компаратор и проверять питание, дабы не начать запись в момент его пропажи? Или бода достаточно? (Запись в момент пропажи питания мне если кто не понял, не нужна). Заранее тенкс. БП обычный транс 12вольт
Я хочу раз в месяц писать в еепром меги 8 или 16 длинную стоковую переменную(50 символов). В чем минусы юзанья внутреней еепром для таких размеров переменной? И мне бы желательно тоже ставить внешний компаратор и проверять питание, дабы не начать запись в момент его пропажи? Или бода достаточно? (Запись в момент пропажи питания мне если кто не понял, не нужна). Заранее тенкс. БП обычный транс 12вольт
Имею 9 жизней
----------
Прошу не путать меня с тёзкой - "radio-kot"
----------
Прошу не путать меня с тёзкой - "radio-kot"
Re: Как записать в EEPROM перед отключением питания
Данные в EEPROM-памяти можно будет перезаписать. Испортится (возможно(!)) - содержимое ячеек. Но этот мусор можно будет перезаписать новыми правильными данными. Время записи в EEPROM-память довольно большое (по крайней мере в AVR), поэтому я бы позаботился в внешнем слежении за уровнем питающего напряжения. С помощью аналогового компаратора например (как это делается в большинстве случаев), ну или тем же BOD-ом (как предложили Вы).
Не умеешь - не берись, но не взявшись не научишься...
Re: Как записать в EEPROM перед отключением питания
Должно быть не сложно, если раз в месяц писать. Сложно, если "перед отключением", тут надо огород городить, и были дискуссии, как правильно, а как - нет. Но надо предотвратить порчу данных в ЕЕПРОМ при выключении питания. Тут есть известные стандартные рекомендации, а некоторые советуют ставить и внешний монитор питания.
Re: Как записать в EEPROM перед отключением питания
Здравствуйте, многоуважаемые. Нарисовал вот схемку, с LM393.
Первый компаратор при отключении питания должен вызвать прерывание, по которому МК запретит прерывания, переведёт все порты в z-состояние, считает eeprom, сравнит и, по необходимости, запишет в eeprom 10 байт.
Второй компаратор должен определить, что питание МК упало до 2,8V, и прижать ресет к земле, открыв транзистор Q1. По плану, ресет там и останется до полного обесточивания схемы.
Питание от компового БП. МК tiny2313a, тактируется от внутреннего генератора 1МГц. Диоды Шоттки.
А вопрос, собственно, такой: Достаточно ли будет кондёров 330, 220, 150 мкф для корректной работы схемы, на Ваш взгляд?
Первый компаратор при отключении питания должен вызвать прерывание, по которому МК запретит прерывания, переведёт все порты в z-состояние, считает eeprom, сравнит и, по необходимости, запишет в eeprom 10 байт.
Второй компаратор должен определить, что питание МК упало до 2,8V, и прижать ресет к земле, открыв транзистор Q1. По плану, ресет там и останется до полного обесточивания схемы.
Питание от компового БП. МК tiny2313a, тактируется от внутреннего генератора 1МГц. Диоды Шоттки.
А вопрос, собственно, такой: Достаточно ли будет кондёров 330, 220, 150 мкф для корректной работы схемы, на Ваш взгляд?
- Вложения
-
- LM393_12V.PNG
- (20.69 КБ) 845 скачиваний
Re: Как записать в EEPROM перед отключением питания
Откуда же известно, с какой скоростью будет уменьшаться напряжение питания?
Выход LM393 уже с открытым коллектором, ни к чему ставить транзистор еще на выход.
Микросхемы-мониторы питания предпочтительнее, есть разные, на разные напряжения. Они "додержат" сброс до предельного уменьшения напряжения питания, а LM393 ниже 3В работать не будет (ну может и будет, но не до 1,5В точно), и что выдаст - неизвестно.
Если оставить компаратор, то следить лучше за напряжением +12В, которое является источником для схемы. Через обычный резистивный делитель... в этой теме уже про это писали, и обходились без компаратора.
Выход LM393 уже с открытым коллектором, ни к чему ставить транзистор еще на выход.
Микросхемы-мониторы питания предпочтительнее, есть разные, на разные напряжения. Они "додержат" сброс до предельного уменьшения напряжения питания, а LM393 ниже 3В работать не будет (ну может и будет, но не до 1,5В точно), и что выдаст - неизвестно.
Если оставить компаратор, то следить лучше за напряжением +12В, которое является источником для схемы. Через обычный резистивный делитель... в этой теме уже про это писали, и обходились без компаратора.
Re: Как записать в EEPROM перед отключением питания
12В пропадут первыми. А для того, чтобы ресет остался на земле, как раз и использован транзистор. Когда 393 перестанет работать, база транзистора останется подтянутой к остаткам от 3,15В. Транзистору, чтобы быть открытым, достаточно 0,7В
Re: Как записать в EEPROM перед отключением питания
Тут вопрос, не прижмёт ли 393 ресет раньше, чем тинька успеет записать свои 10 байт?
Re: Как записать в EEPROM перед отключением питания
Это отдельный вопрос, очень важный. Он тут, в этой теме, обсуждался, правда, в другом контексте - как сделать, чтобы МК успел записать данные при пропадании напряжения питания.
Легко посчитать время, которое для этого нужно, и подобрать конденсатор нужной емкости. Зная тактовую частоту и тип МК - знаем ток (учесть, что ток может увеличиваться при записи в ЕЕПРОМ). - это все в даташите. Зная ток, подбираем емкость конденсатора, чтобы с запасом. У меня для АТмеги8 с 8МГц, для записи 4 байт, достаточно было около 300 мкФ. Еще зависит, стоит конденсатор до стабилизатора (по цепи 12В) или после. Первый вариант считается более грамотным, т.к. входное напряжение проседает, а выходное еще стабильно. Но и мониторить тогда надо входное напряжение, до стабилизатора.
В общем, все постоянные времени рассчитываются, а для бОльшей уверенности можно схемку в Микрокапе нарисовать и посмотреть.
Легко посчитать время, которое для этого нужно, и подобрать конденсатор нужной емкости. Зная тактовую частоту и тип МК - знаем ток (учесть, что ток может увеличиваться при записи в ЕЕПРОМ). - это все в даташите. Зная ток, подбираем емкость конденсатора, чтобы с запасом. У меня для АТмеги8 с 8МГц, для записи 4 байт, достаточно было около 300 мкФ. Еще зависит, стоит конденсатор до стабилизатора (по цепи 12В) или после. Первый вариант считается более грамотным, т.к. входное напряжение проседает, а выходное еще стабильно. Но и мониторить тогда надо входное напряжение, до стабилизатора.
В общем, все постоянные времени рассчитываются, а для бОльшей уверенности можно схемку в Микрокапе нарисовать и посмотреть.
Re: Как записать в EEPROM перед отключением питания
SmarTrunk, а Вы схемку-то мою не смотрели, поди?)) Там вот как раз всё это и мониторится. И вопрос у меня про кондёры как раз... viewtopic.php?p=1649321#p1649321
Я посчитал примерно, исходя из того, что тинька будет жрать 1,5 мА, и 393 1,5 мА. В даташите очень расплывчато потребление описано, да и моё знание буржуинского языка добавляет этим описаниям расплывчатости, ох как добавляет))
Я посчитал примерно, исходя из того, что тинька будет жрать 1,5 мА, и 393 1,5 мА. В даташите очень расплывчато потребление описано, да и моё знание буржуинского языка добавляет этим описаниям расплывчатости, ох как добавляет))
Re: Как записать в EEPROM перед отключением питания
Смотрел-смотрел, но сам бы все по-другому сделал, как обычно.
Например, зачем компаратор, для которого своих конденсаторов нужна куча, когда можно напряжения подавать, через делители, на ножки МК (в т.ч. на встроенный аналоговый компаратор, возможно, подключенный к встроенному источнику опорного напряжения).
Например, зачем компаратор, для которого своих конденсаторов нужна куча, когда можно напряжения подавать, через делители, на ножки МК (в т.ч. на встроенный аналоговый компаратор, возможно, подключенный к встроенному источнику опорного напряжения).
Re: Как записать в EEPROM перед отключением питания
С внутренним компаратором разбираться долго - я первую свою программу в жизни написал, новичок в этом деле, плату вот готовлю... свободных ног у МК не осталось, а подтяжка к внутреннему Vref решит только задачу прерывания по внутреннему компаратору, ресет же прижать будет некому... LM393 вроде как подходит для решения обеих задач. Ладно, завтра соберу, посмотрим, правильно ли я насчитал этих чёртовых микрофарад и микросекунд)))
Re: Как записать в EEPROM перед отключением питания
Кондёры поставил. Проверил. С кондёром 100мкф на второй компаратор я переборщил, конечно)) Заряжается долго. Заменил на 10мкф. Ну а в основном, схема работает, как задумано. Ресет прижимается через 190мс после вызова прерывания. Тинька за это время чёрта лысого сосчитает и запишет... Я надеюсь)) Тестил с резюком 2К в качестве нагрузки. Щас буду с МК тестить
Re: Как записать в EEPROM перед отключением питания
Flasher писал(а):это из даташита на Вашу супер-пупер микросхему.
Давно ломали копья , но думаю никога не поздно внести ясноть. Уважаеммый, флешер, вы любите всех посылать в датащит, но сими то не особо углуюляетесь. Если вы внимательно прочитаете суть написанного в приведенной вами выдержке , то станет ясно, что опасность спада напруги на входе быстрее чем на выходе есть только тогда, когда напряжение выхода более 7вольт. Притание же процессоров в 99% процентах случаев не превышает 5 вольт. Поэтому плюсов в диодной защите нет никаких , только нминусы. И если ваш стаб выдает на выходе не более 5 вольт, то можно смело на выходе ставить емкость больше, чем на входе не опасаясь за выход схемы из строя, а вот если больше, тоди все сказанное флешером имеет место быть и диод нужен и кондер на входе не меньше чем на выходе ,а лучше больше.
- Serzh2000
- Опытный кот
- Сообщения: 867
- Зарегистрирован: Пт фев 27, 2015 12:00:53
- Откуда: Рязанская область
Re: Как записать в EEPROM перед отключением питания
прочитал всю ветку ...
так и непонял что сделать надо чтобы записать в EEPROM перед отключением питания
если поставить от блока питания на плюсовой вывод диод и на +5 v ардуино. и конденсатор на 470мкф адуино по питанию , остальнее потребители просто от блока питания запитать.
задействовть пин N как вход.
digitalWrite(N, HIGH); // высокий сигнал
От плюсового вывода блока питания через сопротивление на 10кОм к пин N.
А в loop скече написать
if (пин N==0) записать eeprom;
правильно я понял?
если поставить от блока питания на плюсовой вывод диод и на +5 v ардуино. и конденсатор на 470мкф адуино по питанию , остальнее потребители просто от блока питания запитать.
задействовть пин N как вход.
digitalWrite(N, HIGH); // высокий сигнал
От плюсового вывода блока питания через сопротивление на 10кОм к пин N.
А в loop скече написать
if (пин N==0) записать eeprom;
правильно я понял?
Re: Как записать в EEPROM перед отключением питания
Некоторые МК умеют заходить на прерывание при подходе питания к границе отключения монитором питания.
Сама дурина настолько медленная, что мониторить питание её функциями - это утопия.
Сама дурина настолько медленная, что мониторить питание её функциями - это утопия.
-
Calligraff
- Первый раз сказал Мяу!
- Сообщения: 36
- Зарегистрирован: Пн авг 12, 2013 11:59:28
Re: Как записать в EEPROM перед отключением питания
А зачем столько сложностей? Не проще на входе перед кренкой поставить Диод, до диода питание оптопары, а ключ оптопары на ногу МК для прерывания и перехода к записи eeprom? Ну соответственно до кренки, но после диода кондёр мкФ так на 1100 или 2200
- VNS
- Говорящий с текстолитом
- Сообщения: 1614
- Зарегистрирован: Пт дек 10, 2021 12:48:46
- Откуда: Тюмень
Re: Как записать в EEPROM перед отключением питания
правильно я понял?
Существует множество вариантов исполнения… всё зависит от схемотехники и от алгоритма в целом… один из простых вариантов, это желательно задействовать пин внешнего прерывания (INT0; INT1)… перед диодом установите делитель верхний допустим 1 кОм, нижний резистор 4,7 кОм и с выхода делителя уже на вывод внешнего прерывания. Условие для прерывания выбрать переход с 1 в 0. При возникновении прерывания записывайте необходимые значения в EEPROM. Не забудьте фьюзами включить контроль питания. Если нет возможности задействовать внешнее прерывание, то можно задействовать АЦП, хоть это уменьшит быстродействие отслеживания исчезновения питания…
Re: Как записать в EEPROM перед отключением питания
А ещё сущестует FRAM/MRAM память. Она надёжнее любых мониторов питания. Имха.
Re: Как записать в EEPROM перед отключением питания
А ещё сущестует FRAM/MRAM память. Она надёжнее любых мониторов питания. Имха.
+1. А еще копеечные SPI Serial EERAM и I2C Serial EERAM, которым вообще кроме одного внешнего конденсатора ничего не нужно.