Показать сообщение отдельно
Старый 14.07.2019, 13:21   #1
MadKid
Member
 
Регистрация: Jun 2019
Адрес: Новосибирск
Сообщения: 76
Благодарил(а): 1 раз(а)
Поблагодарили: 1 раз в 1 сообщении
По умолчанию ARRAY II и флэш-память

Здравствуйте, коллеги!

Пилю проект на Trim5. В нём, кроме прочего, должны быть энергонезависимые счётчики наработки насосов. Поскольку флэш-память имеет ограниченный ресурс по записи (притом неизвестно какой), то я решил организовать ротацию памяти при сохранении значений счетчика. Принцип такой: создаём кольцевой буфер, и пишем значения каждый раз в следующий адрес. Таки образом, ресурс флэш-памяти умножается на емкость этого буфера.

Для того, чтобы ротация была истинной, мы не должны использовать какие-либо указатели на текущую позицию в буфере, поэтому каждый раз при включении питания производится автоматический поиск ячейки с макс. значением. Я нарисовал макрос, который всё это делает, и ещё умеет стирать буфер, и всё это здорово работает.

Но!
У меня закрались подозрения, что я занимаюсь ерундой. А основания для подозрений следующие: у блока ARRAY II long максимальная емкость = 62 значения, что (по всей видимости) представляет собой одну страницу флэш-памяти без 8 байт. Вот эти 8 байт не дают мне покоя: очевидно, они участвуют во внутренней кухне блока, а именно - там хранятся какие-то указатели и они переписываются каждый раз при обращении к блоку. Соответсно, ресурс блока всё равно ограничивается ресурсом одной ячейки...

Мои вопросы:
1. Прав ли я в своих подозрениях?
2. Какая память используется в Trim5, а точнее - каков её реальный ресурс?
MadKid вне форума   Ответить с цитированием