|
Есть проблема EEPROM..., В третий раз сталкиваюсь со сбоями при работе с EEPROM |
|
|
|
Dec 12 2005, 20:51
|
Группа: Новичок
Сообщений: 8
Регистрация: 10-12-05
Из: Gostomel
Пользователь №: 12 055

|
Первый раз на 8515 /если честно - не помню, чтоя там делал :о((/, но тогда просто пропустил - поскольку использовал для хранения отладочной информации по системе. Второй раз на меге 8535 - получал обнуление по всем адрессам /хранил разгонную сетку частот для гиромотора, опять же на период обкатки системы/ Третий - на 32 меге. Первые четыре байта использую для хранения резонансных частот пьезодвигателя, пятый - для хранения адреса в системе (всего 12 модулей). На одной меге вместо записаного адреса 0х04, считываю то 0х04, то 0х05 то 0х0D. В программе для меги использовал функции работы с EEPROM от ИАР, во время работы программа сама ничего не пишет, только считывает по внешней команде. Ошибка в коде маловероятна, так как оставшиеся 11 модулей работают без нареканий.
Ответа от саппорта пока не получил.
Кто-то сталкивался с подобным? И как с этим бороться?
|
|
|
|
|
Dec 13 2005, 04:27
|
Группа: Новичок
Сообщений: 2
Регистрация: 29-11-04
Пользователь №: 1 254

|
Зашить в FUSE биты BODEN и BODLEV. При пониженом напряжении питания мк может выполнить любую команду. Проверить разводку платы на возможность кратковременых выбросов напряжения питания мк более 7V. (протекание больших силовых токов по общему мк)
|
|
|
|
|
Dec 13 2005, 06:07
|
Участник

Группа: Свой
Сообщений: 47
Регистрация: 12-07-05
Пользователь №: 6 725

|
У нас такой же сбой происходил давно, когда не ставили внешний супервизор по питанию.Сейчас при питании +5В ставим супервизор на +4,2В.
|
|
|
|
|
Dec 13 2005, 07:28
|

Шаман
     
Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221

|
Цитата(arttab @ Dec 13 2005, 04:34)  ... вот в чем вопрос - Иар при использовании только чтения не подставляет ли универсальную функции, которая и писать может? Если да, то сбой + указатель куданибудь и если на код записи, то /-/ данные. Нет, для чтения и записи используются разные функции. Volodymyr, мне в своё время приходилось дорабатывать функции чтения\записи EEPROM, т. к. я их использовал в разных процессах (речь идёт об ОСРВ). Посмотрите, не используете ли Вы их в прерываниях. В этом случае возможны сбои.
|
|
|
|
|
Dec 13 2005, 08:10
|

Местный
  
Группа: Свой
Сообщений: 319
Регистрация: 2-08-05
Из: Одесса
Пользователь №: 7 287

|
Цитата(IgorKossak @ Dec 13 2005, 11:28)  Volodymyr, мне в своё время приходилось дорабатывать функции чтения\записи EEPROM, т. к. я их использовал в разных процессах (речь идёт об ОСРВ). Посмотрите, не используете ли Вы их в прерываниях. В этом случае возможны сбои. Непонятно Очень прошу пояснить Тоесть если я использую хапись в EEPROM по прирыванию таимера (например) возможны сбои ???
|
|
|
|
|
Dec 13 2005, 08:50
|

Шаман
     
Группа: Модераторы
Сообщений: 3 064
Регистрация: 30-06-04
Из: Киев, Украина
Пользователь №: 221

|
Цитата(DeXteR @ Dec 13 2005, 10:10)  Непонятно Очень прошу пояснить Тоесть если я использую хапись в EEPROM по прирыванию таимера (например) возможны сбои ??? Вот пример первой попавшейся функции из файла eeprom.s90, поставляемого с продуктом в папке avr\src\lib: Код RSEG CODE:CODE:NOROOT(1) ?eeget8_64_inc: INC R24 ?eeget8_64: RCALL ?eewait OUT EEARL,R24 SBI EECR,EERE RET Предположим, что это выполняется в фоновой программе. Если между OUT и SBI вклинится прерывание, изменяющее содержимое EEARL, то прочитано будет не то, что надо (не из того места). Аналогично с записью. Я поступил следующим образом: ... долго писАть, лучше приложу файл. Подкорректировано всё, кроме той части, что касается AT86RF401.
Прикрепленные файлы
eeprom.rar ( 3.26 килобайт )
Кол-во скачиваний: 1265
|
|
|
|
|
Dec 13 2005, 09:15
|

Местный
  
Группа: Свой
Сообщений: 319
Регистрация: 2-08-05
Из: Одесса
Пользователь №: 7 287

|
Спасибо Все ясно Сам имел проблемму с EEPROM очень давно (на АТ90 2313) Там было очень паршивое питание в схеме + я незнал о проблемме с нулевым адресом. Счас хочу вынести на обсуждение одну идею.Есть проект в котором нада хранить данные энергонезависимо + обновлять эти данные больше 100000 раз. В датащитах пишут что гарантировано 100000 перезаписей - больше - негарантирують Хотел создать в ЕЕПРОМЕ чтото вроже таблицы адресов сбоиных ячеек. Если после записи верификация не прошла то адрес заноситься в таблицу и прога больше непишет по ниму. Таким образом  пока все ЕЕПРОМ несдохнит девайс будет хранить данные нормально Очень прошу мнений и критики СПАСИБО De}{teR
|
|
|
|
|
Dec 13 2005, 11:22
|

Местный
  
Группа: Свой
Сообщений: 319
Регистрация: 2-08-05
Из: Одесса
Пользователь №: 7 287

|
Ячейки таблицы сбоиных адресов например расположим вначале ЕЕПРОМА а данные будем писать с конца (адрес уменьшая) Таблица будет рости поэтому ее размер нада ограничить (например если 25% сбоиных - все ФАТАЛ ЕРРОР  ) Таблича будет писаться редко (по 1-й записи на 1 адресс) поэтому сбоев недолжнобыть =) Если таблица и сбойнет (1 адресс) это приведет к неиспользованию какогото адреса в ЕЕПРОМЕ (верефикация после записи всеравно отловит ошибку и данные неповредяться) Меня беспокоит один вопросс: Действительно ли ячейки ЕЕПРОМА умирают по одной ??? Опыта в этом деле нету поэтому будем ставить эксперимент и палить контроллеры =)
|
|
|
|
|
Dec 13 2005, 11:57
|
Местный
  
Группа: Свой
Сообщений: 242
Регистрация: 27-01-05
Пользователь №: 2 225

|
Цитата(DeXteR @ Dec 13 2005, 12:15)  Счас хочу вынести на обсуждение одну идею.
Есть проект в котором нада хранить данные энергонезависимо + обновлять эти данные больше 100000 раз. В датащитах пишут что гарантировано 100000 перезаписей - больше - негарантирують ну раз такое количество перезаписей то почему EEPROM? дык можно микромощную ram прикрутить с литиевой батареей
|
|
|
|
|
Dec 13 2005, 21:07
|
Группа: Новичок
Сообщений: 8
Регистрация: 10-12-05
Из: Gostomel
Пользователь №: 12 055

|
Небольшое исправление - я немного напутал в описании проблемы. Адрес ячейки - 0х004, а содержимое - вместо постоянного 0х04 - 0х04, 0х05, 0х0D.
Ответы: 1. По питанию всё нормально, сегдня проверяли. 2. Чтение при штатной работе производится только раз - по включению питания. Данные сохраняются в переменных. 3. Прерывание используется только по UART-у. Обработчик выставляет только признак получения данных. Сам анализ, как и обработка в теле программы (while (1) :о) ). 4. Перепроверил EEPROM через прорамматор, та же фигня, сбоящая ячейка 0х004. Несколько раз считывал, потом сверял содержимое файлов.
Саппорт всё так же молчит :о(.
В принципе проблему обошёл - перевёл на ячейку 0х00А. Но спортивный интерес остался - в решаемой задаче без EEPROM-а не обойтись.
to DeXteR ----------------------- идея интересная :о), но боюсь муторная немного... У Petka - интересней. ИМХО.
|
|
|
|
|
Dec 14 2005, 10:21
|
Участник

Группа: Свой
Сообщений: 63
Регистрация: 25-06-04
Пользователь №: 179

|
А одни мои знакомые извратились до того, что стали писать-читать с тройной избыточностью, используя классическое мажоритирование. По их словам, за пять лет ни одного сбоя. Правда, возможно и без мажоритирования не было бы ни одного сбоя  ) Кстати, интересна статистика, а как именно "вылетают" ячейки? Типа одно-несколько "нехороших" мест, или целый ряд близкорасполеженных?? По-любому, все проблемы начинаются с качества питания, imo.
|
|
|
|
|
Dec 14 2005, 10:33
|

Местный
  
Группа: Свой
Сообщений: 319
Регистрация: 2-08-05
Из: Одесса
Пользователь №: 7 287

|
Цитата(bbg @ Dec 14 2005, 14:21)  А одни мои знакомые извратились до того, что стали писать-читать с тройной избыточностью, используя классическое мажоритирование. По их словам, за пять лет ни одного сбоя. Правда, возможно и без мажоритирования не было бы ни одного сбоя  ) Кстати, интересна статистика, а как именно "вылетают" ячейки? Типа одно-несколько "нехороших" мест, или целый ряд близкорасполеженных?? По-любому, все проблемы начинаются с качества питания, imo. Статистику раскажу как толька заказаный контроллер получу Буду в цикле писать и жечь еепромку ему =( Расскажите про классическое мажоритированиеЭто как ?? Цитата(АДИКМ @ Dec 14 2005, 12:49)  Если писать надо часто, лучше использовать FRAM от RAMTRONa с I2C или SPI интерфейсом. Задержек нет, ресурс огромный Говорили уже - дорого + фиг я в Одессе куплю ее просто Недели 3 ждать придеться =( Я слышел что если ФРАМУ коротнуть ноги питания он благополучно все забудет =( НЕЗНАЮ ПРАВДА ЛИ ЭТО - кто работал - подскажите плиз
|
|
|
|
|
Dec 14 2005, 10:46
|
Участник

Группа: Свой
Сообщений: 63
Регистрация: 25-06-04
Пользователь №: 179

|
Цитата(DeXteR @ Dec 14 2005, 13:33)  Расскажите про классическое мажоритирование Это как ?? Пишем сразу в три ячейки (причем разнесенные в пространстве памяти), читаем из трех ячеек, принимаем решение - прочитали три одинаковых числа - ОК, прочитали два одинаковых, одно неодинаковое - принимаем решение в пользу двух одинаковых. Прочитали все три неодинаковых - кричим "караул!"
Сообщение отредактировал bbg - Dec 14 2005, 10:46
|
|
|
|
|
Dec 14 2005, 15:03
|
Участник

Группа: Свой
Сообщений: 63
Регистрация: 25-06-04
Пользователь №: 179

|
Есче про мажоритирование, если кто захочет связываться, канечна. Оффсеты рекомендуется брать нечетными и взаимно простыми, при записи/чтении чураться значений x00 и xFF (что требует некоторой изворотливости, но весьма себя окупает), - ну и, само-собой, контрольна сумма тоже считается
Сообщение отредактировал bbg - Dec 14 2005, 15:22
|
|
|
|
|
Dec 15 2005, 08:26
|

Местный
  
Группа: Свой
Сообщений: 319
Регистрация: 2-08-05
Из: Одесса
Пользователь №: 7 287

|
Цитата(sseett @ Dec 15 2005, 07:29)  Использую мажоритарную проверку (три копии, но можно и больше…) с восстановлением. Несколько десятков устройств работают в непрерывном режиме более трех лет, сбои не наблюдались. Удачи! Более 3х лет это конечно хорошо Расскажите пожалуйста Как часто пишеться ЕЕПРОМ Сдесь говоилось о повышение ресурса а не надежности процесса записи - чтения
|
|
|
|
|
Dec 15 2005, 19:42
|
Группа: Новичок
Сообщений: 8
Регистрация: 10-12-05
Из: Gostomel
Пользователь №: 12 055

|
По своей проблеме. Ситуация интересная - по снятию питания кондёры еще держат напряжение около 5с. Уровень напряжения ещё достаточен для работы логики EEPROM, но уже без самого ядра МК. Здесь важно следующее - у EEPROM нет жесткой привязки к адресу, физически адрес 0х06, например, при каждом цикле вкл/выкл располагается где угодно :о) /шутка/. Это сделано для повышения ресурса и для уменьшения "загрязнения" самой памяти. А сбой происхоит на цыкле выкл/вкл. когда возникает неопределённость между адресацией к EEPROM в ядре МК и обвязкой самого EEPROM.
Вот... to DeXteR - мне кажется, что если у тебя посыпется EEPROM то картина будет такой же как и у меня.
P.S. Спасибо за участие, у вас тут интересно :о))
|
|
|
|
|
Dec 16 2005, 11:41
|

Местный
  
Группа: Свой
Сообщений: 319
Регистрация: 2-08-05
Из: Одесса
Пользователь №: 7 287

|
Цитата(proba @ Dec 16 2005, 14:49)  a ja ne ponimaju komu nado 1000 000 000 tsiklov zapisi v EEPROM. srednii EEPROM imeet tsikl zapisi 5mS. umnozajem, polutsajem 5000 000 sek na bait. esli nado pisat 1024 bait, polutsajem 160 let tolko na zapis. sto-to y vas s algoritmom ne optimalno. Представь себе игровой автомат типа ЛОХОТРОН =) Игроки кидают туда монетки гдето 20 000 в день Нада все учитывать + сохранять в реальном времени ато злобный админ может научиться коротить батарейку и иметь себе левый неучтенный доход =) Это блин не я а заказчит хочет =(
|
|
|
|
|
Dec 16 2005, 11:48
|
Знающий
   
Группа: Свой
Сообщений: 639
Регистрация: 5-09-05
Пользователь №: 8 231

|
Цитата(DeXteR @ Dec 16 2005, 12:51)  У меня вопросс какраз не в том как избежать ошибок - тут методов множество А в том как увеличить рессурс EEPROM до 1 000 000 000 циклов перезаписи
Данные в ЕЕПРОМ намного важнее стабильной работы устройства на МК
Последнее время больше привлекает вариант с ФРАМ Если устраевает внешняя ЕЕПРОМ, то лучше переплатит 1$ и поставить FRAM от RAMTRON, ветка была чуть ниже на его обсущнее, тот же SPI или I2C, только ресурс не заканзивается (3-х вольтовая) или 10^10 (5-ти вольтовая). Размер уже до 512x8 кБит ожидается его увеличения. 10 лет хранения информации без питания. Корпус SOIC8, места на плате не займёт, а програмно намучаться можно с алгоритмами аж бегом, а про надёжность програмную или аппаратную, то я с клоняюсь к аппаратной, на программу 100% работоспособность ты не даш.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|