Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: В AVR слетает flash.
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
serg_am
Есть небольшая разработка на AVR для промышленного использования.
Во время эксплуатации обнаружилась очень неприятная особенность - слетает флешина у кристалла (образ считанной флеш не совпадает с залитым при установке изделия), что приводит к некорректной работе прибора.

Пока работаем на дома на столе - все нормально, проявляется только в цеху, при сильно плохом питании - скачки напряжения, гармоники...

На входе по питанию у нас - импульсный стабилизатор, на плате - внешний далласовский спервизор на 4.5 вольта...

Если кто сталкивался подобным траблом, поделитесь опытом, плиз

проблема наблюдалась на AT8535, ATmega163, ATmega322, ATmega32
Серокой
А если подтянуть те порты, которые MISO-MOSI? Может, на них помехи наводятся, пока Reset в нуле стоит?
andk
Проблема на самом деле известная, и хворают этой болезнью практически все атмельные камни - кто больше, кто меньше.
Чаще всего проявляется в слете 0 ячейки во флэш данных.
Лечение - ставить молнитор питания на вход сброса. Отписано у Атмелов.
можно не пользоваться о ячейкой.
моси-мисо-сцк- не оставлять в воздухе.

Да, еще не хило бы посмотреть на качество разводки проводников с резонатора, сброса и питания. Частенько проблемы живут именно там...
IgorKossak
Цитата(andk @ Dec 18 2004, 10:33)
Проблема на самом деле известная, и хворают этой болезнью практически все атмельные камни - кто больше, кто меньше.
Чаще всего проявляется в слете 0 ячейки во флэш данных.
Лечение - ставить молнитор питания на вход сброса. Отписано у Атмелов.
можно не пользоваться о ячейкой.
моси-мисо-сцк- не оставлять в воздухе.

Да, еще не хило бы посмотреть на качество разводки проводников с  резонатора, сброса и питания. Частенько проблемы живут именно там...
*

Тщательные испытания на стендах показали, что andk абсолютно прав, особенно во втором абзаце.
Никогда не следует пренебрегать чтение тех глав даташитов, где говорится о разводке цепей питания и других полезных советах.
Наша фирма выпускает изделия на Atmel AVR семействе десятками тысяч и подобных моментов не было (начальство очень серьёзно жарит конструкторский отдел).
serg_am
Спасибо за советы, поэксперементируем еще...
Супервизор у нас стоит, моси-мисо тоже подтягиавли, все равно глюк проявлялся...

А насчет схемы разводки проводников с резонатора и ресета я первый раз слышу, может действительно в этом глюк?

Вроде обычная печатная плата, не очень длинные проводники, 30-40 мм, пара изгибов...
что имеется в виду под качеством разводки, длина самих проводников, их расположение относительно других элементов на плате?

У атмела насчет этого что-то можно почитать? Я у них видел только стандартную отмазку - типа ставте внешний супервизор и все у вас будет хорошо...
Серокой
У Атмела пишут о слёте не flash, а EEPROM. Это да, лечится супервизором, а также неиспользованием ячейки 0 (и выставлением на неё указателя в тот момент, когда EEPROM не используется). Но это, насколько я вижу, несколько иная история.
andk
Да, Серокой, именно об слете флэш данных я и писал.
Хотя, по большому счету, ничто не мешает загнуться и памяти программ.
Про качество разводки:
1. Резонатор - как можно ближе к камню. Идеальный вариант - 1-2-3 мм от камня.
2. Конденсаторы резонатора максимально близко от выводов.
3. Общий провод конденсаторов - ОТДЕЛЬНОЙ проволокой НА ОБЩИЙ КАМНЯ.
4. Оч. хорошо, если есть полигончик по резонатором, прицепленный на общий камня. Ну и резонатор можно к полигончику припаять.
5. Сброс желательно цеплять к плюсу через резистор ~ 1к, т.к. внутренний резистор имеет огромное сопротивление и разброс - если не изменяет память до 500к. Я применял в качестве монитора питания 1117сп42, там открытый коллектор и резюк встает автоматом, вроде замечаний нет
6. Питание.... Самый печальный вопрос... Целиком зависит от опыта конструктора-разработчика... Рекомендации только самые общие.
Блокировочные емкости прямо на ногах проца - обязательно.
Проволока общего - отдельная до источника (видел страшенные глюки когда на одной проволоке сидел проц и мощный инвертор)
Пульсации питания - макс. 0.1 в Имееттся ввиду на экране осцилла - вч и нч составляющие вместе. (Ну естес-но щуп с делителем!)

Все остальное - качество конструктора-разработчика smile.gif
Удачи!
-Tумблер-
Цитата(serg_am @ Dec 17 2004, 17:34)
Пока работаем на дома на столе - все нормально, проявляется только в цеху, при сильно плохом питании - скачки напряжения, гармоники...
*


Попробуй поставить супрессоры (TVS диоды) соотв. напряжения
на все питания и все провода, подходящие к плате извне.
smile.gif
serg_am
Всем большое спасибо за советы! Надеюсь это поможет..
_Sam_
Если бы проблема была с подтяжкой MISO, MOSI, затиралась бы не только EEPROM(память данных), но и flash(память программ).

Была похожая проблема но с кристаллами семейства avr. В семействе mega можно вроде обходится и без внешнего супервизора. Во всех mcu этого семейства есть встроенные brown-out detect. Надо только fuse правильно прошить. Если интересно прилагаю атмеловскую статейку на эту тему(avr180), там всё подробно описано.

Чтобы не было проблем с питанием я использую dc-dc с гальванической изоляцией и с широким входным диапозоном напряжений.
serg_am
Цитата(_Sam_ @ Jan 18 2005, 14:17)
Была похожая проблема но с кристаллами семейства avr. В семействе mega можно вроде обходится и без внешнего супервизора. Во всех mcu этого семейства есть встроенные brown-out detect.

Чтобы не было проблем с питанием я использую dc-dc с гальванической изоляцией и с широким входным диапозоном напряжений.
*

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

А что за dc-dc вы используете, если не секрет, как называется?
_Sam_
Поскольку у меня много индикаторов, устройство потребляет порядка 1.5-2А, ну я и взял с запасом 15Вт. Каталог прилагаю. Кстати это самые дешёвые dc-dc в Питере на такую мощность. Я по крайней мере дешевле не нашёл.

неплохие вроде dc-dc фирмы traco, но они значительно дороже.

есть ещё дешёвые dc-dc серии va... на несколько ватт. Однако они имеют узкий входной диапазон(10%) и ужасно глючат при плохом источнике. Поэтому для их использования необходимо предварительно ставить что-нибудь типа шим регулятора. В этом случае шим регулятор обеспечит широкий входной диапозон, а dc-dc гальваническую изоляцию. КПД правда в этом случае будет низкий.
3.14
<Встроенный супервизор у них глючно работает, в какой-то ...>
Юмор в том, что встроенный супервизор может срабатывать при меньшем чем декларируемое минимальное напряжение питания sad.gif

К тому же в "классике" может возникать "тиристорный эффект" - при шумах по питанию она может закорачивать порты на землю, при это начинает греться до покраснени я и сгорает sad.gif
Сам я подобными экспериментами не занимался, уважаемый мной друг с этим бодается уже больше года, утверждает, что с Mega дела в этом плане получше, во всяком случае они просто виснут не закорачивая порты, вот только собаку приходится внешнюю делать, своя то же помереть может sad.gif
_Sam_
Может быть. Я работал только с ATmega162, ATmega8, проблем которые были с EEPROM at90s8514 не было. И мне начинает казаться, что проблемы с EEPROM у вас не из-за питания. В atmelовских datasheet упоминается о двух возможных причинах повреждения EEPROM.

Цитата
During periods of low VCC, the EEPROM data can be corrupted because the supply voltage
is too low for the CPU and the EEPROM to operate properly. These issues are the
same as for board level systems using EEPROM, and the same design solutions should
be applied.
An EEPROM data corruption can be caused by two situations when the voltage is too
low. First, a regular write sequence to the EEPROM requires a minimum voltage to
operate correctly. Second, the CPU itself can execute instructions incorrectly, if the supply
voltage is too low.
EEPROM data corruption can easily be avoided by fol lowing this design
recommendation:
Keep the AVR RESET active (low) during periods of insufficient power supply voltage.
This can be done by enabling the internal Brown-out Detector (BOD). If the
detection level of the internal BOD does not match the needed detection level, an
external low VCC Reset Protection circuit can be used. If a reset occurs while a write
operation is in progress, the write operation will be completed provided that the
power supply voltage is sufficient


Кстати если пользоваться внутренним BOD надо иметь ввиду, что предусматривается установка двух уровней.(Например для ATmega8 2.4-2.9v и 3.7-4.5v)
Серокой
Цитата(_Sam_ @ Jan 18 2005, 14:17)
Если бы проблема была с подтяжкой MISO, MOSI, затиралась бы не только EEPROM(память данных), но и flash(память программ).


Так ведь так оно и происходит, то есть слетает именно память программ, или я неверно понял автора темы?
_Sam_
Цитата(andk @ Dec 20 2004, 07:32)
Да, Серокой, именно об слете флэш данных я и писал.
Хотя, по большому счету, ничто не мешает загнуться и памяти программ.
*


Именно из этой реплики я понял что проблемы с EEPROM
serg_am
Цитата(Серокой @ Jan 18 2005, 18:03)
Так ведь так оно и происходит, то есть слетает именно память программ, или я неверно понял автора темы?
*

Как автор темы, авторитетно заявляю, слетает первая страница памяти программ (flash)
wink.gif
IgorKossak
Цитата(serg_am @ Jan 18 2005, 19:49)
... слетает первая страница памяти программ (flash) ...
*

Вся затирается, вся прописывается или меняются отдельные байты/биты?
Насчёт того, что дело происходит со страницей понятно. В мегах есть команды стирания/записи страницы и при низком питании и отсутствии ресета/броунаута возможно случайное исполнение команды SPM.
Но почему это происходит с классическим устройством? Видимо по той же причине задействуются механизмы программирования.
В любом случае вывод напрашивается один - обеспечить правильное включение/выключение а также стабильность питания.
serg_am
Цитата(IgorKossak @ Jan 19 2005, 10:54)
Вся затирается, вся прописывается или меняются отдельные байты/биты?
Насчёт того, что дело происходит со страницей понятно. В мегах есть команды стирания/записи страницы и при низком питании и отсутствии ресета/броунаута возможно случайное исполнение команды SPM.
*

Различных случаев было много.. обычно, затирается 1-я страница памяти программ.
тут выше много советов надавали, попробуем что-нибудь сделать..
halfdoom
Цитата(serg_am @ Jan 18 2005, 20:49)
Как автор темы, авторитетно заявляю, слетает первая страница памяти программ (flash)
wink.gif
*

Такой глюк проявлялся на 8515, лечилось просто - подтяжка
1к на SCK и 10к на MOSI/MISO. Плюс стандартое решение - 10к на reset
и 1нФ с ресета на землю.

По поводу встроенных brownout детекторов - почти все проблемы уже описаны
в еррата. Сам прошел этим граблям на мега161, а мега162 работает прекрасно
без внешнего супервизора.
-Tумблер-
Цитата(serg_am @ Jan 20 2005, 10:57)
Различных случаев было много.. обычно, затирается 1-я страница памяти программ.
тут выше много советов надавали, попробуем что-нибудь сделать..
*


Как то раз получилось у меня так: случайно на питание
жука AT89S8252 было подано импульсное напряжение 9V.
Вместо постоянных 5V. (Это конечно не AVR, но тоже ATMEL).
Так вот, память программ стала абсолютно чистой. 0xFF. И EEPROM тоже.
Впоследствии процессор был перепрограммирован и "нормально работал"
и никаких паталогий замечено не было.
huh.gif
Пришелец
У нас такая же проблема с Mega128 - очень редко слетает память программ, что-там именно портится не знаю т.к. она залочена.

Не может ли это происходить из-за присутствия напряжений на каких-нибудь ногах при отсутствии питания?... blink.gif

После перепрошивки устройства оно вновь нормально работает.

все требования перечисленные выше вроде выполняем. smile.gif
-Tумблер-
Цитата(Пришелец @ Feb 1 2005, 10:09)
У нас такая же проблема с Mega128 - очень редко слетает память программ, что-там именно портится не знаю т.к. она залочена.

*


Это может быть и плохой процессор.
Приблизительно из 1000 использованных
процессоров AT89S8252 поппался один, у которого
FLASH (память программ) портилась через ~0.5-1.0 час.
(возврат продукции, ~5 мес эксплуатации).
Был один , у которого не прописывался EEPROM (один и тот же адрес !)
С тех пор во все свои проекты стал вставлять проверку
CRC16 FLASH и EEPROM.
Хоть какая то диагностика лучше совсем никакой. smile.gif
KOME
Цитата(Серокой @ Jan 18 2005, 18:03)
Цитата(_Sam_ @ Jan 18 2005, 14:17)
Если бы проблема была с подтяжкой MISO, MOSI, затиралась бы не только EEPROM(память данных), но и flash(память программ).


Так ведь так оно и происходит, то есть слетает именно память программ, или я неверно понял автора темы?
*


Была такая проблема с AVR2313, когда на входы MISO, MOSI, SCK при активном ресете поступали импульсные сигналы. В программе эти выводы использовались как входы. Но что интересно, глючных контроллеров было не более 10%; также была замечена привязка к номеру партии. Общее количество устройств -250.
Harbour
в меге можно перешивать флеш из bootloader'а - т.е. возможен программный глюк. лечится fus'ами защиты области программ от записи.
валера
А если поставить DS1813 ?
Miron
<Во время эксплуатации обнаружилась очень неприятная особенность - слетает флешина у кристалла (образ считанной флеш не совпадает с залитым при установке изделия), что приводит к некорректной работе прибора.>

Да такая штука у Атмела встречалась:
Прибор используется в полевых условиях при наличии сильных помех по питанию и электромагнитных по эфиру.
Программо пришлось ввести CRC EEPROM дублирование данных в другой части EEPROM и при слете одной части восстановление из неповрежденной.
Аппаратно переразводка цепей сброса и генератора.
Все это частично помогло. На большенстве объектов отказы прекратились полностью.
Но 3-4 объекта так и продолжали ерундить.
Пришлось собрать макет постановшика помех и искать откуда они лезут.
В результате полная гальваническая развязка процессорной части от внешних цепей ее экранирование.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.