Всем привет! Задался целью предусмотреть сохранение данных во внутреннюю EEPROM AVR ATtiny2313 при внезапном отключении питания. Внешний монитор питания, предусматривающий сброс МК для предотвращения произвольной записи в память-не лучший способ решить задачу. У меня всегда в ОЗУ есть данные, которые необходимо сохранить для последующей работы после возобновления питания. В интернете самый простой способ предлагают - воспользоваться зарядом конденсаторов после стабилизатора 7805. Нарыл схему на одном сайте, где автор поленился или не захотел подробно описать работу своей схемы и выложить прошивку, но из схемы в принципе понятно, что при изменении напряжения питания сразу после стабилизатора, вызывается соответствующее прерывание, в котором происходит экстренное сохранение данных. Я думаю, этот вариант подойдет, но как мне его еще снабдить безопасным RESET-ом сразу после сохранения, чтоб не записался мусор? Тут еще нашел http://www.radiomaster.net/pdf/pit/str46-50sx.pdf варианты, но боюсь, заряда конденсаторов не хватит, чтобы еще и работу этих схем потянуть. Как можно еще решить эту задачу? Может все-таки этот (на схеме) вариант с батареей подойдет? Не могу только сообразить, как без скачка напряжения плавно переключиться на батарею, сохраниться и уйти в power-down.
Последний раз редактировалось ArtemKolesnikov Вт янв 08, 2013 23:10:47, всего редактировалось 1 раз.
Как вариант - есть такие часики ds1307 у них,по-моему,есть пользовательская память на 56 байта.Критические данные можно хранить на них.С литиевой батарейкой на 3V,они могут хранить код годами.
Как вариант - есть такие часики ds1307 у них,по-моему,есть пользовательская память на 56 байта.Критические данные можно хранить на них.С литиевой батарейкой на 3V,они могут хранить код годами.
У тиньки 2313 тоже есть байты только в еепром , так что критические данные там тоже можно хранить, вопрос, только как их туда засунуть после пропадания питания.
Можно использовать прерывание от компаратора, как только чуешь просадку (ушел в прерывание). В прерывании нужно отключить все, что много жрет, и сохраниться от батарейки, в принципе Ваша схема должна проканать.
Скорость записи-чтения в eeprom и в озу,даже и по последовательному интерфейсу.В течении секунды данные в озу часиков можно изменять сотни и даже тысячи раз, и ничего с ним даже через несколько лет не случится.Соответственно,при падении напряжения,если проц будет остановлен супервизором,данные никуда не пропадут.
Я думаю, этот вариант подойдет, но как мне его еще снабдить безопасным RESET-ом сразу после сохранения, чтоб не записался мусор? Как можно еще решить эту задачу?
А зачем вам резет, сохранили данные и ждите пока напряжение не станет нормой.
И в преведенной вами схеме, конденсатор лучще поставить после диода, а напряжение контроллировать до кренки.
А еще перед записью данных в епром, проверить изменились ли они (на тот случай если при включении будет несколько бросков напряжения).
Заголовок сообщения: Re: Экстренное сохранение в EEPROM при отключении питания.AT
Добавлено: Вт янв 08, 2013 12:51:36
Держит паяльник хвостом
Карма: 15
Рейтинг сообщений: 70
Зарегистрирован: Ср мар 28, 2012 21:45:24 Сообщений: 906 Откуда: ВО
Рейтинг сообщения:0
Цитата:
преведенной вами схеме, конденсатор лучще поставить после диода
Да уж, слов нет. Автор схемки позаботился обо всём , за что ему +. По его схеме , данные для срочного сохранения можно записывать в EEPROM годами с интервалом 1 бит в год и без потерь.
Всем спасибо. Значит, в принципе, модуль питания из этой схемы вполне подойдет? В EEPROM нужно сохранять, так как не известно, как долго будет отключено основное питание, а резерва батарейки для работы хватит ненадолго.
ILYAUL писал(а):
Да я не именно Вас имел ввиду , а всю тему. ТС даже не понял , что скачал и не прочитал схему
ILYAUL, хорошо еще бы не хамить, а писать по делу, разве не для этого форум существует? К сожалению, в этой теме, на мой взгляд, вы офтопите - обсуждаете чужие схемы и чужое умение делать то или иное... В стартовом топике я этого не просил... Извиняюсь...
Я думаю, этот вариант подойдет, но как мне его еще снабдить безопасным RESET-ом сразу после сохранения, чтоб не записался мусор? Как можно еще решить эту задачу?
А зачем вам резет, сохранили данные и ждите пока напряжение не станет нормой.
И в преведенной вами схеме, конденсатор лучще поставить после диода, а напряжение контроллировать до кренки.
А еще перед записью данных в епром, проверить изменились ли они (на тот случай если при включении будет несколько бросков напряжения).
по моему самое верное решение, ни добавить, ни убавить.
Я тут поразмыслил над вашими дельными советами. Кондер 0.1 мкф вы предлагаете поставить после диода в цепи основного питания или после диоДОВ? Я понимаю это как способ сгладить возможный скачок напряжения при переключении на батарею, думаю, что диод в цепи батареи не сможет открыться моментально. Вполне с вами согласен, что смысла каждый раз при перепаде напряжения писать в EEPROM нет. При наличии годной батареи, нет и смысла защищаться от внезапных сбоев RESETом. Я всегда буду держать в оперативной памяти считанное значение из EEPROM, и свежерасчитанное, и писать в EEPROM только, если эти значения не равны. В общем, спасибо за советы.
Имею опыт решения данной проблемы, я бы в данном случае сделал так(что то уже описано выше) 1. Вывод мониторинга питания нужно подключать через делитель к питанию 12в, диод последовательно по входу 7805 между 12в и конденсаторами, один из них большой емкости 470-1000мкф. 2. Делитель рассчитать на срабатывание ниже 9в. 3. По прерыванию от ноги все выводы в режим входа и далее записывать только измененные значения. Если надо после просадки продолжить работу,то тут дальше лучше провести программный сброс. Но тут есть момент: т.к. после падения напряжения и срабатывания прерывания может быть ситуация,что напряжение еще не вернулось, а программа опять инициализирует прерывания, которое сразу и произойдет, что само по себе не страшно, т.к. процессор просто зациклится на действиях : прерывание, проверка на нужность записи, сброс, инициализация прерывания и т.д. Просто в программе нужно учесть это. Если не важно отключение прибора при просадке, то самое лучшее это остановка процессора в конце прерывания, выийти из которого можно только выкл-вкл. Есть еще вариант, в окончании прерывания на спец ногу подать 0, а она подключена к сбросу, т.о. происходит гарантированный сброс при просадке, только нужно инициализировать на выход прям в прерывании.
Есть еще вариант, в окончании прерывания на спец ногу подать 0, а она подключена к сбросу, т.о. происходит гарантированный сброс при просадке, только нужно инициализировать на выход прям в прерывании.
сброс при этом не будет гарантированным. Уже обсуждалось где-то здесь.
выход по пробуждению jmp 0x000 проверка и сброс SE (mcucr) переинициализация системы с особенностями, обусловленными состоянием флаеа SE (при аппаратном сбросе=0)
Я тут поразмыслил над вашими дельными советами. Кондер 0.1 мкф вы предлагаете поставить после диода в цепи основного питания или после диоДОВ? Я понимаю это как способ сгладить возможный скачок напряжения при переключении на батарею, думаю, что диод в цепи батареи не сможет открыться моментально.....
Все совершенно не так. Если будете использовать батарею, то оставьте все как есть в схеме. Насчет диодов и их переключении - почитайте литературу, сделайте несколько опытов, может чего и уясните, если нет то милости просим сюда, только с начальными знаниями о диодах. Если батарею выкинуть то надо будет добавить конденсатор n-ной емкости (рассчитывается по времени работы и току потребления или так наугад 100 - 470мкФ) после диода (то что после кренки, горизонтально расположен) для питания мк на время сохранения данных.
Заголовок сообщения: Re: Экстренное сохранение в EEPROM при отключении питания.AT
Добавлено: Ср янв 09, 2013 09:19:36
Держит паяльник хвостом
Карма: 15
Рейтинг сообщений: 70
Зарегистрирован: Ср мар 28, 2012 21:45:24 Сообщений: 906 Откуда: ВО
Рейтинг сообщения:0
Цитата:
ILYAUL, хорошо еще бы не хамить, а писать по делу,
Вы так считаете. Я написал исходя из Вашего видения схемы
Цитата:
Нарыл схему на одном сайте, где автор поленился или не захотел подробно описать работу своей схемы и выложить прошивку, но из схемы в принципе понятно, что при изменении напряжения питания сразу после стабилизатора, вызывается соответствующее прерывание, в котором происходит экстренное сохранение данных. , ... мне его еще снабдить безопасным RESET-ом сразу после сохранения, чтоб не записался мусор?
Как Вам потом стало известно , ничего экстренного в этой схеме не происходит , все плавно и не спеша. А свои выводы я сделал , как раз из Ваших слов 1-го поста. Вот Вам вопросики на которые Вы должны найти ответы , что бы решить задачку экстренного сохранения данных в EEPROM, если в схеме нет батарейки,согласно Вашим умозаключениям приведённой схемы: 1. Какова длительность записи байта данных в EEPROM 2. Сколько байт данных надо сохранить 3. Какое общее время потребуется для надёжного сохранения всех байтов 4. Какой порог BOD необходимо установить, что бы начать сохранение данных 5. Что такое BOD 6. За какое время напряжение питания MC упадёт с до минимально возможного для надёжного сохранения данных 7. Исходя из выше перечисленного , какой номинал конденсатора или чего-то ещё необходимо установить, чтобы получить общее время для надёжного сохранения всех байтов. Какой параметр MC надо при этом учитывать. 8 Что ещё можно предпринять , что бы продлить "жизнь" заряда конденсатора.
И еще рассмотреть все возможные случаи: пропадание напряжения питания; просто понижение напряжения, без полного отключения; бросок напряжения до 0 и сразу обратно. И соответственно начало работы мка после таких случаев.
Уважаемые котятки, а чего мы , собственно говоря, пытаемся обсуждать? Ведь топикстартер ни своей целевой схемы, ни конкретной задачи, которую он ставит не обозначил... А все остальное есть "стрельба из пушки по кузнечикам". В таком случае достаточно простой ссылки на сайты с книжками - "читай сам" : http://elektromehanika.org/ http://vprl.ru/ так как в каждом случае приемы, применяемые для сохранения данных зависят от конкретной схемы, включая всю обвязку, а не только МК. Мняу, в старое время, и такого хватило:
Вы не можете начинать темы Вы не можете отвечать на сообщения Вы не можете редактировать свои сообщения Вы не можете удалять свои сообщения Вы не можете добавлять вложения