Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Запись на EEPROM
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Страницы: 1, 2
zhevak
Цитата(ARB @ Sep 10 2008, 16:24) *
МК тот же, ячейки конечно же были разные.

Сразу после ошибки, для интереса, запускал повторно тест:
Пару раз для 24C - 37774 и 13266 циклов, дальше просто не стал проверять, ячейка возвращала 0х45, ожидалось 0х55.
При 80С - 743, после следующих перезапусков тоже показывало сколько-то циклов, возвращаемое значение - 0х2A.

Думаю, для некоторых ячеек сбой может быть первым и последним, может у кого это подтвердится smile.gif

Спасибо.
Думаю, через недельку или через месяц следет еще раз запустить тестирование того же МК на те же самые ячеки с целью отмести, так сказать, "чудо восстановления" работоспособности ячеек.

И на этом закончить издевательства над АВРками.
ARB
Хорошо, позже отпишусь ;-)
Juk1976
Доброго времени суток всем.
Я например прописываю EEPROM каждых 5 сек и ничего работает уже 2-й год.
Делаю просто.
Выделяю N ячеек и пишу их по кругу. Перед записью проверяю ячейку на 0xFF (стёртая)
После прохождения круга затираю все N ячеек и начинаю сначала. Единственное ограничение - нельзя записать число 0xFF (мне и не нужно, но можно выделять 2 байта).

Ресурса хватает на N* количество_записей_в_ячейку или по минимуму N*100000.

N можно делать соответственно свободного пространства EEPROM.

Спасибо за внимание. beer.gif
Maik-vs
Цитата(ARB @ Sep 10 2008, 14:24) *
МК тот же, ячейки конечно же были разные.

Сразу после ошибки, для интереса, запускал повторно тест:
Пару раз для 24C - 37774 и 13266 циклов, дальше просто не стал проверять, ячейка возвращала 0х45, ожидалось 0х55.
При 80С - 743, после следующих перезапусков тоже показывало сколько-то циклов, возвращаемое значение - 0х2A.

Спасибо, наконец увидел ответ на мой вопрос "КАК они умирают" - умершие биты читаются нулями.
Ведь значение 2A возвращалось при записи AA, так? Интересно, в обоих случаях сдох старший бит. (он старший, за всех остальных в ответе smile.gif)
chajnik
Это опять я help.gif С записью на eeprom -оказалось проще некуда-
Код
eeprom char x;
например.Но вот потребовалось при нажатии кнопок переключать цифры raz и dva и записывать сразу в память.Если вот так-
Код
eeprom unsigned int raz=35;
eeprom unsigned int dva=10;
....
if(!PIND.1){....=raz;}  
if(!PIND.2){....=dva;}

-при нажатии кн.1 индикатор показывает 12,а при нажатии кн.2- 49,откуда взялись эти цифры ?
Почему так в память не пишется,не пойму.Т.е. цифры переключаются-13,14,15....,а при нажатии кн.1-опять 12.
Если без eeprom,то показывает 35 и 10.
Цыкетчик
Цитата(chajnik @ Sep 23 2008, 22:43) *
Это опять я help.gif С записью на eeprom -оказалось проще некуда-
Код
eeprom char x;
например.Но вот потребовалось при нажатии кнопок переключать цифры raz и dva и записывать сразу в память.Если вот так-
Код
eeprom unsigned int raz=35;
eeprom unsigned int dva=10;
....
if(!PIND.1){....=raz;}  
if(!PIND.2){....=dva;}

-при нажатии кн.1 индикатор показывает 12,а при нажатии кн.2- 49,откуда взялись эти цифры ?
Почему так в память не пишется,не пойму.Т.е. цифры переключаются-13,14,15....,а при нажатии кн.1-опять 12.
Если без eeprom,то показывает 35 и 10.

Ну это уже вопрос относится к особенностям используемого компилятора. К износоустойчивости EEPROM (впрочем как и другим архитектурным особенностям микроконтроллеров AVR) он ни имеет НИКАКОГО отношения
chajnik
Но тему создал я,конкретно с вопросом про запись на eeprom на CVAVR,вот на своей теме и спрашиваю,это потом здесь начали обсуждать износоустойчивость.
Цыкетчик
Цитата(chajnik @ Sep 24 2008, 06:22) *
Но тему создал я,конкретно с вопросом про запись на eeprom на CVAVR,вот на своей теме и спрашиваю,это потом здесь начали обсуждать износоустойчивость.

Прошу тогда пардона. "За деревьями леса не увидел"(с) smile.gif
defunct
Цитата(chajnik @ Sep 23 2008, 21:43) *
-при нажатии кн.1 индикатор показывает 12,а при нажатии кн.2- 49,откуда взялись эти цифры ?

Из eeprom'a вестимо.
там вместе с .hex создается еще .eep файл, его тоже надо зашить.
ARB
Как обещал, делюсь результатами (и так как chajnik закрыл на все это глаза).

Ранее записанное 0xFF считалось верно. smile.gif

Для первой (число циклов до ошибки, возвращаемый неверный байт):
22660, 0x45
перезапустил (счетчик записей = 0)
78431, 0x8A ' теперь 6-й бит, раньше не было

Для второй:
44645, 0x2A
51829, 0x8A '
14320, 0x45 '

Значит, ячейки точно накрылисьbeer.gif
defunct
Цитата(Боинг749 @ Aug 29 2008, 19:51) *
Но после слов одного из участников, что при таком тесте более вероятно что первым "накроется медным тазом" самый младший бит, решил проверить эту теорию.

C чего автор этой теории это взял?
Это невереная теория изначально.
Счетчик линейный, соответвенно 0 записывается во все биты ячейки eeprom одинаковое количество раз.

Записью единицы можно принебреч. "1" устанавливается при стирании.
Николай Иванович Приходько
Цитата(defunct @ Oct 10 2008, 18:24) *
C чего автор этой теории это взял?
Это невереная теория изначально.
Счетчик линейный, соответвенно 0 записывается во все биты ячейки eeprom одинаковое количество раз.

Рассмотрим простенький примерчик

0000
0001
0010
0011
0100
0101
0110
0111
......


Не заметили никакой закономерности?
singlskv
Цитата(defunct @ Oct 10 2008, 18:24) *
C чего автор этой теории это взял?
Это невереная теория изначально.
Счетчик линейный, соответвенно 0 записывается во все биты ячейки eeprom одинаковое количество раз.
Записью единицы можно принебреч. "1" устанавливается при стирании.
Что Вы понимаете под линейным счетчиком ?
Если ++ то это конечно не так, биты не равноценны.

З.Ы. По алгоритмам тестирования памяти я бы всем желающим посоветовал
изучить http://www.memtest86.com/ раздел Technical Info
Это один из самых правильных подходов к тестированию памяти вообще...
defunct
Цитата(singlskv @ Oct 10 2008, 19:22) *
Если ++ то это конечно не так, биты не равноценны.

да ++.
биты равноценны, возьмите во внимание:
- операция стирания фактически выполняется только для 0-х бит;
- операция записи пишет только нули "0".

После чего не составит труда посчитайть количество операций стирания и записи для каждого бита 8-ми битной ячейки.
Количество оперций стирания и записи каждого бита ячейки равно 128 на один цикл ++ счетчика (от 0-до 255 включительно).

Цитата(Николай Иванович Приходько @ Oct 10 2008, 19:00) *
Не заметили никакой закономерности?
хорошая табличка. Продолжите ее вниз еще на 8 элементов и посчитайте нолики в каждой колонке.
Maik-vs
Цитата(defunct @ Oct 13 2008, 20:57) *
да ++.
биты равноценны, возьмите во внимание:
- операция стирания фактически выполняется только для 0-х бит;
- операция записи пишет только нули "0".

После чего не составит труда посчитайть количество операций стирания и записи для каждого бита 8-ми битной ячейки.
Количество оперций стирания и записи каждого бита ячейки равно 128 на один цикл ++ счетчика (от 0-до 255 включительно).

хорошая табличка. Продолжите ее вниз еще на 8 элементов и посчитайте нолики в каждой колонке.

Это моя теория. Возникла от незнания тонкостей микроэлектроники.
Это точно что байт стирается полностью перед каждой записью? Или стираются/записываются только изменяемые биты? Почему такой сильный разброс у тестировщиков? (Вон боинг налетал аж миллионы записей).
defunct
Цитата(Maik-vs @ Oct 14 2008, 10:02) *
Это точно что байт стирается полностью перед каждой записью? Или стираются/записываются только изменяемые биты? Почему такой сильный разброс у тестировщиков? (Вон боинг налетал аж миллионы записей).

Здесь можете почитать про разные типы памяти.
Обратите внимание на организацию PROM/OTPROM, на то, что при записи прожигаются биты конкретного одного состояния (напр. нули или единицы). Тоже самое в силе для всех остальных типов NV памяти.

Такой разброс зависит от конкретного МК, напряжения питания, температуры окр. среды.
Повода не верить конкретным результатам любого из проведенных здесь тестов - нет.
singlskv
Цитата(defunct @ Oct 15 2008, 18:30) *
Обратите внимание на организацию PROM/OTPROM, на то, что при записи прожигаются биты конкретного одного состояния (напр. нули или единицы). Тоже самое в силе для всех остальных типов NV памяти.
Логика Ваших объяснений про равнозначность битов при записи в EPROM понятна,
НО, после того как Atemel разделил процедуры стирания ячейки EEPROM(byte) и записи
в ячейку(с возможностью дозаписи из 1->0), я очень сильно сомневаюсь что и раньше
эти процедуры были независимы...
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.