Страница 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
:shock: Это на асме все ?

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

Добавлено: Пн окт 29, 2007 14:18:04
kamikadze
8) Недры для меня это, пока что недосягаемые ))))

Добавлено: Пн окт 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. Даташиты надо читать внимательно ;)