Например TDA7294

Форум РадиоКот • Просмотр темы - Как записать в EEPROM перед отключением питания
Форум РадиоКот
Здесь можно немножко помяукать :)

Текущее время: Вт сен 02, 2025 08:06:34

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 132 ]  1, , , , ...  
Автор Сообщение
Не в сети
 Заголовок сообщения: Как записать в EEPROM перед отключением питания
СообщениеДобавлено: Вс янв 22, 2012 01:16:43 
Открыл глаза

Зарегистрирован: Вт окт 14, 2008 23:47:09
Сообщений: 43
Рейтинг сообщения: 0
Здравствуйте.
Заинтересовал такой вопрос: как успеть записать в EEPROM мк AVR (любая mega) значение перед отключением питания.
Смысл вот в чем. есть устройство, которое постоянно считает фронты на своем входе. фронты меняются часто - 1 раз в секунду в среднем.
Значение счетчика должно сохраняться между выключениями питания устройства (= храним в энергонезависимой памяти).
Постоянно писать в EEPROM нельзя - относительно мало циклов записи (100 000). Хватит чуть больше чем на сутки работы.
Если взять внешнюю EEPROM память - не сильно облегчит - хватит только на пару недель.
Один из выходов - мониторить питание, и в момент отключения (это ведь все-таки какое-то время занимает) дергать атмегу за ногу, чтобы та сохранила значение счетчика из оперативки в EEPROM.
Но, как я понимаю, супервизор питания здесь не совсем подходит.
Как быть?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как записать в EEPROM перед отключением питания
СообщениеДобавлено: Вс янв 22, 2012 01:56:39 
Друг Кота
Аватар пользователя

Карма: 75
Рейтинг сообщений: 611
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3743
Рейтинг сообщения: 0
Медали: 3
Мявтор 1-й степени (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
Сказать наверняка не зная устройства сложно, т.к. неясно как быстро пропадает напряжение питания. Но можно питать МК от основного источника и от конденсатора через развязывающие диоды. Напряжение основного источника мониторить МК - как оно пропадет, прекращать программу и записывать данные в ЕЕПРОМ. Конденсатор подзаряжать от основного источника через диод.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как записать в EEPROM перед отключением питания
СообщениеДобавлено: Вс янв 22, 2012 01:56:57 
Друг Кота

Карма: 68
Рейтинг сообщений: 1408
Зарегистрирован: Сб янв 29, 2011 00:28:48
Сообщений: 7774
Рейтинг сообщения: 0
отслеживать не питание мк, а входное напряжение стабилизатора питания, например, стало меньше 8 В, надо записывать....а конденсатор по входу стабилизатора выбрать такой, чтобы хватило на время записи...


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как записать в EEPROM перед отключением питания
СообщениеДобавлено: Вс янв 22, 2012 02:06:28 
Открыл глаза

Зарегистрирован: Вт окт 14, 2008 23:47:09
Сообщений: 43
Рейтинг сообщения: 0
Конденсатор - это хорошо.
Входное питание - 12в (от импульсника). Часть схемы (обмотки релюшек и кой-какая мелочь) питается именно от +12. Помимо этого есть стабилизатор 7805 для получения +5в.
Поэтому можно уловить падение напряжения еще до стабилизатора.

Но не уверен, что заряда конденсатора хватит. В схеме используется около 10ти светодиодов (10мА х 10 = 100мА) и шесть семисегментных индикатора(80мА при динамическом использовании).
Кроме того, есть еще другие микрухи - логика, RTC. Какой по емкости должен быть конденсатор в питании?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как записать в EEPROM перед отключением питания
СообщениеДобавлено: Вс янв 22, 2012 02:19:03 
Друг Кота
Аватар пользователя

Карма: 75
Рейтинг сообщений: 611
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3743
Рейтинг сообщения: 0
Медали: 3
Мявтор 1-й степени (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
В предлагаемым мною способе от конденсатора будет питаться только сам МК. При пропадании напряжения будет запитан только МК (ножно применить суперкап), а вся остальнасхема обесточится, если толко светодиоды не подключены к портам МК напямую (я имею в виду плюс к МК, выход на землю). Если это так, можно подсоединить их между плюсом питания и выводом МК.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как записать в EEPROM перед отключением питания
СообщениеДобавлено: Вс янв 22, 2012 02:24:29 
Друг Кота

Карма: 68
Рейтинг сообщений: 1408
Зарегистрирован: Сб янв 29, 2011 00:28:48
Сообщений: 7774
Рейтинг сообщения: 0
12 В с импульсника - это хорошо, значит, уже 11,5 можно сделать порогом, дальше диод, этот конденсатор и 7805....4700 поставь, например...или по сигналу сразу выключить все доступные мк потребители, а потом записывать, тогда и гораздо меньшей ёмкостью обойдётся...


Последний раз редактировалось Enman Вс янв 22, 2012 02:30:09, всего редактировалось 2 раз(а).

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как записать в EEPROM перед отключением питания
СообщениеДобавлено: Вс янв 22, 2012 02:25:20 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 590
Зарегистрирован: Вт май 19, 2009 09:27:30
Сообщений: 3258
Откуда: Украина
Рейтинг сообщения: 0
На счёт постоянного использования EEPROM подтверждаю. Пару лет назад, когда AVR-ки осваивал, на тиньке (2313) часы сделал и, на случай сбоя питания, каждую минуту текущее время в EEPROM записывал. Так менее, чем через пол года эта функция перестала работать, из EEPROM читался какой-то мусор.
А на счёт супервизора, в AVR-ках есть BOD, который опционально следит за питанием, но он может толко давать сброс. Так что или схема с диодом и конденсатором, или можно внутренний компаратор использовать. Один его вход программно подключается к внутреннему ИОН, а второй к внешнему резистивному делителю на нужное значение и разрешаются прерывания по изменению состояния выхода компаратора. А по срабатыванию компаратора все нагрузки гасить. Ёмкость - С=I*T/U, размерности всех величин по системе СИ, T-необходимое время, I-потребляемый ток, U-разность напряжений, на которую допустимо опуститься для сохранения рабочих параметров микроконтроллера.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как записать в EEPROM перед отключением питания
СообщениеДобавлено: Вс янв 22, 2012 02:58:37 
Друг Кота
Аватар пользователя

Карма: 75
Рейтинг сообщений: 611
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3743
Рейтинг сообщения: 0
Медали: 3
Мявтор 1-й степени (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
Хорошая идея насчет BOD. В Меге фьюзами можно выставить уровень BOD 4.3 В. Из-за двух развязывающих диодов напряжение на аварийном кондере при отключении питания будет 3.8 В - достаточное для записи в EEPROM. Произойдет Reset и программа начнется сначала. В самом ее начале можно проверять бит BORF в регистре MCUSR и по его установке производить запись в ЕEПРОМ.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как записать в EEPROM перед отключением питания
СообщениеДобавлено: Вс янв 22, 2012 03:04:45 
Открыл глаза

Зарегистрирован: Вт окт 14, 2008 23:47:09
Сообщений: 43
Рейтинг сообщения: 0
Вот что у меня получилось на данный момент.

Изображение
Компаратор сравнивает опорное напряжение 3.3в (просто такой стабилитрон был в наличие) и исходное +12в.
В нормальном режиме все "ок" - на выходе компаратора высокий уровень.
Если отключается входное напряжение, то оно будет снижаться быстрее всех. и компаратор своим выходом с открытым коллектором притянет выход к земле, что есть сигнал для мк.
По этому сигналу мк отключает все светодиоды, всю нагрузку. Останется только питание прочей логики. В этот момент питание схемы поддерживается конденсаторами C2 и C5. И их как раз и должно хватить на то, чтобы МК успел записать значение счетчика в ЕЕПРОМ.
С3 нужен для поддержания опорной точки после отключения питания - разряжаться с 3.3в будет ох как долго.

Грабли: пробовал поставить стабилитрон на 9.1 вольт - в итоге на выходе компаратора всегда 0. Подозреваю, что в этом случае его и питать надо от +12в. Но тогда возникает проблема с преобразованием уровня на выходе.

Я правильно все понял/сделал?

Есть другой вариант. В схеме в качестве RTC я использую DS1307. У нее вроде на борту есть целых 56 байт памяти, резервно питаемой от батарейки 3в.
Насколько я понимаю, там неограниченное число циклов записи (память, по сути, энергозависимая). Может значение счетчика каждый раз туда писать?


Вложения:
Sch1.png [64.71 KiB]
Скачиваний: 6652
Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как записать в EEPROM перед отключением питания
СообщениеДобавлено: Вс янв 22, 2012 03:08:50 
Открыл глаза

Зарегистрирован: Вт окт 14, 2008 23:47:09
Сообщений: 43
Рейтинг сообщения: 0
Ser60 писал(а):
Хорошая идея насчет BOD. В Меге фьюзами можно выставить уровень BOD 4.3 В. Из-за двух развязывающих диодов напряжение на аварийном кондере при отключении питания будет 3.8 В - достаточное для записи в EEPROM. Произойдет Reset и программа начнется сначала. В самом ее начале можно проверять бит BORF в регистре MCUSR и по его установке производить запись в ЕEПРОМ.

Так ведь сначала произойдет РЕСЕТ, вызванный BOD-ом. Я так понимаю, что значения всех переменных будут сброшены. Что тогда писать в ЕЕПРОМ после сброса?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как записать в EEPROM перед отключением питания
СообщениеДобавлено: Вс янв 22, 2012 03:19:11 
Друг Кота

Карма: 68
Рейтинг сообщений: 1408
Зарегистрирован: Сб янв 29, 2011 00:28:48
Сообщений: 7774
Рейтинг сообщения: 0
смысла в большой ёмкости на ВЫХОДЕ 7805 нет, только на входе.....
Изображение


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как записать в EEPROM перед отключением питания
СообщениеДобавлено: Вс янв 22, 2012 03:33:46 
Друг Кота
Аватар пользователя

Карма: 75
Рейтинг сообщений: 611
Зарегистрирован: Ср дек 24, 2008 09:58:58
Сообщений: 3743
Рейтинг сообщения: 0
Медали: 3
Мявтор 1-й степени (1) Мявтор 2-й степени (1) Мявтор 3-й степени (1)
RVL писал(а):
Так ведь сначала произойдет РЕСЕТ, вызванный BOD-ом. Я так понимаю, что значения всех переменных будут сброшены. Что тогда писать в ЕЕПРОМ после сброса?


При ресете состояние RAM не меняется, если только напряжение питания будет выше порога сохранения RАМ - заведомо больше 1.8В

Если в системе есть 1307 - можно писать в ее RAM неограниченно. Данные сохранятся пока у нее будет работать своя баратея.

А насчет схемы: Д1 уберите, анод Д2 переключите на выход 7805 а вжод питания МК подсоедините через диод к выходу 7805 и через другой диод к C1.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как записать в EEPROM перед отключением питания
СообщениеДобавлено: Вс янв 22, 2012 11:45:42 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 590
Зарегистрирован: Вт май 19, 2009 09:27:30
Сообщений: 3258
Откуда: Украина
Рейтинг сообщения: 0
BOD не катит.

RVL, я же написал, кмпаратор и источник встроенного внутри меги есть, надо только внешний делитель.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как записать в EEPROM перед отключением питания
СообщениеДобавлено: Вс янв 22, 2012 11:50:50 
Поставщик валерьянки для Кота

Карма: 1
Рейтинг сообщений: 5
Зарегистрирован: Ср май 11, 2011 21:37:45
Сообщений: 1995
Откуда: Цветочный город
Рейтинг сообщения: 0
Ser60 писал(а):
Хорошая идея насчет BOD. В Меге фьюзами можно выставить уровень BOD 4.3 В. Из-за двух развязывающих диодов напряжение на аварийном кондере при отключении питания будет 3.8 В - достаточное для записи в EEPROM. Произойдет Reset и программа начнется сначала. В самом ее начале можно проверять бит BORF в регистре MCUSR и по его установке производить запись в ЕEПРОМ.

как только напряжение снизится ниже порога BOD, МК будет не просто сброшен, а войдет в состояние сброса и там будет оставаться, пока напряжение не станет выше порога BOD. не выйдет номер.

_________________
битва с дураками проиграна, победители торжествуют. слава победителям!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как записать в EEPROM перед отключением питания
СообщениеДобавлено: Вс янв 22, 2012 12:06:32 
Друг Кота
Аватар пользователя

Карма: 46
Рейтинг сообщений: 590
Зарегистрирован: Вт май 19, 2009 09:27:30
Сообщений: 3258
Откуда: Украина
Рейтинг сообщения: 0
Прошу прощения за офф

Мастер Ломастер, а ты не думаешь, что твоя аватарка является оскорбительной для твоих идейных собратьев?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как записать в EEPROM перед отключением питания
СообщениеДобавлено: Вс янв 22, 2012 12:08:35 
Поставщик валерьянки для Кота

Карма: 11
Рейтинг сообщений: 58
Зарегистрирован: Пт окт 31, 2008 09:38:55
Сообщений: 1957
Откуда: Одесса
Рейтинг сообщения: 0
РЕбята!
А почитать тему проваттметр тяжело?

там же всё расписано!!!

ставиш 10 000...100 000 мкф 6.3 вольт на выходе 7805

на компаратор через переменник 1-100 килоом заводиш 3.3 вольта, второй вывод внутреннего компаратора на внутреннюю опору 2.56 и ВУАЛЯ!
в прерывании по перекидыванию компаратора все выходы в Z состояние и пишеш свою еепром

BOD обязательно на 3.3 вольта и после завершения всех записей ОБЯЗАТЕЛЬНО почитать / записать ЛЮБУЮ другую НЕНУЖНУЮ ячейку еепрома...с вероятностью 70% последняя прочитанная или записанная ячейка ПОРТИТСЯ при выключении питания !!!

Ещё рекомендую в компараторном прерывании вконце войти в вечный цикл и взвести вачдог...тогда при кратковременном пропадании питания МК не перезагрузится но сохранится - лучше бы в таком случае МК Перезагрузить! вот вачдог(который не надо сбрасывать в вечном цикле вконце прерывания компаратора) и передернет красиво и аккуратно МК!

8 моих ваттметров и 2 теплосчетчика пищущих от 8-ми до 120-ти БАЙТ в еепром при выключении питания УСПЕШНО работают УЖЕ ПОЛ ГОДА и сбоев записи ещё небыло...единственное что - надо правильно подобрать напругу на выходе из переменника - она должна быть больше 2.56 при самом минимальном значении питания - процент помехи - (Корень с двух*значение RMS питания)тоесть для 16-тивольтового транса на делителе должно получиться вольт 5

_________________
Что нас не убило сделало нас осторожней
Не доверяйте русским лужам - это может быть вход в метро.


Последний раз редактировалось clawham Вс янв 22, 2012 12:10:33, всего редактировалось 1 раз.

Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как записать в EEPROM перед отключением питания
СообщениеДобавлено: Вс янв 22, 2012 12:09:05 
Поставщик валерьянки для Кота

Карма: 1
Рейтинг сообщений: 5
Зарегистрирован: Ср май 11, 2011 21:37:45
Сообщений: 1995
Откуда: Цветочный город
Рейтинг сообщения: 0
ELcat писал(а):
Прошу прощения за офф

Мастер Ломастер, а ты не думаешь, что твоя аватарка является оскорбительной для твоих идейных собратьев?

если хотите об этом поговорить - пишите в ЛС.

_________________
битва с дураками проиграна, победители торжествуют. слава победителям!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как записать в EEPROM перед отключением питания
СообщениеДобавлено: Вс янв 22, 2012 12:52:41 
Мудрый кот
Аватар пользователя

Карма: 7
Рейтинг сообщений: 93
Зарегистрирован: Ср сен 07, 2011 21:40:30
Сообщений: 1801
Рейтинг сообщения: 0
Наблюдается 4 варианта решения данной задачи.
1. Вести обмен с RAM RTC. Если переменные не быстро изменяются, то оперировать напрямую с ячейками RAM.
2. Организовать размазанную запись в ячейки EEPROM. Соответствующие даташиты есть на сайте атмела.
3. Через резистивный делитель с сопротивлением верхнего резистора> 20 кОм завести сигнал на ногу прерывания МК от выхода БП, развязанного через диод от конденсатора с кренкой. Вход МК зашунтировать мелкой керамикой.
4. Через оптопару мониторить переходы через "0" сетевого питания. В случае выпадания нескольких- записывать.

Какой способ более предпочителен нужно решать исходя из архитектуры системы.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как записать в EEPROM перед отключением питания
СообщениеДобавлено: Вс янв 22, 2012 13:05:19 
Поставщик валерьянки для Кота

Карма: 1
Рейтинг сообщений: 5
Зарегистрирован: Ср май 11, 2011 21:37:45
Сообщений: 1995
Откуда: Цветочный город
Рейтинг сообщения: 0
я бы остановился на таком варианте:
1. схема перерабатывается так, что вся нагрузка МК запитывается от "мгновенно пропадающего" питания, а сам МК от питания, которое пропадает не мгновенно (например, через диодную развязку и конденсатор большой емкости).
2. встроенный компаратор настраивается, как было сказано ранее, и по прерыванию от него производится запись. можно использовать АЦП - в этом случае можно обойтись вообще без внешних компонентов (не для всех МК), но потребуется определенное ухищрение в программе.

мой вариант не исключает возможности "размазывания" данных по EEPROM.

_________________
битва с дураками проиграна, победители торжествуют. слава победителям!


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Как записать в EEPROM перед отключением питания
СообщениеДобавлено: Вс янв 22, 2012 13:10:55 
Друг Кота
Аватар пользователя

Карма: 82
Рейтинг сообщений: 1030
Зарегистрирован: Сб апр 02, 2011 12:40:46
Сообщений: 4779
Откуда: Минск
Рейтинг сообщения: 0
У меня подобная задача решена так: на входе стабилизатора 2200 мкФ, стабилизатор ключевой, на MC34063. На выходе стабилизатора 220 мкФ. Входное напряжение через делитель 68 к и 10 к подается на встроенный компаратор ATmega8, второй вход компаратора подключен к внутренней опоре. При падении питания выключаю всё и сохраняюсь в EEPROM. Работает надежно.

Если есть DS1307, можно хранить данные в RAM, число записей не ограничено.

Можно поставить FRAM от Ramtron, FM24xxx, так тоже делал, когда данных нужно было много сохранять.


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 132 ]  1, , , , ...  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 12


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y