Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: ATmega128 - проблемы с EEPROM
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Alex86
Здравствуйте, уважаемые форумчане! Прошу помочь по следующему вопросу. Есть девайс разработанный моими коллегами и мной на базе ATmega128. В еепроме хранится несколько переменных. Очень редко случается так, что эти переменные корежатся, по непонятной мне причине (за два месяца испытаний устройства зарегестрировано два подобных случая). При чем проблема возникает не в момент записи в еепром, а просто в случайное время. Может быть кто-то сталкивался с подобной проблемой? Почему вообще данные хранящиеся в eeprom могут пропадать? Заранее благодарен отозвавшимся.
defunct
Цитата(Alex86 @ Aug 23 2010, 13:46) *
Почему вообще данные хранящиеся в eeprom могут пропадать?

Потому что при вкл. и откл. МК (переходной процесс) МК может выполнять любой кусок кода, в т.ч. и кусок кода который пишет в ячейки eeprom.
еще в вашей программе могут быть ошибки, в результате которых туда пишется фигня всякая.
Savrik
Цитата(defunct @ Aug 23 2010, 13:55) *
Потому что при вкл. и откл. МК (переходной процесс) МК может выполнять любой кусок кода, в т.ч. и кусок кода который пишет в ячейки eeprom.

Что бы этого избежать, ставят супервайзеры питания, или, на худой случай, включают BOD.
Tiny
На сколько я знаю, при работе с EEPROM возникают сбои при понижении питания ниже допустимого. В связи с этим в платах с МК не рекомендуется использовать по питанию электролиты большой емкости. Т.к. при выключении питания емкость держит напряжение, которое медленно падает и это приводит к сбою в EEPROM.
Один из способов решения проблемы - супервизор. При понижении напряжения ниже допустимого, он сбрасывает МК. Я ставил на палату батарею, развязав ее от сетевого питания диодами.

Точно, пока писал меня опередили,а про BOD я забыл.
BODEN - сброс при пропадании питания
BODLEVEL - уровень срабатывания сброса при пропадании питания.
Их я использовал вместе с супервизором.
GDI
BOD надо включить и правильно порог настроить в зависимости от напряжения питания МК.
Alex86
Цитата(Tiny @ Aug 23 2010, 15:19) *
На сколько я знаю, при работе с EEPROM возникают сбои при понижении питания ниже допустимого. В связи с этим в платах с МК не рекомендуется использовать по питанию электролиты большой емкости. Т.к. при выключении питания емкость держит напряжение, которое медленно падает и это приводит к сбою в EEPROM.
Один из способов решения проблемы - супервизор. При понижении напряжения ниже допустимого, он сбрасывает МК. Я ставил на палату батарею, развязав ее от сетевого питания диодами.

Точно, пока писал меня опередили,а про BOD я забыл.
BODEN - сброс при пропадании питания
BODLEVEL - уровень срабатывания сброса при пропадании питания.
Их я использовал вместе с супервизором.

Спасибо всем за быстрые ответы. Tiny, действительно по питанию стоит электролит на 47 мкФ, развязанный от кренки диодом. Данная цепь должна была защитить контроллер от кратковременного понижения напряжения. Получается, что эту цепь лучше убрать? BOD пока не использовал, но прислушаюсь к многочисленным советам и включу.
Tiny
47мкф, вроди не большая емкость. Но BOD лучше включить, и если будут сбои лучше поставить супервизор. Надежнее будет. Если важны данные, я бы сразу поставил.
Savrik
Цитата(Alex86 @ Aug 23 2010, 14:46) *
Спасибо всем за быстрые ответы. Tiny, действительно по питанию стоит электролит на 47 мкФ, развязанный от кренки диодом. Данная цепь должна была защитить контроллер от кратковременного понижения напряжения. Получается, что эту цепь лучше убрать? BOD пока не использовал, но прислушаюсь к многочисленным советам и включу.

Сомнительно.. На кремниевом диоде около 0,7В падения. У Вас какой стоит?
Оптимальное решение - включить BOD, диод выбросить. Если что - поставить супервайзер.
P.S. На своих платах вплоть до 220мкФ ставил - проблем не было ни разу.
novus2004
Я на своих платах после стабилизатора ставил 1000 мкф. Если BOD включен - то никаких проблем вообще нет.
Alex86
Цитата(Savrik @ Aug 23 2010, 16:02) *
Сомнительно.. На кремниевом диоде около 0,7В падения. У Вас какой стоит?
Оптимальное решение - включить BOD, диод выбросить. Если что - поставить супервайзер.
P.S. На своих платах вплоть до 220мкФ ставил - проблем не было ни разу.

Стоит диод Шоттки. Еще вопрос. Если использовать BOD, то не будет ли внешний супервайзер излишеством? Т.е. чем обосновано его использование вкупе с BOD-ом?
Tiny
Насколько я знаю, супервизор не всегда спасает. Нет ничего идеального. После пары сбоев у себя (без всякой защиты) я использовал защиту по максимуму. Сделать это не трудно, а лишним не будет если важны данные.
Savrik
Цитата(Alex86 @ Aug 23 2010, 17:51) *
Стоит диод Шоттки. Еще вопрос. Если использовать BOD, то не будет ли внешний супервайзер излишеством? Т.е. чем обосновано его использование вкупе с BOD-ом?

На Шоттки 0,2..0,4В, если не изменяет память.. Но все равно диод можете выкинутьsmile.gif
У BOD и супервайзера одно назначение - сбросить и держать на сбросе контроллер до тех пор, пока напряжение не вернется в норму. Но все же супервайзер мне лично кажется предпочтительным, а если вдобавок еще и BOD включить, получите этакую схему сброса с резервированиемsmile.gif В плане проблем это ничем не грозит.
_Pasha
я бы ставил внешний супервизор только тогда, когда порог внутреннего не устраивает либо надо микропотребление как-то уменьшать. 4.3 вольта - это слишком высоко?
halfdoom
Внешний супервизор нужен только для такого (errata на мегу161):
Цитата
Brown-out Detecor may cause the Device to be Stuck in Reset State
When the internal Brown-out Detector is enabled, the device may hang in Reset state regardless of the VCC level.

Problem Fix/Workaround
Use external Brown-out Detector and do not enable internal Brown-out Detector
(leave BODEN Fuse unprogrammed).
Alex86
Включил BOD. Теперь буду гонять устройство. Надеюсь проблема решена. Спасибо всем за активное участие. a14.gif beer.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.