В настоящее время я работаю над одним встроенным проектом, в котором у меня есть один счетчик, который будет активен все время. Если питание отключается, я также должен сохранить состояние последнего счетчика и загрузить его при следующем запуске. Так что я планировал использовать EEPROM, в которой я буду постоянно записывать значение моего счетчика. Но я где-то читал, что EEPROM выдерживает чтение / запись около 100 000, и я буду обновлять этот счетчик, вероятно, 120 000 в сутки. Поэтому я нахожу альтернативы для выполнения этой задачи. пожалуйста, дайте мне ваше предложение сделать то же самое.
8
Ответы:
Другим решением может быть использование микроконтроллера с энергонезависимой FRAM. FRAM не страдает от тех же ограничений на циклы записи, что и EEPROM.
Некоторые из продуктов MSP430 от TI доступны с FRAM, вот ссылка на приложение, аналогичное описанному вами:
MSP430 с FRAM сохранить состояние при сбое питания
Вот статья в Википедии о FRAM: FRAM
источник
У меня есть эта проблема в текущем проекте.
То, как я с этим справляюсь, - это сохранение значения счетчика в оперативной памяти. Я добавил немного аппаратного обеспечения, чтобы микроконтроллер мог обнаружить низкое исходное входное напряжение питания. Если это так, он останавливает свою работу, сохраняет значение действующего счетчика в EEPROM, а затем ожидает просмотра необработанного напряжения питания. Если он возвращается, с некоторым гистерезисом, то микро по существу перезапускается. В противном случае, если питание продолжит снижаться, микро в конечном итоге остановится. При следующем перезапуске значение счетчика загружается из ЭСППЗУ, затем снова используется в оперативной памяти в ОЗУ до следующего отключения питания.
Это не займет много времени, чтобы записать небольшое значение в EEPROM. Скорее всего, в вашей существующей системе электропитания достаточно накопителя энергии, чтобы вы могли обнаружить понижение напряжения, и при этом у вас достаточно гарантированного времени работы до того, как питание микропроцессора упадет ниже рабочего порога или порога записи EEPROM.
В моем случае единственным дополнительным оборудованием был диод Шоттки, предотвращающий всасывание заряда источника постоянного тока из локального резервуара на пути вниз, и два резистора в качестве делителя напряжения, чтобы микроконтроллер мог считывать необработанное входное напряжение. Остальное прошивка.
Важно отметить, что вы должны следить за напряжением на входе любого конечного источника питания, а не за прямым напряжением питания микро. К тому времени, когда последний становится низким, может быть уже слишком поздно. Надеемся, что существует диапазон напряжений, который ниже худшего случая, когда все работает правильно, и выше того, что требуется для блока питания микро, чтобы гарантировать регулируемое напряжение для микро. В моем случае источником питания микро был стабилизатор напряжения, питаемый от 48 В, поэтому существует большой диапазон, который ниже нормального, но где микро все еще может работать надежно.
источник
Старое старое старое решение, cmos counter + литиевая батарея или Ram + литиевая батарея.
Источник питания для запоминающего элемента поступает от обычного источника питания, когда он доступен, или от аккумулятора, когда его нет.
Многие современные микросхемы во сне будут поддерживать свое состояние с очень низким током. Таким образом, вы можете использовать эту технику с определением отключения питания, чтобы перейти в спящий режим, а затем использовать аккумулятор для поддержания состояния в течение периода ожидания, когда основное питание отключено.
источник
Микрочип состоит из серии I 2 C «EERAM», которые позволяют сохранять данные в SRAM, а затем записывать их в EEPROM (используя энергию, хранящуюся в конденсаторе), когда питание теряется, и загружаться, когда питание возвращается. Кажется, это было бы идеально для вашего приложения.
Типичным примером этих частей является 47L04 .
источник
Другое решение
Обнаружьте отключение и используйте суперкап или не супер колпачок, чтобы поддерживать питание в течение нескольких миллисекунд. Используйте это время для записи значения счетчика в EPROM. Пишите только в EPROM при отключении питания. Количество циклов EPROM = нет циклов отключения питания.
источник
Используйте чип FRAM, такой как FM24C04B. Они имеют очень высокую стойкость при записи и энергонезависимы.
https://www.mouser.com/ds/2/100/001-84446_FM24C04B_4_KBIT_512_X_8_SERIAL_I2C_F-RAM-477782.pdf
Вы также можете использовать модуль SRAM (NVRAM) с батарейным питанием. Например M48Z02-150PC1
https://www.mouser.com/ds/2/389/m48z02-955115.pdf
источник
Я решил пойти с "Ds1307 RTC". Потому что он имеет 54 байта SRAM с поддержкой питания. который позволяет бесконечный цикл чтения / записи.
источник
Если во встроенном проекте есть NIC, отправьте счетчик на удаленный компьютер / сервер. Кажется, что 120 000 итераций за 24 часа - это примерно одна итерация за 0,72 секунды, что должно быть нормально для сетевого трафика.
На сервере всегда будет храниться последнее значение счетчика. Отсутствие повреждения значения счетчика при потере мощности, поскольку для обновления значения на сервере необходимо выдать действительный пакет; однако требует постоянного подключения, или должен быть разработан специальный протокол тайм-аута. Кроме того, в качестве бонуса вы сможете управлять своим устройством с пульта, если это необходимо.
источник
A) Используйте конденсатор емкостью 100 мкФ (или больше) для включения счетчика во время выключения. Или какая-то логика, которая требуется для хранения значения счетчика.
Б) Используйте память с магнитным сердечником , их может быть немного сложно настроить.
C) Сделайте управляемый двигателем потенциометр (например, сервопривод), в какой-то момент ваш счетчик переполнится, верно? Карта это до 360 градусов. Затем создайте петлю обратной связи, чтобы вы могли установить значение потенциометра в цифровом виде и прочитать его в цифровом виде.
D) Отправляйте значение счетчика раз в минуту на какой-либо сервер или серверы, и пусть они запоминают значение для вас в нерабочее время. Затем, когда снова включается питание, возвращают значение счетчика.
источник