Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: mega162 теряет настройки EEPROM
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
west329_
Странная зависимость обнаружилась, при работе устройства.
В памяти хранятся базовые настройки системы, перед их использованием проверяется их crc.

Замечен сбой crc когда когда устройство полежит без работы сутки 07.gif .
При частых включених и выключениях питания всё нормально, без ошибок.

Питание 3,3 вольт,
Включен встроеный супервизор питания на 2.9В

Вывод ресет висит в воздухе.

Подскажите что это может быть ?
_Pasha
Цитата(west329_ @ Nov 19 2008, 01:05) *
Подскажите что это может быть ?

Думается, что это битый контроллер, а именно - камень начинает работать с напряжения ниже допустимого. А BOD сутки отдыхал - с пересыпу не вкуривает, чо делать нада smile.gif
vvs157
Цитата(west329_ @ Nov 19 2008, 00:05) *
Странная зависимость обнаружилась, при работе устройства.
В памяти хранятся базовые настройки системы, перед их использованием проверяется их crc.

Замечен сбой crc когда когда устройство полежит без работы сутки 07.gif .
При частых включених и выключениях питания всё нормально, без ошибок.

Питание 3,3 вольт,
Включен встроеный супервизор питания на 2.9В

Вывод ресет висит в воздухе.

Подскажите что это может быть ?
Попробуйте не использовать нулевой адрес в EEPROM
west329_
Цитата(vvs157 @ Nov 19 2008, 03:45) *
Попробуйте не использовать нулевой адрес в EEPROM


Попробуем, других вариантов нету.

Интересно с чем это связано 07.gif
espectro
Цитата(west329_ @ Nov 19 2008, 00:05) *
Вывод ресет висит в воздухе.

Почему?
west329_
Цитата(espectro @ Nov 19 2008, 11:37) *
Почему?


А куда его деть laughing.gif ? отломить smile.gif

Изредка для прошивки используем и всё.

Можем для опыта подтянуть его к + через 10к.
espectro
Цитата(west329_ @ Nov 19 2008, 10:47) *
А куда его деть laughing.gif ? отломить smile.gif
Можем для опыта подтянуть его к + через 10к.

Для опыта?) Я думал, что подтягивать ресет на + питания - это хороший тон smile.gif
GDI
И еще конденсатор 0,1мк на землю чтоб помехи лишние не ловил.
defunct
Цитата(espectro @ Nov 19 2008, 13:03) *
Для опыта?) Я думал, что подтягивать ресет на + питания - это хороший тон smile.gif

Но только не через резистор, т.к. резет и так подтянут к питанию через внутренний pull-up.
Если хотите подтянуть то надо цеплять пин непосредственно к VCC.
Цитата
И еще конденсатор 0,1мк на землю чтоб помехи лишние не ловил.

Больше помех наведется на дорожки которые неизбежно появятся если применить оба перечисленных совета - довесить резистор и кондер. Не надо ничего к резету цеплять, он самодостаточен по крайней мере в m162. В крайнем случае если Вас разражает висение этого пина в воздухе - прицепите его к Vcc.
Или вам нравится иметь букет резет флагов? POR/BOD/EXT в одном флаконе?

Цитата
А куда его деть

оставьте висеть.
eeprom все равно падает не из-за этого.
Возможно он падает из-за BOD 2.9V такого в m162 просто нет.

Для того чтобы более точно сказать что может быть - попробуйте хранить две копии конфигурации, и проинформируйте нас слетают ли обе или только одна, если одна то какая?
haker_fox
Хочу поделиться аналогичным случаем. Вчера обнаружил, что мое устройство "теряет" данные в EEPROM, если девайс выключить на некоторое время. Если прибор не выключать, то при загрузке данных нет никаких проблем. Что самое интересное, данные, которые загружались всегда были правильными, независимо от состояния CRC8. Меня очень сильно насторожил сей факт, как так, данные визуально в порядке, а CRC показывает сбой? В итоге выяснилась неприятная ошибка в реализации расчета CRC: контрольная сумма считается табличным методом. crc8Table - массив коэффициентов, используемый при расчете, хранится во FLASH.
Чтобы считать данные, мы должны применить такую конструкцию
Код
*crc8 = pgm_read_byte(crc8Table + (*crc8 ^ byte));

Я же, по ошибке, написал это
Код
*crc8 = crc8Table[*crc8 ^ byte];

Естественно, при расчете программа читала данные не из постоянной неизменяемой FLASH, а из SRAM, где данные рандомны.
Таким образом, при постоянно включенном питании данные в той области SRAM, откуда читались коэффициенты были постоянны (ну так, видимо получилось), а при выключении с последующим включением, данные были другими, соответсвенно CRC8 считалась по новым коэффициетам и не совпадала с записанной. Вот и получалось, что после выключения прибор терял настройки. На самом деле причина была в совершенно другом месте, а не в BOD, EEPROM и тп.
Вот так вот...
west329_
Цитата(defunct @ Nov 20 2008, 04:31) *
eeprom все равно падает не из-за этого.
Возможно он падает из-за BOD 2.9V такого в m162 просто нет.



Нащёт BOD 2.9V нашол в даташите, возможно я ошибаюсь.

Похоже причину нашли, но пока небуду утверждать на 100%, но проблема пропала.

Какая ситуация была, изначально во время отладки всего устройства после ресета выводилась служебная информация (мы никак немогли понять почему первые пару символов отображались крякозябрамы, хотя система высела на кварце), только потом проводился контроль срс, проблем с еепром небыло.

В финальной версии вывод служебной информации, был убран как мы поняли это в своём роде была небольшая задержка, подставил програмную задержку и всё стало нормально.

Как я понял что это связано с питанием во время включения, и чтением сразу с еепрома. Все клонится в сторону применения внешнего визора питания.
GDI
Из таблицы видно , что 2,9 это максимальное значение, а говорят всегда про типичное, т.е. в вашем случае надо говорить, что БОД установлен на 2,7в, тогда и не будет разногласий.
defunct
Цитата(west329_ @ Nov 20 2008, 08:22) *
В финальной версии вывод служебной информации, был убран как мы поняли это в своём роде была небольшая задержка, подставил програмную задержку и всё стало нормально.

Установите фузами требуемую задержку включения.
см. фузы SUTxx.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.