реклама на сайте
подробности

 
 
3 страниц V   1 2 3 >  
Reply to this topicStart new topic
> Есть проблема EEPROM..., В третий раз сталкиваюсь со сбоями при работе с EEPROM
Volodymyr
сообщение Dec 12 2005, 20:51
Сообщение #1





Группа: Новичок
Сообщений: 8
Регистрация: 10-12-05
Из: Gostomel
Пользователь №: 12 055



Первый раз на 8515 /если честно - не помню, чтоя там делал :о((/, но тогда просто пропустил - поскольку использовал для хранения отладочной информации по системе.
Второй раз на меге 8535 - получал обнуление по всем адрессам /хранил разгонную сетку частот для гиромотора, опять же на период обкатки системы/
Третий - на 32 меге. Первые четыре байта использую для хранения резонансных частот пьезодвигателя, пятый - для хранения адреса в системе (всего 12 модулей). На одной меге вместо записаного адреса 0х04, считываю то 0х04, то 0х05 то 0х0D. В программе для меги использовал функции работы с EEPROM от ИАР, во время работы программа сама ничего не пишет, только считывает по внешней команде. Ошибка в коде маловероятна, так как оставшиеся 11 модулей работают без нареканий.

Ответа от саппорта пока не получил.

Кто-то сталкивался с подобным? И как с этим бороться?
Go to the top of the page
 
+Quote Post
arttab
сообщение Dec 13 2005, 02:34
Сообщение #2


Профессионал
*****

Группа: Свой
Сообщений: 1 432
Регистрация: 7-12-04
Из: Новосибирск
Пользователь №: 1 371



По нолевому адресу ни чего хранить нельзя. Иар с какой то версии сам обходит. при не корретной разводки, не соблюдении мер по устойчивости и т.д. программа может стартовать с любого адреса.
Сбой в работе мк врядли запортит данные (при чтении), а вот в чем вопрос - Иар при использовании только чтения не подставляет ли универсальную функции, которая и писать может? Если да, то сбой + указатель куданибудь и если на код записи, то /-/ данные.


--------------------
OrCAD, Altium,IAR, AVR....
Go to the top of the page
 
+Quote Post
goddev
сообщение Dec 13 2005, 04:27
Сообщение #3





Группа: Новичок
Сообщений: 2
Регистрация: 29-11-04
Пользователь №: 1 254



Зашить в FUSE биты BODEN и BODLEV. При пониженом напряжении питания мк может выполнить любую команду. Проверить разводку платы на возможность кратковременых выбросов напряжения питания мк более 7V. (протекание больших силовых токов по общему мк)
Go to the top of the page
 
+Quote Post
damir2
сообщение Dec 13 2005, 06:07
Сообщение #4


Участник
*

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



У нас такой же сбой происходил давно, когда не ставили внешний супервизор по питанию.Сейчас при питании +5В ставим супервизор на +4,2В.
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Dec 13 2005, 07:28
Сообщение #5


Шаман
******

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



Цитата(arttab @ Dec 13 2005, 04:34) *
... вот в чем вопрос - Иар при использовании только чтения не подставляет ли универсальную функции, которая и писать может? Если да, то сбой + указатель куданибудь и если на код записи, то /-/ данные.

Нет, для чтения и записи используются разные функции.

Volodymyr, мне в своё время приходилось дорабатывать функции чтения\записи EEPROM, т. к. я их использовал в разных процессах (речь идёт об ОСРВ).
Посмотрите, не используете ли Вы их в прерываниях. В этом случае возможны сбои.
Go to the top of the page
 
+Quote Post
DeXteR
сообщение Dec 13 2005, 08:10
Сообщение #6


Местный
***

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



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


Непонятно Очень прошу пояснить

Тоесть если я использую хапись в EEPROM по прирыванию таимера (например) возможны сбои ???
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Dec 13 2005, 08:50
Сообщение #7


Шаман
******

Группа: Модераторы
Сообщений: 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
 
Go to the top of the page
 
+Quote Post
DeXteR
сообщение Dec 13 2005, 09:15
Сообщение #8


Местный
***

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



Спасибо Все ясно

Сам имел проблемму с EEPROM очень давно (на АТ90 2313) Там было очень паршивое питание в схеме + я незнал о проблемме с нулевым адресом.

Счас хочу вынести на обсуждение одну идею.

Есть проект в котором нада хранить данные энергонезависимо + обновлять эти данные больше 100000 раз.

В датащитах пишут что гарантировано 100000 перезаписей - больше - негарантирують

Хотел создать в ЕЕПРОМЕ чтото вроже таблицы адресов сбоиных ячеек. Если после записи верификация не прошла то адрес заноситься в таблицу и прога больше непишет по ниму.

Таким образом smile.gif пока все ЕЕПРОМ несдохнит девайс будет хранить данные нормально smile.gif

Очень прошу мнений и критики

СПАСИБО
De}{teR
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Dec 13 2005, 09:23
Сообщение #9


Шаман
******

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



Хорошая идея DeXteR.
Go to the top of the page
 
+Quote Post
Petka
сообщение Dec 13 2005, 09:42
Сообщение #10


Профессионал
*****

Группа: Свой
Сообщений: 1 453
Регистрация: 23-08-05
Пользователь №: 7 886



Идея-то хорошая, но не совсем прозрачная... где ты будешь хранить информацию о сбойных ячейках? а если и эти ячейки будут сбоить? много неочевидного =) у меня идея проще: писать во все ячейки по очереди, например 1 байт пишием, а за ним порядковый номер записи, таким образом можно увеличить количество перезаписей в (объём_eeprom/2) раз.
Go to the top of the page
 
+Quote Post
Георгий
сообщение Dec 13 2005, 09:43
Сообщение #11


Местный
***

Группа: Свой
Сообщений: 269
Регистрация: 17-11-05
Из: Киров-Москва
Пользователь №: 10 957



А не получится, что сама таблица попадет на сбойный участок? Ведь после гарантированных записей она будет обновляться чаще других, если ячейки начнут сыпаться.


--------------------
Обычно последним смеется тот, кто хуже соображает!
Go to the top of the page
 
+Quote Post
DeXteR
сообщение Dec 13 2005, 11:22
Сообщение #12


Местный
***

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



Ячейки таблицы сбоиных адресов например расположим вначале ЕЕПРОМА а
данные будем писать с конца (адрес уменьшая)

Таблица будет рости поэтому ее размер нада ограничить
(например если 25% сбоиных - все ФАТАЛ ЕРРОР cranky.gif )

Таблича будет писаться редко (по 1-й записи на 1 адресс) поэтому сбоев недолжнобыть =)

Если таблица и сбойнет (1 адресс) это приведет к неиспользованию какогото адреса в ЕЕПРОМЕ
(верефикация после записи всеравно отловит ошибку и данные неповредяться)

Меня беспокоит один вопросс:

Действительно ли ячейки ЕЕПРОМА умирают по одной ???
Опыта в этом деле нету поэтому будем ставить эксперимент и палить контроллеры =)
Go to the top of the page
 
+Quote Post
m16
сообщение Dec 13 2005, 11:57
Сообщение #13


Местный
***

Группа: Свой
Сообщений: 242
Регистрация: 27-01-05
Пользователь №: 2 225



Цитата(DeXteR @ Dec 13 2005, 12:15) *
Счас хочу вынести на обсуждение одну идею.

Есть проект в котором нада хранить данные энергонезависимо + обновлять эти данные больше 100000 раз.
В датащитах пишут что гарантировано 100000 перезаписей - больше - негарантирують


ну раз такое количество перезаписей то почему EEPROM? дык можно микромощную ram прикрутить с литиевой батареей
Go to the top of the page
 
+Quote Post
IgorKossak
сообщение Dec 13 2005, 13:23
Сообщение #14


Шаман
******

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



Цитата(m16 @ Dec 13 2005, 13:57) *
ну раз такое количество перезаписей то почему EEPROM? дык можно микромощную ram прикрутить с литиевой батареей

Всё зависит от цены, размеров и прочих требований.
RAM с батарейкой дороже, недолговечнее и, на мой взгляд, менее надёжно.
FRAM ещё дороже.
Go to the top of the page
 
+Quote Post
Volodymyr
сообщение Dec 13 2005, 21:07
Сообщение #15





Группа: Новичок
Сообщений: 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 - интересней. ИМХО.
Go to the top of the page
 
+Quote Post

3 страниц V   1 2 3 >
Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 14:03
Рейтинг@Mail.ru


Страница сгенерированна за 0.01486 секунд с 7
ELECTRONIX ©2004-2016