Например TDA7294

Форум РадиоКот • Просмотр темы - Arduino и энергонезависимая память
Форум РадиоКот
Здесь можно немножко помяукать :)





Текущее время: Ср апр 24, 2024 20:34:38

Часовой пояс: UTC + 3 часа


ПРЯМО СЕЙЧАС:



Начать новую тему Ответить на тему  [ Сообщений: 86 ]    , 2, , ,  
Автор Сообщение
Не в сети
 Заголовок сообщения: Re: Arduino и энергонезависимая память
СообщениеДобавлено: Ср сен 02, 2020 12:32:53 
Открыл глаза

Зарегистрирован: Сб ноя 04, 2017 19:21:12
Сообщений: 72
Рейтинг сообщения: 0
У меня не чисто бытовые цели, поэтому мой выбор - DS3231. Проверено временем, его точность меня полностью устраивает. Но дополнительной памяти у него, увы, нет.
Замените его на что-то из линейки FM31T372/374/376/378. И будет вам и RTC с погрешностью не более 2.5 минут за год (встроенный уже на заводе температурно-компенсированный кварц) и + несколько Кб FRAM. И всё это счастье в одном флаконе корпусе. И никакой мороки с кольцевыми буферами - можно писать в одни и те же адреса хоть до посинения!

Хорошая вещь, вот только достать ее у нас не так просто. Это DS-ки на каждом углу продаются.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Arduino и энергонезависимая память
СообщениеДобавлено: Ср сен 02, 2020 12:58:27 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 0
Цитата:
Кольцевой буфер в ЕЕПРОМ всего делов то.

Склоняюсь пока к этому варианту.

https://github.com/chayanforyou/WearLev ... arLeveling - либа для Ардуино. Надо только ручками под свои нужды (размеры подправить).
Я у себя пишу структуру. 1 поле uint32_t - порядковый номер записи, далее пошли данные (фиксированный размер), далее в конце CRC16 на всякий случай. Ну и пишу по кругу и читаю после перезагрузки. По номеру записи определяю какая последняя.
Если реально только пару байт надо сохранять - можно значительно упростить и сократить "служебные данные".


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Arduino и энергонезависимая память
СообщениеДобавлено: Ср сен 02, 2020 16:01:58 
Сверлит текстолит когтями

Карма: -10
Рейтинг сообщений: 97
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1155
Рейтинг сообщения: 0
По номеру записи определяю какая последняя.
Если реально только пару байт надо сохранять - можно значительно упростить и сократить "служебные данные".
А зачем там "номер записи"?
Кольцевой буфер на флеши строится просто: Кольцо из N секторов стирания. В котором как минимум один сектор должен быть стёрт. Вот от этого стёртого и нужно искать в сторону головы записи.
Представьте себе червяка, который ползёт по кольцу из секторов стирания. Как только он собирается заползти на новый сектор (сектор S1), то он сначала стирает сектор идущий за ним (сектор S2), а потом - начинает заползать на S1. Чтобы найти голову червяка, сначала ищем полностью стёртый сектор, а потом двигаемся от его границы (по байтам содержащим чистое значение (0xFF например)) в сторону головы червяка. Пока не наткнёмся на неё.
Длина червяка - это его размер в байтах. Каждая новая запись - одно тело червяка вперед по 0xFF-кам + 1 байт интервал (между записями).
Индексы никакие не нужны. Писать такое кольцо можно сразу - даже поверх заполненной мусором флеши (только обеспечивать чтобы всегда как минимум один полный стёртый сектор был в кольце). Предварительное стирание флеши не нужно.
Чтобы тело червяка отличать от чистой флеши (0xFF), нужно предварительно закодировать данные тела так, чтобы они не содержали стёртого значения (экранировать стёртое значение из данных).


Вернуться наверх
 
PCBWay - всего $5 за 10 печатных плат, первый заказ для новых клиентов БЕСПЛАТЕН

Сборка печатных плат от $30 + БЕСПЛАТНАЯ доставка по всему миру + трафарет

Онлайн просмотровщик Gerber-файлов от PCBWay + Услуги 3D печати
Не в сети
 Заголовок сообщения: Re: Arduino и энергонезависимая память
СообщениеДобавлено: Ср сен 02, 2020 18:03:24 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 0
jcxz, ну можно и так. У меня там свои нюансы были, мне стирать на сектор вперед неудобно было бы (накладных расходов больше). Плюсы и минусы у обоих способов есть.


Вернуться наверх
 
Выбираем схему BMS для заряда литий-железофосфатных (LiFePO4) аккумуляторов

Обязательным условием долгой и стабильной работы Li-FePO4-аккумуляторов, в том числе и производства EVE Energy, является применение специализированных BMS-микросхем. Литий-железофосфатные АКБ отличаются такими характеристиками, как высокая многократность циклов заряда-разряда, безопасность, возможность быстрой зарядки, устойчивость к буферному режиму работы и приемлемая стоимость. Но для этих АКБ очень важен контроль процесса заряда и разряда для избегания воздействия внешнего зарядного напряжения после достижения 100% заряда. Инженеры КОМПЭЛ подготовили список таких решений от разных производителей.

Подробнее>>
Не в сети
 Заголовок сообщения: Re: Arduino и энергонезависимая память
СообщениеДобавлено: Ср сен 02, 2020 22:16:42 
Друг Кота

Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 6884
Откуда: .ru
Рейтинг сообщения: 0
Тема любопытная... тоже думаю как лучше сделать... :roll:

Наверно самое простое так:

1. Разбиваем EEPROM на сетора:

FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF

2. Записываем данные в первый сектор:

1111111 FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF

3. Записываем новые данные в новый сектор, а старый сектор стираем:

FFFFFFFF 1111111 FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF

4. Записываем новые данные в новый сектор, а старый сектор стираем:

FFFFFFFF FFFFFFFF 1111111 FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF

5. И т.д. ))

Получили кольцевой буфер.

Один недостаток - каждый сектор по два раза записываем и стираем. Износ EEPROM в два раза больше... :roll:
Но всё таки лучше чем писать всё в одно место))

Интересно... а кто реально проводил эксперименты по износу AVR ?
Действительно ли там ограничение на 100.000 циклов ?
Просто я так много ещё не писал))
:)


Вернуться наверх
 
Новый аккумулятор EVE серии PLM для GSM-трекеров, работающих в жёстких условиях (до -40°С)

Компания EVE выпустила новый аккумулятор серии PLM, сочетающий в себе высокую безопасность, длительный срок службы, широкий температурный диапазон и высокую токоотдачу даже при отрицательной температуре. Эти аккумуляторы поддерживают заряд при температуре от -40/-20°С (сниженным значением тока), безопасны (не воспламеняются и не взрываются) при механическом повреждении (протыкание и сдавливание), устойчивы к вибрации. Они могут применяться как для автотранспорта (трекеры, маячки, сигнализация), так и для промышленных устройств мониторинга, IoT-устройств.

Подробнее>>
 Заголовок сообщения: Re: Arduino и энергонезависимая память
СообщениеДобавлено: Ср сен 02, 2020 22:45:03 
Записываем новые данные в новый сектор, а старый сектор стираем

Такой вариант ресурс ячеек сокращает в двое. :facepalm:


Вернуться наверх
   
 
Не в сети
 Заголовок сообщения: Re: Arduino и энергонезависимая память
СообщениеДобавлено: Ср сен 02, 2020 23:04:22 
Сверлит текстолит когтями

Карма: -10
Рейтинг сообщений: 97
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1155
Рейтинг сообщения: 0
Такой вариант ресурс ячеек сокращает в двое. :facepalm:
Ресурс считается по количеству стираний. Записывать можно сколько угодно.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Arduino и энергонезависимая память
СообщениеДобавлено: Ср сен 02, 2020 23:51:32 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 0
Цитата:
Интересно... а кто реально проводил эксперименты по износу AVR ?
Действительно ли там ограничение на 100.000 циклов ?

Где-то видел тесты. Реально по факту в разы больше.
Всё-таки поискал и вот, нашел: https://chipenable.ru/index.php/program ... iment.html
По факту что-то больше 3 млн циклов при 25*С. Просто 100К - это гарантированный производителем ресурс во всем температурном диапазоне МК. Это не значит, что после 100К записей внезапно всё начнет ломаться.


Вернуться наверх
 
 Заголовок сообщения: Re: Arduino и энергонезависимая память
СообщениеДобавлено: Чт сен 03, 2020 00:14:45 
Записывать можно сколько угодно.

Вы с чтением не перепутали? Это читать можно сколько угодно, а стирать и записывать – только определённое количество раз. :)
Вложение:
1.png


Вернуться наверх
   
 
Не в сети
 Заголовок сообщения: Re: Arduino и энергонезависимая память
СообщениеДобавлено: Чт сен 03, 2020 07:09:28 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 0
А много чего вы можете записать, не стирая? Думаете есть принципиальная разница сразу записать в ячейку один ноль, а позже еще один. Или сразу два нуля записать?


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Arduino и энергонезависимая память
СообщениеДобавлено: Чт сен 03, 2020 07:12:18 
Держит паяльник хвостом

Карма: 10
Рейтинг сообщений: 99
Зарегистрирован: Вт июн 07, 2011 08:03:18
Сообщений: 967
Рейтинг сообщения: 0
Записывать можно сколько угодно.

Вы с чтением не перепутали?

Всё верно. Запись и стирание - это разные операции.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Arduino и энергонезависимая память
СообщениеДобавлено: Чт сен 03, 2020 11:09:27 
Сверлит текстолит когтями

Карма: -10
Рейтинг сообщений: 97
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1155
Рейтинг сообщения: 0
Вы с чтением не перепутали? Это читать можно сколько угодно, а стирать и записывать – только определённое количество раз. :)
Не перепутал. Почитайте что такое "флешь-память" и о принципах её работы.

Добавлено after 5 minutes 53 seconds:
А много чего вы можете записать, не стирая? Думаете есть принципиальная разница сразу записать в ячейку один ноль, а позже еще один. Или сразу два нуля записать?
Разница - огромная!
Например у меня чип памяти с секторами стирания ==256КБ. А записывать нужно структуру размером например ==8 байт. Естественно я буду записывать в один сектор флешь кольцевого буфера 256*1024/8=32768 раз. И сотру его только 1 раз на каждые 32768 записи (когда сектор полностью заполнится).
Или Вы будете писать, а затем стирать сектор каждый раз при записи следующих 8 байт данных? Чтобы ресурс флеши поскорее убить? В 32768 раза быстрее чем нужно? :)))

PS: Правда для флешь памяти программ многих МК дело обстоит несколько сложнее: Там часто используют алгоритмы контроля (на аппаратном уровне) содержимого FLASH. И поэтому дописывать в произвольные смещения флешь - нельзя. А записывать можно элементами фиксированного размера (обычно == 16 байт). Но всё равно - это намного лучше чем стирать каждый раз перед записью заново весь сектор.
Для EEPROM-памяти таких ограничений нет.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Arduino и энергонезависимая память
СообщениеДобавлено: Чт сен 03, 2020 11:25:11 
Поставщик валерьянки для Кота

Карма: 12
Рейтинг сообщений: 532
Зарегистрирован: Ср июл 17, 2013 13:55:57
Сообщений: 1978
Рейтинг сообщения: 0
jcxz, я вообще-то не вам писал, а Самсусамыч. Соглашаясь с вашим утверждением, что "Ресурс считается по количеству стираний. Записывать можно сколько угодно.".
Но только зачем вы сейчас о страничном флэше пишете? Мы про EEPROM с по-байтовым доступом говорили. Где можно записать-стереть 1 байт отдельно.


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Arduino и энергонезависимая память
СообщениеДобавлено: Чт сен 03, 2020 11:40:46 
Сверлит текстолит когтями

Карма: -10
Рейтинг сообщений: 97
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1155
Рейтинг сообщения: 0
Но только зачем вы сейчас о страничном флэше пишете? Мы про EEPROM с по-байтовым доступом говорили. Где можно записать-стереть 1 байт отдельно.
Ну - здесь уже о разных говорили. Даже о FRAM. :)
А EEPROM предложили как я помню - по той причине, что у неё ресурс стираний больше.
Но другой путь увеличения ресурса кольцевого буфера - это просто взять чип ФЛЕШЬ большого объёма (пускай с большими секторами стирания). И таким образом увеличить количество циклов записи на одно стирание.


Вернуться наверх
 
 Заголовок сообщения: Re: Arduino и энергонезависимая память
СообщениеДобавлено: Чт сен 03, 2020 14:41:05 
Вы с чтением не перепутали? Это читать можно сколько угодно, а стирать и записывать – только определённое количество раз. :)
Не перепутал. Почитайте что такое "флешь-память" и о принципах её работы.

Я прекрасно знаю, что это такое и «с чем это едят». :wink:

Как Вы прокомментируете данный параметр?
Вложение:
3.png

А данное утверждение?
Вложение:
4.png

Будете продолжать настаивать, что «Записывать можно сколько угодно.»? :)) Ну-ну…
Цитата:
Ресурс записи
Изменение заряда сопряжено с накоплением необратимых изменений в структуре и потому количество записей для ячейки флеш-памяти ограничено. Типичные количества циклов стирания-записи составляют от десятков и сотен тысяч до тысячи или менее, в зависимости от типа памяти и технологического процесса. Гарантированный ресурс значительно более низок при хранении нескольких бит в ячейке (MLC и TLC) и при использовании техпроцессов класса «30 нм» и более современных.

Одна из причин деградации — невозможность индивидуально контролировать заряд плавающего затвора в каждой ячейке. Дело в том, что запись и стирание производятся над множеством ячеек одновременно — это неотъемлемое свойство технологии флеш-памяти. Автомат записи контролирует достаточность инжекции заряда по референсной ячейке или по средней величине. Постепенно заряд отдельных ячеек рассогласовывается и в некоторый момент выходит за допустимые границы, которые может скомпенсировать инжекцией автомат записи и воспринять устройство чтения. Понятно, что на ресурс влияет степень идентичности ячеек. Одно из следствий этого — с уменьшением топологических норм полупроводниковой технологии создавать идентичные элементы все труднее, поэтому вопрос ресурса записи становится все острее.

Другая причина — взаимная диффузия атомов изолирующих и проводящих областей полупроводниковой структуры, ускоренная градиентом электрического поля в области кармана и периодическими электрическими пробоями изолятора при записи и стирании. Это приводит к размыванию границ и ухудшению качества изолятора, уменьшению времени хранения заряда.


Последний раз редактировалось Самсусамыч Чт сен 03, 2020 14:54:23, всего редактировалось 1 раз.

Вернуться наверх
   
 
Не в сети
 Заголовок сообщения: Re: Arduino и энергонезависимая память
СообщениеДобавлено: Чт сен 03, 2020 14:51:16 
Сверлит текстолит когтями

Карма: -10
Рейтинг сообщений: 97
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1155
Рейтинг сообщения: 0
Будете продолжать настаивать, что «Записывать можно сколько угодно.»? :)) Ну-ну…
И что? В чём именно противоречие с тем что я сказал?
Почитайте внимательнее что я писал. Вы похоже ничего не поняли. :dont_know:

А те цитаты, которые Вы дёргаете, толком не понимая о чём там говорится, говорят о количестве циклов записи/стирания для одной ячейки флешь. Один такой цикл - это один переход одной ячейки (для SLC - бита) из нестёртого состояния, в стёртое. Можно конечно считать не переходы 0->1, а переходы 1->0 - это будет то же самое количество.
И если скажем для сектора флеши размером 256КБ сделать 256*1024*8 = ~2М отдельных операций записи, в каждой операции модифицируя всего 1 бит, а потом стереть весь сектор, то счётчик циклов для всех ячеек сектора увеличится всего на 1. Вот об этом я и писал.


Вернуться наверх
 
 Заголовок сообщения: Re: Arduino и энергонезависимая память
СообщениеДобавлено: Чт сен 03, 2020 15:09:42 
Почитайте внимательнее что я писал. Вы похоже ничего не поняли. :dont_know:

Вы утверждаете в своём высказывании: https://radiokot.ru/forum/viewtopic.php ... 3#p3887233
Что записывать можно неограниченное количество раз («Записывать можно сколько угодно»). Я Вам привожу факты, что это не так, так как ресурс записи имеет ограниченное количество раз. О котором указывает и производитель. Так что Ваше утверждение не соответствует действительности.


Вернуться наверх
   
 
Не в сети
 Заголовок сообщения: Re: Arduino и энергонезависимая память
СообщениеДобавлено: Чт сен 03, 2020 15:59:24 
Сверлит текстолит когтями

Карма: -10
Рейтинг сообщений: 97
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1155
Рейтинг сообщения: -3
Вы утверждаете в своём высказывании: https://radiokot.ru/forum/viewtopic.php ... 3#p3887233
Что записывать можно неограниченное количество раз («Записывать можно сколько угодно»).

Да уж.... медицина тут бессильна.... :facepalm:


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Arduino и энергонезависимая память
СообщениеДобавлено: Чт сен 03, 2020 17:33:16 
Друг Кота

Зарегистрирован: Вт мар 13, 2012 12:16:13
Сообщений: 6884
Откуда: .ru
Рейтинг сообщения: 0
NStorm писал(а):
По факту что-то больше 3 млн циклов при 25*С.

Хм... интересно. :roll: 3 млн циклов - это не плохо))

Можно придумать другой способ записи... Например как SD карте... Там есть "шапка" с адресом ячеек и сектора с данными.

1. "шапка" с адресом ячеек:
FFFFFFFF
Разбиваем EEPROM на сектора:
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF

2. Записываем адрес в "шапку",
00FFFFFF
а данные в нулевой сектор :
000000 FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF

3. Записываем новый адрес в "шапку",
01FFFFFF
а данные в первый сектор :
000000 1111111 FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF

4. Записываем новый адрес в "шапку",
02FFFFFF
а данные в второй сектор :
000000 1111111 2222222 FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF
FFFFFFFF FFFFFFFF FFFFFFFF FFFFFFFF

5. И т.д. ))

Только теперь "шапка" быстро износится...))


Вернуться наверх
 
Не в сети
 Заголовок сообщения: Re: Arduino и энергонезависимая память
СообщениеДобавлено: Чт сен 03, 2020 17:52:18 
Сверлит текстолит когтями

Карма: -10
Рейтинг сообщений: 97
Зарегистрирован: Вт авг 15, 2017 10:51:13
Сообщений: 1155
Рейтинг сообщения: 0
Только теперь "шапка" быстро износится...))
А зачем тогда? Просто писать последовательно в сектор и всё. И все его байты будут изнашиваться равномерно.
Но можно и вашим методом, только номер сектора указывать номером самого старшего 0-го бита. Т.е. шаги:
1. шапка == FFFFFFFF
2. шапка == FFFFFFFE
3. шапка == FFFFFFFC
4. шапка == FFFFFFF8
5. шапка == FFFFFFF0
...


Вернуться наверх
 
Показать сообщения за:  Сортировать по:  Вернуться наверх
Начать новую тему Ответить на тему  [ Сообщений: 86 ]    , 2, , ,  

Часовой пояс: UTC + 3 часа


Кто сейчас на форуме

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 22


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  


Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB
Extended by Karma MOD © 2007—2012 m157y
Extended by Topic Tags MOD © 2012 m157y