Внешняя EEPROM I2C 24C32, 64....

Внешняя I2C EEPROM 24C32, на плате с часами DS3231, а также другие с интерфейсом I2C

Пользовательские блоки дающие дополнительные возможности при работе с EEPROM и SD картами
Правила форума
Рекомендации по размещению блоков:
Автор блока создает подробное описание блока, отличие от подобных(если есть на данный момент).Сложные блоки очень желательно с примерами.
При выходе новых версий редактирует/дополняет свой первый пост с указанием даты, версии, причины.
В каждой теме обсуждается только выложенный автором блок - баги, возможность (или предложение) доработки и прочие хотелки.
Свои блоки, переработанные, с другими библиотеками, протоколами и т.д.- размещаем либо сами отдельно, либо обсуждаем и дорабатываем в форуме Разработка блоков.
Пользователи улучшив блок автора и проверив его работоспособность - могут обратиться к автору или модераторам с просьбой добавить их версию блока в первое сообщение темы.
Аватара пользователя
Sancho
Полковник
Сообщения: 3991
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 567
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Внешняя EEPROM I2C 24C32, 64....

#1

Сообщение Sancho » 09.01.2018{, 11:16}

Тестовые образцы. Архив rar.
Запись и чтение по два байта и три интегера = восемь байт.
Итого 512 блоков (0-511) для 24С32.
Тестируем, отписываемся.
Возможно сделать блоки "общим весом" 2,4,8,16 и 32, 64 байта.
Единичные байты пока не рассматриваются - медленно.
Тема в разделе форума "Железо".

UPD. Диапазон адресов 24C32 - 0х50 - - 0х57.
Отсутствие перемычек на указанной плате- 1,
получаем на новой 0х57(стоит по умолчанию)

UPD. 14.08 Добавлен в архив блок для записи в память текста, номеров - тел. книга описание .
UPD. 19.08 (14.02мск) Предыдущий блок обновлён - добавилась функция поиска по номеру. На 24С32 - 127 записей по 32 символа.
UPD. 04.09 Добавил блоки с записью Float. Конструируйте любые варианты, необходимые в каждом конкретном случае. Незабывайте о размерности в 2,4,8,16 и 32 байта.
После переезда наведу порядок. Чуть погодя :)
UPD.31.01.2018. Добавлены два тестовых блока для 24С16. Запись и чтение по два байта и три интегера = восемь байт. 256 блоков.(0-255).
Перемычки адреса в микросхеме(внутри) 24С16 не подключены. На шине только одна!
Отпишитесь о результатах и пожеланиях.
UPD 05.02.2018. Добавлены несколько примеров. Добавил промежуточные варианты - для самостоятельной модификации.
UPD 13.02.2018 Добавлены блоки чтения / записи 4 байт

UPD 30.01.2019 Отдельно всё из папки. Для творчества, для идей. Почти всё :)
Вложения
I2C Memory.ubl
30.01.2019
(612.79 КБ) 252 скачивания
24C32_write_read_v3.rar
Перезалито 15.02.2018
(592.82 КБ) 414 скачиваний
24C32_write_read.rar
Перезалито 15.02.2018
(24.11 КБ) 334 скачивания
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Аватара пользователя
Sancho
Полковник
Сообщения: 3991
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 567
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Внешняя EEPROM I2C 24C32, 64....

#41

Сообщение Sancho » 02.07.2018{, 14:54}

Golan писал(а):
02.07.2018{, 14:17}
Сань, а для 24С64 можно такой блок забабахать?
Этот работает от 32 и выше.
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Аватара пользователя
Golan
Капитан
Сообщения: 827
Зарегистрирован: 26.11.2017{, 23:18}
Репутация: 76
Откуда: Деревня, 98 домов в Мордовии
Имя: Владимир
Контактная информация:

Внешняя EEPROM I2C 24C32, 64....

#42

Сообщение Golan » 02.07.2018{, 16:51}

Понял, спасибо.
Добро не ценится в современном мире, люди от него наглеют!

valand
Рядовой
Сообщения: 60
Зарегистрирован: 15.07.2018{, 15:12}
Репутация: 13
Имя: Андрей

Внешняя EEPROM I2C 24C32, 64....

#43

Сообщение valand » 05.03.2019{, 20:08}

Sancho писал(а):
09.01.2018{, 11:16}
о результатах и пожеланиях
Спасибо за блоки. Планирую сочинить нечто вроде логгера для домашней сигнализации, соответственно хочу сохранять дату время срабатывания и номер\имя датчика который сработал. (в принципе это надо пока только на этапе отладки, выявить датчики которые неудачно установлены и дают ложные срабатывания) Порылся в архиве, выбрать есть из чего, и мне в принципе достаточно. Но в процессе выявил некорректную работу одного набора блоков. их название на скрине ниже
СпойлерПоказать
блок записи времени глюк.png
блок записи времени глюк.png (7.4 КБ) 944 просмотра
блок записи времени параметры.png
блок записи времени параметры.png (7.46 КБ) 944 просмотра
Суть в чем, входы\выходы sec, minute и rezerv работают корректно.
входы\выходы hour и day умножают на 2 поданное на вход число, т.е. подал-1 считал-2. подал-12 считал-24.
а вход\выход month не сохраняет\читает вообще ничего.
Ну и в процессе разных проб, было выявлено, что блок стирания стирает только 0,1,2 и иногда 3 (на разных блоках по разному) адреса ячеек Numblock.

Аватара пользователя
Sancho
Полковник
Сообщения: 3991
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 567
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Внешняя EEPROM I2C 24C32, 64....

#44

Сообщение Sancho » 05.03.2019{, 20:28}

valand, Можно тестовый проект?
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

valand
Рядовой
Сообщения: 60
Зарегистрирован: 15.07.2018{, 15:12}
Репутация: 13
Имя: Андрей

Внешняя EEPROM I2C 24C32, 64....

#45

Сообщение valand » 05.03.2019{, 21:12}

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

Аватара пользователя
Sancho
Полковник
Сообщения: 3991
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 567
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Внешняя EEPROM I2C 24C32, 64....

#46

Сообщение Sancho » 06.03.2019{, 09:19}

valand, А так?
Сори :)

Отправлено спустя 25 минут 16 секунд:
Очистку делал под раскачанный буфер. Переделаю чуть позже...

Отправлено спустя 13 минут 33 секунды:
Резерв - максимум 63
Вложения
тест внешней еепром на часах вар3 2004лсд_v02.flp
Стирание(очистка)
(630.19 КБ) 38 скачиваний
тест внешней еепром на часах вар3 2004лсд_v01.flp
(624.63 КБ) 56 скачиваний
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

valand
Рядовой
Сообщения: 60
Зарегистрирован: 15.07.2018{, 15:12}
Репутация: 13
Имя: Андрей

Внешняя EEPROM I2C 24C32, 64....

#47

Сообщение valand » 06.03.2019{, 13:05}

Вроде всё ок, пишет\читает. Отличий между v01 и v02 не уловил.
Если v2 это с доработанным стиранием, то изменений нет, все так же от 0 до 3 блока трет.
Последний раз редактировалось valand 06.03.2019{, 13:27}, всего редактировалось 1 раз.

Аватара пользователя
fsergei70
Лейтенант
Сообщения: 691
Зарегистрирован: 17.11.2015{, 20:36}
Репутация: 49
Откуда: Ессентуки-Кисловодск
Имя: Сергей

Внешняя EEPROM I2C 24C32, 64....

#48

Сообщение fsergei70 » 06.03.2019{, 13:18}

Sancho, Сань пытаюсь записать и считать String c UART что то не особо выходит. Вот проект взгляни одним глазком если не трудно
Вложения
String.flp
(119.07 КБ) 42 скачивания

Аватара пользователя
Sancho
Полковник
Сообщения: 3991
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 567
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Внешняя EEPROM I2C 24C32, 64....

#49

Сообщение Sancho » 06.03.2019{, 14:03}

fsergei70, Серёга, это чего такое в loop?

Код: Выделить всё

    byte lng = EEPROM.read(Addr);
    char* buf = new char[Legh];
    Addr++;
    for(byte i = 0; i < lng; i++) buf[i] = char(EEPROM.read(i+Addr));
    buf[lng] = '\x0';
    Out = ((char*)buf);
   

 return buf;
Отправлено спустя 2 минуты 4 секунды:
Ты со стрингами хочешь работать из памяти ардуинки?
Какая задача? Записи не вижу вообще...
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Аватара пользователя
fsergei70
Лейтенант
Сообщения: 691
Зарегистрирован: 17.11.2015{, 20:36}
Репутация: 49
Откуда: Ессентуки-Кисловодск
Имя: Сергей

Внешняя EEPROM I2C 24C32, 64....

#50

Сообщение fsergei70 » 06.03.2019{, 14:06}

Sancho писал(а):
06.03.2019{, 14:03}
Серёга, это чего такое в loop
Да это я пример в нете откапал и пробовал в блок впихнуть

Отправлено спустя 1 минуту 1 секунду:
Код не правильный или в функцию впихнуть надо?

Аватара пользователя
Sancho
Полковник
Сообщения: 3991
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 567
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Внешняя EEPROM I2C 24C32, 64....

#51

Сообщение Sancho » 06.03.2019{, 14:07}

:)
Вопрос о какой памяти идёт речь остаётся открыт
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Аватара пользователя
fsergei70
Лейтенант
Сообщения: 691
Зарегистрирован: 17.11.2015{, 20:36}
Репутация: 49
Откуда: Ессентуки-Кисловодск
Имя: Сергей

Внешняя EEPROM I2C 24C32, 64....

#52

Сообщение fsergei70 » 06.03.2019{, 14:12}

Ну вообще пример был для флеш памяти ESP а я хотел в EEProm переделать

Отправлено спустя 50 секунд:
Я I2c не проинициализировал

Аватара пользователя
Sancho
Полковник
Сообщения: 3991
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 567
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Внешняя EEPROM I2C 24C32, 64....

#53

Сообщение Sancho » 06.03.2019{, 14:13}

Давай до конца определимся - какая память, тип?

Отправлено спустя 1 минуту 5 секунд:
Задача, главное описать чего надо получить в результате.
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Аватара пользователя
fsergei70
Лейтенант
Сообщения: 691
Зарегистрирован: 17.11.2015{, 20:36}
Репутация: 49
Откуда: Ессентуки-Кисловодск
Имя: Сергей

Внешняя EEPROM I2C 24C32, 64....

#54

Сообщение fsergei70 » 06.03.2019{, 14:19}

24с32 с часов. Надо чтоб писало весь String а в идеале в отдельную ячейку еще и длинну этого Stringa/ Чтоб при считывании считать сначало длинну слова ну а потом само слово. Длинна слова максимум может быть 60 символов

Аватара пользователя
Sancho
Полковник
Сообщения: 3991
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 567
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Внешняя EEPROM I2C 24C32, 64....

#55

Сообщение Sancho » 06.03.2019{, 15:13}

fsergei70, Серёга, у микросхем 24Схх есть особенность - страничная организация память.
Можно читать в один заход только с одной страницы. С двух, даже если это будет всего два байта, в два захода.
Размечать области как думаешь, где будешь хранить "оглавление"?
По мне - стандартные размеры или кратные.
Кратко о линейкеПоказать
Atmel_24СХХ.png
Отправлено спустя 2 минуты 47 секунд:
Поэтому для 32-ой - две страницы на одну запись, 64 ячейки.
Всего 64 записи.
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Аватара пользователя
fsergei70
Лейтенант
Сообщения: 691
Зарегистрирован: 17.11.2015{, 20:36}
Репутация: 49
Откуда: Ессентуки-Кисловодск
Имя: Сергей

Внешняя EEPROM I2C 24C32, 64....

#56

Сообщение fsergei70 » 06.03.2019{, 15:27}

Предлагаю алгоритм примерно такой. Пусть тогда будут странички по 32 байта первая ячейка в страничке будет длинна строки. Если в первой ячейке записано длинна больше 31 тогда у блока сделать 2 выхода на одном будет длинна первоначальной строки которую мы писали в начале странички -31, а на другой первоначальный адрес ячейки + 32. Тогда блоки можно будет прикрутить последовательно.

Отправлено спустя 2 минуты 45 секунд:
может есть вариант проще.

Отправлено спустя 4 минуты 26 секунд:
Можно и проще. Сделать блоки по одной страничке 32 байта а адреса сам в проекте считать буду. Тут главное пример хоть какой то дальше может сам додумаюсь.

Аватара пользователя
Sancho
Полковник
Сообщения: 3991
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 567
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Внешняя EEPROM I2C 24C32, 64....

#57

Сообщение Sancho » 06.03.2019{, 15:34}

И как изменить страницу или заменить.
Как обратиться к записи 19, 33,... - как их искать, найти.
Сделать все записи по 64 и всё. Или 128, или ...
Стоимость 256 памяти, в чиподипе, 26 руб, 512 - 42 :)

Отправлено спустя 3 минуты 22 секунды:
Пример давно есть - для работы с телефонной книгой делал, UART_to_EEPROM.
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Аватара пользователя
fsergei70
Лейтенант
Сообщения: 691
Зарегистрирован: 17.11.2015{, 20:36}
Репутация: 49
Откуда: Ессентуки-Кисловодск
Имя: Сергей

Внешняя EEPROM I2C 24C32, 64....

#58

Сообщение fsergei70 » 06.03.2019{, 15:41}

Тогда уж странички по 32 делать а при приеме с уарт буду отбрасывать первые 32 байта и писать в следующую. вход и выход у блока должен быть просто String. А то у меня твои блоки с встроенным Uart есть только редактировать для меня их пока сложно.

Аватара пользователя
Sancho
Полковник
Сообщения: 3991
Зарегистрирован: 25.12.2015{, 17:32}
Репутация: 567
Откуда: Ярославль.
Имя: Александр
Контактная информация:

Внешняя EEPROM I2C 24C32, 64....

#59

Сообщение Sancho » 06.03.2019{, 15:44}

fsergei70, нет, Серёга, вход будет из Uart. Не стринг.
:)
Можно и стринг. Ок.
Если не получится на контроллере - сделаю на тразисторах и 155/176...Научился, немного.
Поможем проекту вместе!

Аватара пользователя
fsergei70
Лейтенант
Сообщения: 691
Зарегистрирован: 17.11.2015{, 20:36}
Репутация: 49
Откуда: Ессентуки-Кисловодск
Имя: Сергей

Внешняя EEPROM I2C 24C32, 64....

#60

Сообщение fsergei70 » 06.03.2019{, 15:53}

давай на часовых у меня просто макетка есть с часами впаянными я на ней все тестю, не люблю я проводки эти, вечно где то что то отвалится ищешь потом. Печатку не так сложно от утюжить по нашим временам. Она правда для ардуино ну потом блок под ESP переделать ведь несложно I2C только завести и ноги указать
СпойлерПоказать
макетка.jpg

Ответить

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