Страница 2 из 2
Добавлено: Пн июл 09, 2007 18:53:25
proton
Нашёл подходящую тему, чтобы задать вопрос.
Подскажите "красивый" код на СИ для чтения/записи в EEPROM 32-х разрядных чисел(unsigned long int и long int). Для двухбайтных есть примеры выше по тексту (архив для скачивания - для старшего байта используется*256) и в апноуте (AVR035 - для старшего байта используется <<8).
Добавлено: Вт июл 10, 2007 00:16:47
tych
Просто объявляй такие переменные в еепром и используй.
пример в линке в профиле - страница 05a.htm
Добавлено: Вс окт 28, 2007 01:13:27
Skrrmrchoh
У меня сейчас было:
написал eeprom int i , выставил BODEN, записал бит, записал программу, в программе значение i приращалось кнопкой и выводилось на дисплей...Выключил питание- на дисплее какая- то ерунда...Прочитал фьюзы- BODEN не включен...включил, еще раз перезаписал- работает....
Но это так....
У меня вопрос вот в чем: в даташите что- то сказано про 1000 циклов перезаписи EEPROM....Допустим, у меня информация записывается только при отключекнии питания, а читается при включении....Получается, что гарантированный срок жизни аппарата- 1000 циклов включение- выключение....Не маловато ли ?
Добавлено: Вс окт 28, 2007 07:52:28
moLCHec
1000 циклов это гарантированное значение, так например если у паяльника гарантия 1 год это же не значит что он через год перегорит.
Добавлено: Вс окт 28, 2007 20:43:16
Aheir
Я писал на встроенной ЕЕПРОМ счетчик наработки с записью каждые 5 минут.
Заводил в ЕЕПРОМ специальную ячейку-счетчик количества записей и при ее приближении к критическому значению "переезжал" в новую область ЕЕПРОМ с копированием данных. Вполне себе нормально работает.

Добавлено: Вс окт 28, 2007 21:41:48
kamikadze
А про "переезжал" и "критическое" можно подробнее?
Добавлено: Вс окт 28, 2007 23:47:09
Aheir
Попробую..
Предположим, я использую 10 последовательных ячеек ЕЕПРОМ.
В начале адресного пространства ЕЕПРОМ завожу еще 1 ячейку, в которой храню адрес первой ячейки из моего массива в 10 ячеек.
При каждом акте записи в ЕЕПРОМ значение в определенной ячейке из моего массива увеличивается (счетчик записей). При включении МК сначала считывает адрес начала массива (1 служебная ячейка в начале, помните?), потом проверяет значение в счетчике записей. Если оно больше заданной величины, то МК записывает в первую служебную ячейку новый адрес начала массива (старый + 10), потом копирует все данные из массива в ячейки с тем же сдвигом 10 (ну кроме счетчика, разумеется, его надо обнулить). Вот такой примерно алгоритм.

Добавлено: Пн окт 29, 2007 10:11:12
kamikadze

Это на асме все ?
Добавлено: Пн окт 29, 2007 10:33:56
Aheir
Да нет, на Си...
По сути - косвенная адресация, так что ничего страшного в этом нет..
Добавлено: Пн окт 29, 2007 14:18:04
kamikadze

Недры для меня это, пока что недосягаемые ))))
Добавлено: Пн окт 29, 2007 14:23:32
Aheir
Вопрос времени и желания. Правильной дорогой идете, товарищ..

Добавлено: Ср ноя 07, 2007 22:06:26
Resp
Цитата из даташита на Мегу16 (1 страница)
– 16K Bytes of In-System Self-Programmable Flash
Endurance: 10,000 Write/Erase Cycles
– 512 Bytes EEPROM
Endurance: 100,000 Write/Erase Cycles
Добавлено: Чт ноя 08, 2007 01:04:07
Brutaller
skrrmrchoh писал(а):
У меня вопрос вот в чем: в даташите что- то сказано про 1000 циклов перезаписи EEPROM....Допустим, у меня информация записывается только при отключекнии питания, а читается при включении....Получается, что гарантированный срок жизни аппарата- 1000 циклов включение- выключение....Не маловато ли ?
Читаем постом выше.
Resp правильно вырезку из даташита привел.
10000 (десять тысяч) циклов перезаписи флэша (памяти программ)
100000 (сто тысяч) циклов перезаписи EEPROM
P.S. Даташиты надо читать внимательно ;)