|
Увеличение количества циклов записи в EEPROM, как правильно программно? |
|
|
|
Mar 21 2007, 17:01
|

Йа моск ;)
     
Группа: Модераторы
Сообщений: 4 345
Регистрация: 7-07-05
Из: Kharkiv-city
Пользователь №: 6 610

|
Цитата(CD_Eater @ Mar 21 2007, 15:22)  Почему при использовании кода Грея будет равномерный износ ячеек? Мне кажется, это не так, потому что в коде Грея младшие биты меняются гораздо чаще старших, в этом он ничем не отличается от двоичного кода. Это легко проверить, вспомнив формулу перевода двоичного кода в код Грея (там просто XOR соседних битов). При изменении на +-1 меняется только ОДИН бит, значит все будут равномерно изменяться Цитата Код Грея не даёт других преимуществ кроме "атомарности" операции, что само по себе часто бывает полезным. см. выше
--------------------
"Практика выше (теоретического) познания, ибо она имеет не только достоинство всеобщности, но и непосредственной действительности." - В.И. Ленин
|
|
|
|
|
Mar 21 2007, 18:26
|

Гуру
     
Группа: Модераторы
Сообщений: 8 455
Регистрация: 15-05-06
Из: Рига, Латвия
Пользователь №: 17 095

|
Цитата(CD_Eater @ Mar 21 2007, 16:33)  Rst7, Вы не правы. Байт, отвечающий за младший биты счётчика, будет перезаписываться каждое второе приращение, а старший бит счётчика изменится только один раз за весь диапазон ! Да, справился с Гуглем, признаю, что был не прав. Получается, преимущество только одно - удалась запись или не успела закончиться при снятии питания - счетчик не порушится а лишь успеет/не успеет увеличить значение. А перезапись на каждое второе приращение счетчика - уже вдвое увеличивает ресурс, вот
--------------------
На любой вопрос даю любой ответ"Write code that is guaranteed to work, not code that doesn’t seem to break" ( C++ FAQ)
|
|
|
|
|
Mar 21 2007, 19:12
|
Гуру
     
Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446

|
Цитата Дык вроде бы питание не снимается, а только в powerdown контроллер падает. Уже переписал все так, что в данном конкретном приложении удалось обойти эту ситуацию. Но есть другие, где запоминание байта (иногда и бита хватает) будет важно. Например, питание (возможно ошибочно) было выключено во время нахождения в powerdown. Иногда полезно вести статистику возникновения ситуаций в эксплуатации, интенсивность эксплуатации... да мало что еще...
--------------------
Живи днем так, чтобы ночью ты спал спокойно.
|
|
|
|
|
Mar 21 2007, 21:56
|

Участник

Группа: Участник
Сообщений: 58
Регистрация: 28-11-05
Пользователь №: 11 495

|
Цитата(defunct @ Mar 21 2007, 18:19)  Если записи одинакового формата. То счетчик можно хранить прямо внутри записи. При старте последовательно вычитывать все записи, найти запись с макс счетчиком и продолжать записывать со сл. места, инкрементируя счетчик естессно. когда дойдем до 255 (или 65535 - это вряд-ли для встроенного EEPROM) и переполнимся - как писать/искать будем?
|
|
|
|
|
Mar 21 2007, 22:55
|
Местный
  
Группа: Участник
Сообщений: 358
Регистрация: 29-05-05
Пользователь №: 5 526

|
если сделать кольцевои счетчик из 256 баит то число перезаписеи и растет 256 раз. если из 512 баит то получится ок. 50 млн. циклов. некоторые EEPROM ( и все FLASH) имеют запиь без стирания, там можно атомарно биты писать, каждыи баит при том имеет 9 состоянии : FF,FE,FC,F8,F0,80,40,20,10,00. я сделал таким образом счетчик в FLASH е , 125 баит как колцевои счетчик ( мах число = 125 x8= 1000) , а переполнение , т.е. тысячи считал в оставшихся 3 баитах. получилось счетчик, где происходить 1 стирние на 1000 единиц .учитывая ресурс Flash 100K , общии износь будет на 100млн. но не сложно удлинить кольцо 2 ^ N раз
|
|
|
|
|
Mar 22 2007, 09:55
|
    
Группа: Свой
Сообщений: 1 928
Регистрация: 11-07-06
Пользователь №: 18 731

|
Цитата(smk @ Mar 21 2007, 19:12)  Но есть другие, где запоминание байта (иногда и бита хватает) будет важно. Например, питание (возможно ошибочно) было выключено во время нахождения в powerdown. Иногда полезно вести статистику возникновения ситуаций в эксплуатации, интенсивность эксплуатации... да мало что еще... При мониторинге событий обычно интересны не только сами события, но и время их возникновения. Для мониторинга питания есть специально обученные логгеры у DallasSemi. По любому для этих целей удобнее удобнее использовать что-нибудь с более быстрым циклом записи, чем у ЕЕПРОМ. А в качестве примера использования кольцевого буфера в EEPROM - те же одометры в машинках. В VW'ах, например, пройденный путь пишется в 3 байта, буфер или 24, или 48 байт (не помню, давно ковырял), дискретность записи (LSB) 100 м. Несложно подсчитать, что VW не расчитаны на пробег более 1677721 км  Цитата(proba @ Mar 21 2007, 22:55)  если сделать кольцевои счетчик из 256 баит то число перезаписеи и растет 256 раз. если из 512 баит то получится ок. 50 млн. циклов. некоторые EEPROM ( и все FLASH) имеют запиь без стирания, там можно атомарно биты писать, каждыи баит при том имеет 9 состоянии : FF,FE,FC,F8,F0,80,40,20,10,00. А можно ссылочку на pdf таких занятных EEPROM и всех FLASH, которые умеют писАть без (скрытого) стирания, да еще и по-битово?
|
|
|
|
|
Mar 22 2007, 11:10
|
Гуру
     
Группа: Свой
Сообщений: 2 246
Регистрация: 17-03-05
Из: Украина, Киев
Пользователь №: 3 446

|
Цитата Несложно подсчитать, что VW не расчитаны на пробег более 1677721 км А больше и не надо. Вообще-то и половины более чем достаточно. Я имел ввиду ведение статистики наступления событий. Например производим ежесекундный мониторинг какого-то события. качество события может характеризоваться тремя значениями: не произошло; произошло, но мало; произошло полностью. Ну вот и пишем статистику, а при попадании изделия на ремонт или по снятии с эксплуатации читаем статистику и делаем выводы. Полезно с позиций оценки ресурса датчиков событий, например...
--------------------
Живи днем так, чтобы ночью ты спал спокойно.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|