Size: a a a

2020 December 09

E

Evgen in Deus Volt!
Al
вы чтоли собираетесь вести целый лог, а не просто пару значений хранить?
как тогда определить где заканчивается корректные записи и где начинается мусор возникший из за сбоя?
правильно, никак.
легко и просто
контрольная сумма и знать, сколько значений записывается
изи
источник

A

Al in Deus Volt!
Evgen
и каждый раз именно на момент записи и стирания будет пропадать ?
зачем каждую минуту. достаточно однократного сбоя и данные потеряны.
источник

E

Evgen in Deus Volt!
Al
зачем каждую минуту. достаточно однократного сбоя и данные потеряны.
ну сбой происходит данные утеряны, если человек пишет каждую минуту, какая вероятность что на каждую минуту будет сбой?
источник

D

Denis in Deus Volt!
Evgen
у вас энергопотребление сильно вырастет
Это сетевое устройство, не сильно принципиально
источник

E

Evgen in Deus Volt!
Denis
Это сетевое устройство, не сильно принципиально
а тогда вообще не проблема писать каждую минуту
источник

A

Al in Deus Volt!
Evgen
легко и просто
контрольная сумма и знать, сколько значений записывается
изи
отличное решение👍

у нас питания хватит условно на тыщу тактов , а мы занимаемся тем, что ввсчитываем циклически контрольные суммы для целой страницы (карл!) памяти. начинаем с первой ячейки, затем вторую добавляем, затем третью и так до двух килобайт.

отличное решение😆😆
источник

A

Al in Deus Volt!
как бы если нужно знать мото часы только последнего рабочего цикла, то не вопрос. один раз потеря не страшна.

но если нужно эти данные накапливать (как пробег в приборке авто) то решение с записью каждую минуту проблему не решит, так что не морочьте голову.
источник

E

Evgen in Deus Volt!
Al
отличное решение👍

у нас питания хватит условно на тыщу тактов , а мы занимаемся тем, что ввсчитываем циклически контрольные суммы для целой страницы (карл!) памяти. начинаем с первой ячейки, затем вторую добавляем, затем третью и так до двух килобайт.

отличное решение😆😆
эмм моточасы на 3 1 байтных переменных высчитать контрольную сумму много тактов сожрет? 😐
Я вам больше скажу можно и без контрольной суммы обойтись,если знать, что всегда пишется одна длина пакета в байтах
источник

A

Al in Deus Volt!
Evgen
эмм моточасы на 3 1 байтных переменных высчитать контрольную сумму много тактов сожрет? 😐
Я вам больше скажу можно и без контрольной суммы обойтись,если знать, что всегда пишется одна длина пакета в байтах
много тактов, учитывая что страница 2048 байт имеет.

на каждом цикле добавления новых данных, нужно проверять результат (его корректность).

это несколько тысяч тактов бесполезной работы.
если стоит задача считать моточасы, то из и считайте. зачем изголяться и делать последовательное логирование

достаточно хранить одну переменную для самих часов и одну для crc.
источник

A

Al in Deus Volt!
это если к железу подойти с умом
источник

D

Denis in Deus Volt!
Можно использовать внутренний детектор напряжения например
источник

A

Al in Deus Volt!
а про то, что зная длину не нужна crc мне вообще не понятно.

разве нам кто то гарантирует, что при пропаже питания в момент стирания в памчти остануться именно FF?

например референс мануал такого не гарантирует.

то же самое касается и процедуры записи.


а надеяться на то, что "у меня /у того васи всегда работает" я бы не стал
источник

E

Evgen in Deus Volt!
Al
много тактов, учитывая что страница 2048 байт имеет.

на каждом цикле добавления новых данных, нужно проверять результат (его корректность).

это несколько тысяч тактов бесполезной работы.
если стоит задача считать моточасы, то из и считайте. зачем изголяться и делать последовательное логирование

достаточно хранить одну переменную для самих часов и одну для crc.
какая разница сколько тактов, если устройство сетевое нашёл момент откуда писать и пиши,  как напряжение даст просадку пишешь, либо вы предлагаете страницу каждый раз стирать ?
источник

E

Evgen in Deus Volt!
Al
а про то, что зная длину не нужна crc мне вообще не понятно.

разве нам кто то гарантирует, что при пропаже питания в момент стирания в памчти остануться именно FF?

например референс мануал такого не гарантирует.

то же самое касается и процедуры записи.


а надеяться на то, что "у меня /у того васи всегда работает" я бы не стал
любопытно, про FF не знал, перечитаю
источник

A

Al in Deus Volt!
Evgen
какая разница сколько тактов, если устройство сетевое нашёл момент откуда писать и пиши,  как напряжение даст просадку пишешь, либо вы предлагаете страницу каждый раз стирать ?
я понятия не имею, как напряжение может дать просадку.

но если задача стоит записывать по факту пропажи питания, то и решения я предлагаю соответствующие. а не начинаю умничат  про то, как " это или как то может дать просадку"

это не я предлагаю стирать всю страницу. это референс мануал предлагает нам ИСКЛЮЧИТЕЛЬНО такой способ. других не задокументировано к сожалению
источник

E

Evgen in Deus Volt!
Al
я понятия не имею, как напряжение может дать просадку.

но если задача стоит записывать по факту пропажи питания, то и решения я предлагаю соответствующие. а не начинаю умничат  про то, как " это или как то может дать просадку"

это не я предлагаю стирать всю страницу. это референс мануал предлагает нам ИСКЛЮЧИТЕЛЬНО такой способ. других не задокументировано к сожалению
Исключительно стирать страницу можно сразу, а можно всю исписать и стереть страницу. Ещё вопросы есть ?
По вашему рассуждению  стирать страницу сразу и ресурс памяти сжирать
источник

A

Al in Deus Volt!
Denis
Можно использовать внутренний детектор напряжения например
скажу так: использовать можно всё, что угодно. хоть внутренний хоть внешний. НО тем не менее нужно понимать физику процесса

я могу написать данную прогу и у меня на голой blue pill она будет работать безотказно (там кроме чипа ничего и нет из потребителей), а емкость вроде 10 мкф хватит с головой

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

поэтому если нужен качественный результат то рекомендую и к исполнителям прислушиваться и больше деталей об устройстве давать
источник

A

Al in Deus Volt!
Evgen
Исключительно стирать страницу можно сразу, а можно всю исписать и стереть страницу. Ещё вопросы есть ?
По вашему рассуждению  стирать страницу сразу и ресурс памяти сжирать
вопросов нет. у меня то их и в предидущих сообщениях не было.


а по ресурсу: я ж потому и говорю, что писать каждую минуту не имеет смысла (учитывая что целью является всего то одна перемнная)
источник

E

Evgen in Deus Volt!
Al
вопросов нет. у меня то их и в предидущих сообщениях не было.


а по ресурсу: я ж потому и говорю, что писать каждую минуту не имеет смысла (учитывая что целью является всего то одна перемнная)
ну у человека впечатление, что так он будет иметь возможность отследить, в какую минуту пропало питание. Ресурс 2 Кб для 8 байт это 262т записей то есть 262т минут для записи, большой ресурс до 1 стирания
источник

s

sexst in Deus Volt!
Тащемта можно делать в первом байте служебную информацию, в частности tombstone бит писать. Записали нужные данные на свободное место после уже записанных на странице, проверили что записано нужное, потом в предыдущей записи в служебном байте tombstone бит с 1 на 0 переписали, писать ноль поверх единицы во flash можно без стирания. Успели записать бит - новые данные будут использоваться как последняя запись. Не успели почему-то - ну плохо, но хоть прошлая запись будет. По достижению конца страницы используем вторую, время от времени чистим старые заполненные страницы для повторного переиспользования.
Собственно у stm даже библиотека есть готовая.
источник