Страница 1 из 2
как сохранить данные при выключении питания
Добавлено: Чт июл 03, 2008 05:07:43
Esya
здрасте всем кто читает это сообщение. ситуация такая . по переполнению таймера считываются состояния кнопок и в соодвецтвии с ними выводятся в порт данные , как сделать чтоб при выключении и повторном включении питания на выходе сохрнялись данные. пишу на асеме мк Atmega8 есле можно то подробней объяснить т.к. сегодня только зашил первый раз. заранее спосибо

Добавлено: Чт июл 03, 2008 08:08:01
Нехочуха
Сохранять Ваши данные во внутренней EEPROM - 100000 циклов записи/стирания гарантировано. Или же использовать внешнюю eeprom/flash - общаться с ней по интерфейсам i2c или spi.
Добавлено: Чт июл 03, 2008 08:09:57
delay
Не совсем понял задачу. Для хранения данных при отключении питания можно хранить данные в эренгонезависимой памяти контроллера. Она позволяет совершать 100 000 циклов записи. Но если у вас прерывания происходят быстро и кнопки с фиксацией, то при восстановлении питания выходы восстановятся сами по себе. Еще можно установить при отключении питания спящий режим ,в котором МК потребляет мизерный ток и запитать от батарейки. Развязка птания через диоды. При пропадании питания МК автоматически перейдет в спящий режим запомнив последнее состояние. Когда питание возобновится, - продолжит выполнение программы.
С деталями я вам не помощник, асм не знаю.
Добавлено: Чт июл 03, 2008 19:51:02
Esya
а можно поподробнее об єтой памяти. в датащит отправлять безполезно я в английском деревянный . да и кнопки без фиксации
Добавлено: Чт июл 03, 2008 20:36:10
delay
Объяснить в двух словах, думаю будет сложно. Придется почитать. Ссылки на литературу и даташиты на русском языке в этом форуме были. Еще можно посмотреть здесь
http://electronix.ru/forum/index.php?sh ... =44850&hl=
http://kazus.ru/modules.php?name=Forums ... 4431#84431
Почитайте про архитектуру МК.
Там же прочтете, что с EEPROM тоже есть свои проблемы и о способах их преодоления, чтобы не сбивалась записанная в них информация.
Но в начале решите, нужно ли вам это или можно обойтись использованием резервного питания от батареи и спящим режимом.
Я использовал исходники компилятора COdeVision, т.к пишу на Си.
Добавлено: Чт июл 03, 2008 22:45:25
Esya
спосибо посмотрел датащит там все подробно написано , буду пробовать.
да и еше вопрос есле сделать внешнее прерывание по спаду напряжения а в обработчике написать чтоб сохранял данные в еепром , успеет он сохранить пока полностью не упадет питание до 0 ??
Добавлено: Чт июл 03, 2008 23:45:58
delay
При записи в EEPROM нужно контролировать окончание записи. При окончании записи выставляется флаг. Этот процес описан в даташите, есть примеры процесса записи- чтения на асме и Си.
Если вы хотите, чтобы при внезапном пропадании питания сработало прерывание и МК успел записать данные в EEPROM, то шансов, думаю немного. Емкости конденсаторов врядли хватит. Кроме того, при медленном уменьшении напряжения ниже порогового, может произойти сбой записи и запишется чепуха. Т.ч. если у вас есть вероятность внезапного пропадания питания, то вам придется делать аварийное питание.
Я делал устройство, в котором при пропадании питания МК питаясь от батареи записывал данные в EEPROM и уходил в спящий режим. При возобновлении питания - просыпался, считывал данные из EEPROM и продолжал работу.
Если я правильно понял вашу задачу, то вам EEPROM вообще не нужно, достаточно аварийного питания и спящий режим. Если я правильно понял задачу.
Добавлено: Пт июл 04, 2008 00:07:08
Esya
а можно подробней алгоритм , и если есть схемка питания
Добавлено: Пт июл 04, 2008 08:20:56
delay
http://ifolder.ru/5814937
В этом даташите на MEGA128 на русском, на стр. 45 описываются энергосберегающие режимы. Питание от батареи и сетевого источника разделите диодами (анод к плюсу, катод к ножке питания МК). Только учтите, что питание от источника должно быть чуть больше чем от батареи, чтобы в исходном режиме устройство запитывалось именно от него, а не от батареи. Питание от сетевого источника можно через резистор подать на вход внешнего прерывания. Когда сетевое питание пропадет диод, через который шло сетевое питание закроется, диод через который шло питание от батареи откроется. МК будет автоматически питаться от батареи. Пропало питание - произошло прерывание по переходу на 0 - включить энергосберегающия режим .Питание восстановилось, диод батареи закроется, диод от сетевого источника откроется. - произошло внешнее прерывание при переходе на 1, выйти из режима сна.
Добавлено: Вс июл 06, 2008 08:38:49
kolyay
В промышленном аппарате "Спекон" использован импульсный источник питания, который при отключении главного рубильника продолжает работать около 2 сек. Естественно за это время всё успевает упасть в ЕЕПРОМ.
Добавлено: Чт июл 10, 2008 09:07:51
Yellow Tiger
Esya писал(а):а можно подробней ..., и если есть схемка питания
Смотри
здесь.
Добавлено: Пт июл 18, 2008 21:25:16
bagira
Идея с резервным питанием от батареи и "сном" хороша, но батарея рано или поздно "сядет" (даже литиевая). Сейчас обдумываю аналогичную проблемку и пришел к такому выводу:
Надо ставить не батарею а ионистор! Ёмкость (и запас энергии) огромны, и уж для полноценной записи данных гарантированно хватит. Ну не пишется же в конце концов весь объём ЕЕПРОМа. Только проблемка у меня вылазит другая. Отключение питания - есть штатный режим (который и следует контролировать) и он не такой уж и редкий, и ресурс 100 000 циклов записи - может оказаться мало! Что посоветуете? Мне в голову ничего умнее резервного аккумулятора с хранением данных в ОЗУ - не приходит

.
Добавлено: Пт июл 18, 2008 21:43:06
delay
Если в сутки призвести 10 записей то получится 100000/10 = 10000 дней. 10000/365 это 27 лет. И батарейку раз в пару лет можно поменять.
Это как же часто у вас будет питание отключаться?
Добавлено: Сб июл 19, 2008 13:12:55
Aheir
bagira писал(а):ресурс 100 000 циклов записи - может оказаться мало
Это для одной ячейки, так что просто периодически изменяйте область записи данных, действительно же, не весь объем ЕЕПРОМ пишется...
Добавлено: Сб июл 19, 2008 13:21:34
AISe
Кстати, как идея просто-напросто оставлять данные в регистрах?
Добавлено: Сб июл 19, 2008 20:50:22
bagira
Aheir писал: Подскажите (по датшету несовсем понятно) если я буду писать одну ячейку ЕЕПРОМа - то ресурс "записей" будет тратиться только одной этой ячейки? Сталобыть если изобразить нечто типа "скользящей адресации" при записи то ресурс увеличится в число раз=((общий объём)/(объём данных)), или чуть меньше? Я предполагал что ресурс сжигает сам фикт "Запись" без относительно - одну ячейку изменили или весь банк переписали.
А девайс может производить запись в ЕЕПРОМ факта отклонения некоего U от заданного и время события, и происходить это может нерегулярно (возможно и через минуту).
Добавлено: Вс июл 20, 2008 02:17:39
delay
Добавлено: Пн июл 21, 2008 22:59:07
MetEl
delay писал(а):http://ifolder.ru/5814937
В этом даташите на MEGA128 на русском****.
Офигеть!
Зачётно!
Вот бы с содержанием и в формате сhm(Microsoft® HTML Help Executable)
))))))))))))
Всётаки про ШИМ всёравно както не очень.
Жаль что от первоиздателя идёт перепечатка и используется таже попытка изложения.
А ведь так правильно показан TWI, скажем рис.99.
Компромис между алгоритмической схемой и схемой действий.
А по этим линиям графиков, скажем рис. 54 ещё голову поломать прийдётся. И корява както((
Пока не отпрактикую так и не врублюсь.
А ещё цветное изображение есть, к примеру то что жёстко - чёрным, то что меняет пользователь - зелёным, то что прога - жёлтым. События - красным.
Добавлено: Пн июл 21, 2008 23:03:44
delay
Где-то я встречал в html формате.
Добавлено: Пн июл 21, 2008 23:06:27
Yellow Tiger
MetEl писал(а):Вот бы с содержанием и в формате сhm
Собрать оглавление в ворде - раз плюнуть, сохранить в формате .html и компильнуть - тоже не проблема. Делов-то, на четверть часа...