microSD разбита на сектора по 512 байт.
чтение / запись осуществляется по секторам.
мы тоже можем разбить EEPROM на сектора и писать по секторам. при этом указатель не нужен. если после записи нового сектора старый сектор стирать. а при чтении просто ищем новый записанный сектор. можно так.
но тогда каждый сектор будет записываться по два раза. перерасход получается )) память будет жить в два раза меньше т.е. 50.000 циклов.
так себе решение...
производитель гарантирует что данные будут храниться не менее 85 лет при температуре 25 градусов.
т.е. заряд должен сохраняться 85 лет.
а в реальности заряд может потеряться уже через час... или на следующий день.
что-то производитель от нас скрывает))
roman.com писал(а): Пт июл 10, 2026 16:49:53
но тогда каждый сектор будет записываться по два раза. перерасход получается )) память будет жить в два раза меньше т.е. 50.000 циклов.
так себе решение...
А что, есть другие решения? Все равно адреса хранить больше негде кроме как в ипром, а их перезапись тоже будут ресурс расходовать. Логично переписывать ячейку за ячейкой. Делая отметочку в отдельном бите, что конкретная ячейка записана. На тот случай, если однажды в нее запишутся данные вида 00 или FF.
Не понимаю, что мешает записывать в ипромку данные перед выключением питания и после включения считывать? А все остальное время ее не трогать.
roman.com писал(а): Пт июл 10, 2026 17:02:58
а в реальности заряд может потеряться уже через час... или на следующий день.
roman.com писал(а): Пт июл 10, 2026 12:47:39
Проблема с EEPROM в том что количество циклов записи ограничено и равно согласно даташиту 100.000 циклов.
Не читал все сообщения, поэтому не знаю какой объём памяти нужен. И что вообще собираетесь записывать часто туда в приложениях для радиоуправления. Если, скажем, до 8КБ, я всегда использую FRAM с астрономическим ресурсом перезаписи. Может она решит все Ваши проблемы. Есть модели FRAM с объёмом до 1МБ в корпусах с 8 выводами, но они дороже.
объём данных маленький. обычные настройки пользователя.
важен не объём, а надёжность. чтобы не терялись данные.
не хочу покупать отдельную память. в мк достаточно памяти. надо чтобы она работала без сбоев. и все будет хорошо ))
если открыть тут любой исходник то все работает одинаково.
при включении первым читается епром.
так же как при включении компа данные читаются с диска в оперативку.
мы не можем сохранять данные перед выключением. потому что мы не знаем когда выключится питание. мы сохранили данные и пошли спать. ночью выключили свет и данные потерялись. чтобы этого не происходило и придумали епром.
я не пишу по одному байту. я пишу блоками как в компе.
пока мк новый обычно ошибок нет.
со временем появляются ошибки.
через год-два память вообще не держит.
производитель пишет 100.000 циклов.
ну да. пока питание есть читает и пишет нормально. выключил - включил питания и сразу ошибка. все. сектор сдох ))
переключил сектор. пока ошибок нет. оно и понятно. в новый сектор я ещё не писал. посмотрим сколько он продержится ))
вывод: епром штука ненадёжная.
а вообще надо собрать статистику. только это долго ))
помнится где-то в соседней теме проводили тесты... писали - читали и считали ошибки )) только делали все в реальном времени. время жизни заряда в ячейке не измеряли ))
а если подумать... то адрес писать не надо.
в компе при создании файла автоматом пишет дату и время создания файла.
и мы так можем )) в мк есть часы.
а при чтении епром смотрим последний записанный файл.
roman.com писал(а): Сб июл 11, 2026 00:35:20
мы не можем сохранять данные перед выключением. потому что мы не знаем когда выключится питание. мы сохранили данные и пошли спать. ночью выключили свет и данные потерялись. чтобы этого не происходило и придумали епром.
Чтобы этого не происходило придумали супервизоры питания
roman.com писал(а): Сб июл 11, 2026 01:02:56ну да. пока питание есть читает и пишет нормально. выключил - включил питания и сразу ошибка. все. сектор сдох ))
Для AVR (технологии 20-летней давности) это выглядит нормально А с современными МК не происходит никогда. Может тогда всё-же подумать об установке внешней Flash/EEPROM памяти, например с I2C или SingleWire интерфейсом, если наличествует дефицит выводов корпуса?