Перейти к содержанию
    

Энергонезависимая Память AVR

Убивается, ждём-с. Сейчас 305 тысяч циклов выполнено, пока жива...

 

(Хм, в программке вроде бы не наврал нигде.. в один и тот же адрес пишу 0xFF в количестве 992 штук, затем 8 значений с единичкой в разных разрядах, и в обоих случаях читаю и проверяю совпало ли, и циклы считаю.)

Ого, 305.000 ! Оч. интересно! Ждемс!

Но мне кажется что для проверки работоспособности надо бы через некоторое количество циклов (к примеру 10.000 ~ 100.000) попробывать записать инверсные данные

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но мне кажется что для проверки работоспособности надо бы через некоторое количество циклов (к примеру 10.000 ~ 100.000) попробывать записать инверсные данные
Примерно так и делаю, посмотрите код выше.

Если одинаковые значения не пишутся, то сейчас всего тысяч 6 циклов... :05:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Почему-то всегда казалось, что тип флеш, использованный в АВР, убивается только записью нулей... :laughing:

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Выключил на 1'800'000. Изменил в исходнике 0xFF на 0x00, адрес на 1 вниз, перешил, запустил. Ждём, убьётся ли записью нулей...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Примерно так и делаю, посмотрите код выше.

Если одинаковые значения не пишутся, то сейчас всего тысяч 6 циклов... :05:

Ага, вроде правильно все.

 

Выключил на 1'800'000. Изменил в исходнике 0xFF на 0x00, адрес на 1 вниз, перешил, запустил. Ждём, убьётся ли записью нулей...

Наверное можно предположить что ограничение 100.000 циклов это максимальное количество изменеий каждого БИТА еепром.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Наверное можно предположить что ограничение 100.000 циклов это максимальное количество изменеий каждого БИТА еепром.
Запись 0x00 я остановил на ~800 тысячах, не дождался. Запись чередования 0xFF\0x00 остановил на 401 тысяче, ибо уже не верил что оно пишет в EEPROM вообще.

Сейчас посмотрел - таки, пишет! Запустил заново, добавив ещё запись 0x55 в EEDR _перед_ чтением...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Запись 0x00 я остановил на ~800 тысячах, не дождался. Запись чередования 0xFF\0x00 остановил на 401 тысяче, ибо уже не верил что оно пишет в EEPROM вообще.

Сейчас посмотрел - таки, пишет! Запустил заново, добавив ещё запись 0x55 в EEDR _перед_ чтением...

400.000 это уже слишком! А проц какой?

В понедельник тоже буду попробывать на 162-й атмеге.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Результат записи 0x00 (по приведённому выше алгоритму): убилось на 3'238'008 цикле :laughing:

// ...
CURRENT: 3236000
CURRENT: 3237000
CURRENT: 3238000
FAILED ON: 3238008

// Перезапуск по питанию

CURRENT: 1000
FAILED ON: 1008

// Перезапуск по питанию

CURRENT: 1000
CURRENT: 2000
CURRENT: 3000
CURRENT: 4000
CURRENT: 5000
WRITTEN: 36 // Проверка записи всё в тот же адрес
READ: 36 // Результат чтения
WRITTEN: 34
READ: 34
WRITTEN: 30
READ: 30
CURRENT: 6000
CURRENT: 7000
CURRENT: 8000
CURRENT: 9000
FAILED ON: 9008

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Результат записи 0x00 (по приведённому выше алгоритму): убилось на 3'238'008 цикле :laughing:

Т.е. получается что на износ влияет любой процесс записи?

И абсолютно без разницы что было в ячейке до него.

Но 3'238'008 циклов! Этож какой запас прочности!!! В 32 раза!

 

P.S. а убития записью 0хFF возможно просто не дождались.

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Результат записи постоянно меняющегося значения: убилось на 3'327'762 цикле.

// ...
CURRENT: 3326000
CURRENT: 3327000
FAILED ON: 3327762

// перезапуск

// ...
CURRENT: 99000
CURRENT: 100000
FAILED ON: 100889

// перезапуск

// ...
CURRENT: 101000
CURRENT: 102000
FAILED ON: 102918

 

--

 

Собстно, выводы:

а) страничной организации нет, ибо я убивал соседние адреса в рамках возможной страницы;

б) убивается, похоже, именно записью нуля: см. поведение после перезапуска в логах.

 

PS: ATMega128-16AU @ 14.7456 @ комнатная температура.

 

 

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Но 3'238'008 циклов! Этож какой запас прочности!!! В 32 раза!

Не забывайте, что эксперимент проведен в тепличных условиях. 100K гарантируется для любых.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Провел эксперимент с ATmega162-16AU @ 5V @ 16MHz @ t комнатная.

Чередующиеся записи 0х55 - 0xAA по постоянному адресу.

Убилось после выполнения 3.146.000 записей.

Работоспособность ячейки проверялась (после каждых 2.000 записей 0х55 / 0хAA) записью бегущего нуля и единицы.

Перезапуск с соседним адресом - результат примерно тотже (>3.000.000).

В обоих случаях ячейки убились полностью (один из разрядов постоянно в нуле).

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Народ!!!

Да не мучайте себя.

Используйте FRAMку и будет вам счастье.

Вот делов-то.

Изменено пользователем Juk1976

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Используйте FRAMку и будет вам счастье.

Вот делов-то.

Ну а если бюджет не позволяет?

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

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

Гость
К сожалению, ваш контент содержит запрещённые слова. Пожалуйста, отредактируйте контент, чтобы удалить выделенные ниже слова.
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...