Запись массива в EEPROM по отсечке времени
- Войдите на сайт для отправки комментариев
Чт, 28/05/2020 - 13:38
Здравствуйте. Помогите с идеей. Надо по отсечке RTC записывать в EEPROM массив. Причем проблема заключается в том, что в момент наступившей метки времени для записи устройство может быть отключено от питания. Но запись все равно надо сделать. И так постоянно в заданной изначально время. Массив хранится в EEPROM и потом может быть извлечен (выведен) на дисплей для анализа. Ничего не приходит на ум. Можно конечно программно установить превышение по времени метки записи но как потом сбросить повторную запись когда вновь подается питание?
тут надо или спящий режим с просыпанием от RTC или толкового маёра с "командирскими" часами.
Причем проблема заключается в том, что в момент наступившей метки времени для записи устройство может быть отключено от питания. Но запись все равно надо сделать.
простите, но это бред. Если на ардуине нет питания - о какой записи в ЕЕПРОМ вы говорите? Меняйте концепцию
Другое дело, если допустима отложенная запись - то есть, если в момент "Ч" питания не было - запись производится как только питание появилось - это решается элементарно при помощи RTC и флагов
Пишите метку времени туда же и будет понятно перезаписывать или нет.
Понятное дело , что пока питания нет - нет и записи. Но как только питание появилось , а время установленной записи прошло, часы то работают, надо и записать. Установить флаг по событию и при входе в программу сначала прочитать флаг, записать и сбросить его не решение. Наверное надо два флага - один на наступление события, а второй на то что запись сделана и он возвращает первый на разрешение записи по условию времени. Или я что-то упускаю.
Метка времени например на 08.00.00, а включение произошло в 14.13.36 и что она дает? С каждым циклом все корректно?
толкового маёра с "командирскими" часами.
и с генератором электричества на баз велотренажёра.
Метка времени например на 08.00.00, а включение произошло в 14.13.36 и что она дает? С каждым циклом все корректно?
вы какие-то странные вопросы задаете. Метка времени решает все. Допустим Вам нужно записывать данные в 8-00, 12-00, 16-00 и в полночь. Электричество включилось в 14-13, последняя метка - 8-00. Очевидно, что запись в 12-00 пропущена. Что тут непонятного?
Пропадает электричество - ставь упс. Ардуину на обратных фотонах ещё продавать не начали.
Записать данные по отсечке необходимо в любом случае были какие то действия или нет, а делать запись просто по метке времени_ это не решение. Так при каждой перезагрузке будут записываться данные. Можно конечно и так, но если система включается по 600-700 раз за сутки то не надолго хватит ресурса EEPROM.
Записать данные по отсечке необходимо в любом случае были какие то действия или нет, а делать запись просто по метке времени_ это не решение. Так при каждой перезагрузке будут записываться данные.
По-моему, вы не понимаете. Или хотите чего-то совсем другого и плохо обьясняете.
С какой стати данные будут перезаписываться при каждой перезагрузке. если у вас есть метка времени? - вот смотрите, берем мой предыдущий пример, график записи в 8,12 и 16 час. Система перезагрузилась, получила время с RTC, время 14-13. Далее она читает последнюю метку записи из ЕЕПРОМ - допустим там 12 час. Значит все идет по плану и данные пока писать не надо (пока не наступит 16 час). И пусть она хоть 600 раз перестартует - данные в ЕЕПРОМ будут записаны один раз, не ранее 16 час
Обьясните, где же тут запись при каждой перезагрузке?
Мне надо записать данные для пропущенной метки. Они не изменились по значению, раз система не включалась и ничего не происходило, однако показания все равно актуальны и их нужно сохранить на отметке предыдущей метки времени.
флаг проиpведенной записи в этом случае будет неактуален, т.к от при повторном включении устройства будет сброшен до значения по умолчанию. Видимо надо этот флаг также записывать в EEPROM/
Мне надо записать данные для пропущенной метки. Они не изменились по значению, раз система не включалась и ничего не происходило, однако показания все равно актуальны и их нужно сохранить на отметке предыдущей метки времени.
и в чем проблема? чем не подходит принцип, описанный выше?
потому, что текущая метка времени уже не актуальна. Не надо ждать следующей. И следующая тоже может быть просроченной и т.д.
Впрочем, признаю, что да раз система включилась и время превысило уставку то можно записывать. Похимичу. Спасибо.
Идея правильная. При включении вычислять - скоко чекпойнтов пропущено начиная с последнего зафиксированного и записывать все пропущенные с одними и теми же данными. Грубо говоря - последний чекпойнт откопипастить N раз, изменяя таймштамп.
вуд
Да. Спасибо за совет. Должно сработать. Сделаю отпишусь. Я не имел дела с EEPROM и оказалось проще кучу всяких задач решить, чем всего-то записать-прочитать то что надо.
Да. Спасибо за совет. Должно сработать. Сделаю отпишусь. Я не имел дела с EEPROM и оказалось проще кучу всяких задач решить, чем всего-то записать-прочитать то что надо.
имхо, у вас проблемы не с ЕЕПРОМ, а с логикой :)
А ЕЕПРОМ это просто - EEPROM.put() потом get() и все :)
Я имел в виду, что мне надо вести подсчет жидкой фракции по нескольким линиям с разной производительностью за определенный промежуток времени. К примеру за 12 часов. Последнее показание для контроля должно быть доступным. Отсюда и необходимость записи по времени. Да, система включается автономно по сигналам внешних устройств и они же дают разрешение на включение самой системы счетчиков , расчета параметров и записи.
Система после метки времени записывает данные в EEPROM и продолжает с чистого листа, сбросив все в ноль. Но не факт что в момент времени для записи она активна.
Система после метки времени записывает данные в EEPROM и продолжает с чистого листа, сбросив все в ноль. Но не факт что в момент времени для записи она активна.
все равно не очень понял, зачем так. В чем смысл выключения системы сотни раз на дню? Судя по тому. что это контроль какой-то установки. речь о экономии электричества не идет. Может пересмотреть концепцию в сторону постоянной работы без выключений? - тогда и беспокоится о "пропущенных точках" не надо будет
нет возможности обеспечить бесперебойное питание. основное оборудование находится удаленно и снего поступает питание тогда когда это необходимо.
прокладка независимой линии питания может стоить дороже чем само устройство.
18650 и PowerDown тебя спасёт на многие годы. Просыпаться, смотреть, есть питание или нет, дублировать последние данные, если питание не включалось, или обновлять, если оно есть.
Поставьте хороший ИБП 12В с аккумулятором на 17Ач и он Вам 3-е суток будет держать. Бредите, уважаемый.
Да и, кстати, ИБП Вам выдаст сигнал критического разряда батареи и у Вас будет несколько минут для выполнения контроллером каких-то действий.