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

Простые блоки для чтения и записи массива и строк в EEPROM

Пользовательские блоки дающие дополнительные возможности при работе с EEPROM и SD картами
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 294
Откуда: Ульяновск
Имя: Александр

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

#1

Сообщение AlexCrane » 29.10.2021{, 17:48}

Набор простых блоков для записи/чтения массива и строк в/из EEPROM

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

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

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

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

5. Очистка EEPROM

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

Сами блоки:
Критическое обновление Блоки в проекте (в примерах используются блоки ранних версий!!!):
Запись и чтение String с EEPROM_NEW.zip
(294.12 КБ) 271 скачивание
Последний раз редактировалось AlexCrane 03.01.2022{, 09:44}, всего редактировалось 8 раз.
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

Утвш
Сержант
Сообщения: 129
Зарегистрирован: 02.12.2016{, 07:31}
Репутация: 1

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

#2

Сообщение Утвш » 30.10.2021{, 16:58}

Хорошие блоки. Спасибо. Жаль, со стрингами не дружат.

Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 294
Откуда: Ульяновск
Имя: Александр

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

#3

Сообщение AlexCrane » 30.10.2021{, 17:20}

Утвш писал(а):
30.10.2021{, 16:58}
Хорошие блоки. Спасибо. Жаль, со стрингами не дружат.
В каком смысле?
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

Аватара пользователя
Dryundel
Полковник
Сообщения: 2401
Зарегистрирован: 22.05.2017{, 23:15}
Репутация: 783
Откуда: Ярославль
Имя: Андрей
Контактная информация:

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

#4

Сообщение Dryundel » 30.10.2021{, 17:34}

AlexCrane, идея хорошая, но может надо встроить R-триггер в блок записи?
Обязательно кто нибудь забудет поставить R-триггер и хана EEPROM.

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

Утвш
Сержант
Сообщения: 129
Зарегистрирован: 02.12.2016{, 07:31}
Репутация: 1

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

#5

Сообщение Утвш » 30.10.2021{, 18:05}

AlexCrane писал(а):
30.10.2021{, 17:20}
В каком смысле?
Сохранил массив String, а читаю одни кракозябры.

Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 294
Откуда: Ульяновск
Имя: Александр

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

#6

Сообщение AlexCrane » 30.10.2021{, 18:40}

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

Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 294
Откуда: Ульяновск
Имя: Александр

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

#7

Сообщение AlexCrane » 30.10.2021{, 18:40}

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

Утвш
Сержант
Сообщения: 129
Зарегистрирован: 02.12.2016{, 07:31}
Репутация: 1

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

#8

Сообщение Утвш » 31.10.2021{, 07:01}

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

Утвш
Сержант
Сообщения: 129
Зарегистрирован: 02.12.2016{, 07:31}
Репутация: 1

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

#9

Сообщение Утвш » 31.10.2021{, 20:18}

Возня моя результатов не дала. По прежнему, после обесточивания платы и заполнения String массива из EEPROM, из массива читаются кракозябры. С Integer массивами все проходит отлично. Прикладываю два тестпроекта с разными типами массивов.
Запись и чтение String с EEPROM.flp
(825.01 КБ) 93 скачивания
Запись и чтение Integer с EEPROM.flp
(828.56 КБ) 96 скачиваний

Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 294
Откуда: Ульяновск
Имя: Александр

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

#10

Сообщение AlexCrane » 31.10.2021{, 22:06}

Утвш, Прогнал в Протеусе, все четко работает
Запись и чтение String с EEPROM_1.flp
(750.05 КБ) 102 скачивания
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

Утвш
Сержант
Сообщения: 129
Зарегистрирован: 02.12.2016{, 07:31}
Репутация: 1

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

#11

Сообщение Утвш » 01.11.2021{, 06:57}

Не могу сказать, что меня это сильно утешило. Попробую поменять плату и комп.

Утвш
Сержант
Сообщения: 129
Зарегистрирован: 02.12.2016{, 07:31}
Репутация: 1

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

#12

Сообщение Утвш » 01.11.2021{, 19:08}

Утвш писал(а):
01.11.2021{, 06:57}
Попробую поменять плату и комп.
Ничего это не изменило.
AlexCrane писал(а):
31.10.2021{, 22:06}
Прогнал в Протеусе, все четко работает
Выходит Протеус иногда шутит.

Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 294
Откуда: Ульяновск
Имя: Александр

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

#13

Сообщение AlexCrane » 05.11.2021{, 09:45}

Утвш, Переработал блоки, теперь массив строк можно сохранять в EEPROM
Утвш писал(а):
31.10.2021{, 20:18}
заполнения String массива из EEPROM, из массива читаются кракозябры
Вы правы, если напрямую сохранять String в EEPROM, то вместо строки сохраняется лишь указатель на строку, а не сама строка
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

Утвш
Сержант
Сообщения: 129
Зарегистрирован: 02.12.2016{, 07:31}
Репутация: 1

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

#14

Сообщение Утвш » 06.11.2021{, 08:40}

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

Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 294
Откуда: Ульяновск
Имя: Александр

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

#15

Сообщение AlexCrane » 06.11.2021{, 09:38}

Утвш, Какое практическое применение имеет блок записи динамических строковых массивов в EEPROM ??? Слишком ресурсозатратное это дело для avr.
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

Утвш
Сержант
Сообщения: 129
Зарегистрирован: 02.12.2016{, 07:31}
Репутация: 1

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

#16

Сообщение Утвш » 07.11.2021{, 07:40}

Пытаюсь сделать часы-напоминалку даты дней рождения. Хочу использовать строковый массив с возможностью внесения изменений с Nextion. А при отключении питания, надо как-то сохранять.

edyapd
Капитан
Сообщения: 768
Зарегистрирован: 20.09.2019{, 11:38}
Репутация: 65
Имя: Эдуард

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

#17

Сообщение edyapd » 09.11.2021{, 08:35}

И на какое количество дат хватает места?

OldRoman
Рядовой
Сообщения: 11
Зарегистрирован: 23.12.2021{, 09:51}
Репутация: 0
Имя: Раман

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

#18

Сообщение OldRoman » 26.12.2021{, 11:19}

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

Аватара пользователя
AlexCrane
Капитан
Сообщения: 895
Зарегистрирован: 20.10.2017{, 13:22}
Репутация: 294
Откуда: Ульяновск
Имя: Александр

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

#19

Сообщение AlexCrane » 26.12.2021{, 16:40}

OldRoman, Добавил поддержку ESP, блок версии 1.3 в шапке
Если не знаю, то не скажу. Если скажу, то сначала проверю...
Если нет возможности отблагодарить материально, хотя бы оцени пост....

OldRoman
Рядовой
Сообщения: 11
Зарегистрирован: 23.12.2021{, 09:51}
Репутация: 0
Имя: Раман

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

#20

Сообщение OldRoman » 26.12.2021{, 18:52}

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

Ответить

Вернуться в «EEPROM и SD карты»