Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Счетчик переключения реле.
Форум разработчиков электроники ELECTRONIX.ru > Сайт и форум > В помощь начинающему > ARM, 32bit
Олег Гаврильченко
Делается схема с микроконтроллером общего назначения(STM32F4x). В схеме есть реле, и нужно хранить кол-во его переключений так, чтобы между выключениями устройства это число сохранялось. Как лучше всего реализовать это.
Очевидное решение - поставить подходящую EEPROM и писать в нее. Но нужно корректно обрабатывать ситуацию, когда во время записи в EEPROM теряется питание, и соответственно портиться записанное
Конденсатор емкости больше 1 мФ поставить нельзя, из-за ограничений по корпусу.
Спасибо всем за ответы.
Mikle Klinkovsky
Примените космические технологии:
Делайте запись три раза в три разных "сектора".
При чтении сравнивайте. Если хотя бы 2 одинаковые - работаете. Если ни одного совпадения - или "ошибка", или "инициализация".
Lerk
Цитата(Mikle Klinkovsky @ Aug 23 2016, 16:27) *
Примените космические технологии:
Делайте запись три раза в три разных "сектора".
При чтении сравнивайте. Если хотя бы 2 одинаковые - работаете. Если ни одного совпадения - или "ошибка", или "инициализация".


Первое записалось, второе повредилось при записи, третье не успело записаться. Что делаем?) Надо все же более "сложную" логику написать, а то вдруг автор буквально вас поймет... (на всякий случай - это же счетчик, если все разные, то можно сравнить меж собой и сделать выводы)

PS. Есть такая штука, BOD(встроенный монитор питания) называется. Если на МК есть хоть небольшой электролит и МК не жрет, как паравоз, то возможны множественные варианты применения.
iosifk
Цитата(Mikle Klinkovsky @ Aug 23 2016, 16:27) *
Примените космические технологии:
Делайте запись три раза в три разных "сектора".
При чтении сравнивайте. Если хотя бы 2 одинаковые - работаете. Если ни одного совпадения - или "ошибка", или "инициализация".

или поставить FRAM, у нее никаких хитростей нет...
Mikle Klinkovsky
Цитата(Lerk @ Aug 23 2016, 16:35) *
Первое записалось, второе повредилось при записи, третье не успело записаться. Что делаем?) Надо все же более "сложную" логику написать, а то вдруг автор буквально вас поймет... (на всякий случай - это же счетчик, если все разные, то можно сравнить меж собой и сделать выводы)

Да куча вариантов:
- записать 5 и более раз, и считать какого значения больше,
- ввести избыточное кодирование для проверки/восстановления ошибок,
- писать таймштамп и брать самое старое значение если нет одинаковых,
- комбинация из всех перечисленных вариантов...

Ну и анализировать данные для поиска ошибки тоже можно...
Типа: "отличаться больше чем на 1 не должны" т.е. выпригивающие значения отбрасываем и т.д.

Но всё равно надо продумать ветки "ошибка" (если eeprom сдохла совсем) и "первоначальная инициализация"
Огурцов
в природе есть память, в которую можно записать число большее предыдущего
krux
предложение следующее
в EEPROM обнулять по 1 биту за раз. стирание не выполнять вообще. только запись в ту же ячейку, пока все 8 бит одного байта в ноль не уйдут.
количество срабатываний - равно количеству нулей.
Сергей Борщ
Процессор питать через диод. После диода конденсатор. Напряжение до диода отслеживать компаратором. Счетчик хранить в ОЗУ, в прерывании компаратора все ноги переводть в состояние, при котором внешние цепи потребляют меньше всего, после чего на оставшемся в конденсаторе питании записывать во флеш или ЭСППЗУ или что там еще есть.
TSerg
Цитата(Олег Гаврильченко @ Aug 23 2016, 16:19) *
Делается схема с микроконтроллером общего назначения(STM32F4x). В схеме есть реле, и нужно хранить кол-во его переключений так, чтобы между выключениями устройства это число сохранялось.


Шаговый двигатель + СКВТ.
P.S.
Вы шо думаете, тогда были проектанты-идиоты, когда техника должны была оставаться работоспособной + смена сгоревшего экипажа?
adnega
Цитата(Олег Гаврильченко @ Aug 23 2016, 16:19) *
и нужно хранить кол-во его переключений

Не нужно дергать перезапись после каждого срабатывания.
Обнуляйте цепочку из битов во флеш исходя из: "1 бит = 100 срабатываний".
При этом нужно прикинуть общий ресурс срабатываний. 10 миллионов достаточно?
TSerg
Осталось выяснить - что нужно хранить: число реальных переключений реле или число виртуальных действий.
Plain
В качестве ТЗ традиционно шиш, поэтому традиционно же придётся применять стандартный метод дедукции — наличие реле вменяемо означает наличие 12 В для управления им — следовательно, речь о пропаже именно данного напряжения.

Тогда заряженный до данного уровня конденсатор 22 мкФ сможет, посредством обыкновенного линейного стабилизатора, 50 мс, достаточные для записи пары байт в стандартное ЭСППЗУ, питать его стандартным током 1 мА его и вменяемый для таких задач микроконтроллер, т.е. прокачанный до обладания такими частями тела, которые позволят ему бросить всё, что его занимало до того и потребляло 10 А, и перейти по данному факту на вменяемый ток потребления 1 мА.
Огурцов
Цитата(TSerg @ Aug 23 2016, 17:07) *
Шаговый двигатель + СКВТ.

эклз

TSerg
Цитата(Огурцов @ Aug 24 2016, 00:09) *
эклз

А, че? Нормально, так. Экипаж вымер ( ну, там - по разным обстоятельствам). Вдруг - завезли новый, а, координаты и углы - стоят как вкопанные, на механике.
Tpeck
Цитата(Plain @ Aug 23 2016, 23:58) *
В качестве ТЗ традиционно шиш, поэтому традиционно же придётся применять стандартный метод дедукции — наличие реле вменяемо означает наличие 12 В для управления им — следовательно, речь о пропаже именно данного напряжения.


Реле и 3-х вольтовые есть.
Herz
Предлагаю радикальное решение: реле выбросить, а вместо него найти место конденсатору. Ибо это очень странное ТЗ.
AnatolyT
Если речь идет о подсчете количества срабатываний в плане обеспечения ресурса реле, так ли это важно сколько точно раз оно сработало, при этом просто инкрементировать счетчик в епром до включения реле.
Добавлю, счет при этом будет с точностью до единицы.
DASM
Цитата(Herz @ Aug 24 2016, 11:20) *
Предлагаю радикальное решение: реле выбросить, а вместо него найти место конденсатору. Ибо это очень странное ТЗ.

а что - 1000 мкФ мало?? Да с таким зарядом половину флеши нутряной перепрошить можно успеть =))
(я полагаю что "Конденсатор емкости больше 1 мФ поставить нельзя " - то бишь 1 миллифарада)
ViKo
Цитата(Mikle Klinkovsky @ Aug 23 2016, 16:27) *
Примените космические технологии:
Делайте запись три раза в три разных "сектора".
При чтении сравнивайте. Если хотя бы 2 одинаковые - работаете. Если ни одного совпадения - или "ошибка", или "инициализация".

На что там 3? Перед каждым "щелчком" сначала в память записать. Потом во вторую, а хоть бы и после "щелчка". Хоть одна запись правильная будет. Главное, что писать, чтобы отличалось от сбойной записи. Например, число и его инверсию. При включении обновлять обе памяти на ту, где больше число. Или "правильное".
P.S. Если совсем маньяк, после каждой записи делайте верификацию, читайте обратно - сравнивайте. Если что не так, еще раз писать.
MegaVolt
Цитата(Огурцов @ Aug 23 2016, 18:27) *
в природе есть память, в которую можно записать число большее предыдущего
Если не секрет что за чудо?
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2024 Invision Power Services, Inc.