Страница 1 из 4

Запись/чтение массива и строк в/из EEPROM

Добавлено: 29 окт 2021, 17:48
AlexCrane
Набор простых блоков для записи/чтения массива и строк в/из EEPROM

1. Блок Запись массива в EEPROM
Параметры:
  • Адрес для записи - адрес куда сохраняем
  • Массив - массив для записи
Входы:
  • Запись - По переднему фронту сохраняем массив в EEPROM, использовать через RTrig
  • Адрес - Адрес по которому сохраняем
Выходы:
  • Адрес для следующего - адрес для следующего блока для записи
2. Блок Чтение массива из EEPROM
Параметры:
  • Адрес для чтения - адрес откуда читаем
  • Массив - массив в который читаем
Входы:
  • Читать - По переднему фронту читаем массив из EEPROM, использовать через RTrig
3. Блок Запись массива String в EEPROM - Все аналогично блоку Запись массива в EEPROM

4. Блок Чтение массива String из EEPROM - Все аналогично блоку Чтение массива из EEPROM

5. Блок Запись строки в EEPROM

6. Блок Чтение строки из EEPROM

5. Очистка EEPROM

ВНИМАНИЕ! Любой блок автоматически добавляет функции для чтения и записи строк в/из EEPROM. Если они не используются в проекте, то их можно отключить в параметрах.

Сами блоки:
Критическое обновление
Массив_и_строки_EEPROM_v1.6b_(Code_-_Professional).ubi
Блоки в проекте (в примерах используются блоки ранних версий!!!):
Запись и чтение String с EEPROM_NEW.zip

Запись/чтение массива в/из EEPROM

Добавлено: 30 окт 2021, 16:58
Утвш
Хорошие блоки. Спасибо. Жаль, со стрингами не дружат.

Запись/чтение массива в/из EEPROM

Добавлено: 30 окт 2021, 17:20
AlexCrane
Утвш писал(а): 30 окт 2021, 16:58 Хорошие блоки. Спасибо. Жаль, со стрингами не дружат.
В каком смысле?

Запись/чтение массива в/из EEPROM

Добавлено: 30 окт 2021, 17:42
Dryundel
[ref]AlexCrane[/ref], идея хорошая, но может надо встроить R-триггер в блок записи?
Обязательно кто нибудь забудет поставить R-триггер и хана EEPROM.

Отправлено спустя 7 минут 9 секунд:
Я бы еще добавил опционально "Запись по изменению значения на входе", но тоже с оговоркой (предупреждением) в описании.

Запись/чтение массива в/из EEPROM

Добавлено: 30 окт 2021, 18:05
Утвш
AlexCrane писал(а): 30 окт 2021, 17:20 В каком смысле?
Сохранил массив String, а читаю одни кракозябры.

Запись/чтение массива в/из EEPROM

Добавлено: 30 окт 2021, 18:40
AlexCrane
Обновил блок. Добавил возможность задания адреса со входа.
Dryundel писал(а): 30 окт 2021, 17:42 Обязательно кто нибудь забудет поставить R-триггер и хана EEPROM.
Считаю это лишним. НО добавил этот пункт в описание.
Dryundel писал(а): 30 окт 2021, 17:42 Я бы еще добавил опционально "Запись по изменению значения на входе", но тоже с оговоркой (предупреждением) в описании.
Используется метод update, т.е. лишний раз не пишет.

Запись/чтение массива в/из EEPROM

Добавлено: 30 окт 2021, 18:40
AlexCrane
[ref]Утвш[/ref], Можно увидеть проект

Запись/чтение массива в/из EEPROM

Добавлено: 31 окт 2021, 07:01
Утвш
AlexCrane писал(а): 30 окт 2021, 18:40 Можно увидеть проект
К сожалению я сейчас на работе. Но если Вы считаете, что блоки должны работать со String массивами, то я попытаюсь еще повозиться. Если уж не получится, то попрошу помощи. Спасибо.

Запись/чтение массива в/из EEPROM

Добавлено: 31 окт 2021, 20:18
Утвш
Возня моя результатов не дала. По прежнему, после обесточивания платы и заполнения String массива из EEPROM, из массива читаются кракозябры. С Integer массивами все проходит отлично. Прикладываю два тестпроекта с разными типами массивов.
Запись и чтение String с EEPROM.flp
Запись и чтение Integer с EEPROM.flp

Запись/чтение массива в/из EEPROM

Добавлено: 31 окт 2021, 22:06
AlexCrane
[ref]Утвш[/ref], Прогнал в Протеусе, все четко работает
Запись и чтение String с EEPROM_1.flp

Запись/чтение массива в/из EEPROM

Добавлено: 01 ноя 2021, 06:57
Утвш
Не могу сказать, что меня это сильно утешило. Попробую поменять плату и комп.

Запись/чтение массива в/из EEPROM

Добавлено: 01 ноя 2021, 19:08
Утвш
Утвш писал(а): 01 ноя 2021, 06:57 Попробую поменять плату и комп.
Ничего это не изменило.
AlexCrane писал(а): 31 окт 2021, 22:06 Прогнал в Протеусе, все четко работает
Выходит Протеус иногда шутит.

Запись/чтение массива и строк в/из EEPROM

Добавлено: 05 ноя 2021, 09:45
AlexCrane
[ref]Утвш[/ref], Переработал блоки, теперь массив строк можно сохранять в EEPROM
Утвш писал(а): 31 окт 2021, 20:18 заполнения String массива из EEPROM, из массива читаются кракозябры
Вы правы, если напрямую сохранять String в EEPROM, то вместо строки сохраняется лишь указатель на строку, а не сама строка

Запись/чтение массива и строк в/из EEPROM

Добавлено: 06 ноя 2021, 08:40
Утвш
Ур-р-р-а! Заработало! Я уж, честно говоря, потерял надежду. Еще раз спасибо.

Запись/чтение массива и строк в/из EEPROM

Добавлено: 06 ноя 2021, 09:38
AlexCrane
[ref]Утвш[/ref], Какое практическое применение имеет блок записи динамических строковых массивов в EEPROM ??? Слишком ресурсозатратное это дело для avr.

Запись/чтение массива и строк в/из EEPROM

Добавлено: 07 ноя 2021, 07:40
Утвш
Пытаюсь сделать часы-напоминалку даты дней рождения. Хочу использовать строковый массив с возможностью внесения изменений с Nextion. А при отключении питания, надо как-то сохранять.

Запись/чтение массива и строк в/из EEPROM

Добавлено: 09 ноя 2021, 08:35
edyapd
И на какое количество дат хватает места?

Запись/чтение массива и строк в/из EEPROM

Добавлено: 26 дек 2021, 11:19
OldRoman
Хороший блок.Но у меня ESP12+RTC при попытке использовать блок с адресом 50, компиляция не проходит в Arduino IDE.
Подскажите, пожалуйста,работает блок с ESP12 или я делаю что то криво.Спасибо.

Запись/чтение массива и строк в/из EEPROM

Добавлено: 26 дек 2021, 16:40
AlexCrane
[ref]OldRoman[/ref], Добавил поддержку ESP, блок версии 1.3 в шапке

Запись/чтение массива и строк в/из EEPROM

Добавлено: 26 дек 2021, 18:52
OldRoman
К сожалению при компиляции в Arduino: 1.8.15 на строке
EEPROM.update(address_ac, val_ac);
ошибка
'class EEPROMClass' has no member named 'update'