Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Зависания АВР
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
phantom
В последнее время начал встречаться с подобными явлениями. Люди работающие на РIC-ах говорят что зависания в АVR-ках обычная вещь, дескать, поэтому они перешли на ПИКи... У меня был случай когда после 2-х недельного тестирования прибора он слегка завис при сдаче заказчику... и сторожевой таймер че-то не помог, вообщем мистика. Поделитесь мнениями - как с этим бороться.
Serj78
Правильно писать программы smile.gif

И грамотно разводить питание. вот, вроде, и все smile.gif

Я бы рекомендовал вам спросить этих ваших "работающих на PIC-ax" В чем именно причина зависания AVR...

а-зависания- обычная вещь, если не представлять себе как написанная тобой программа может и должно работать во времени...
Igor26
"О сколько раз твердили миру..."(С)

Тема поднималась раза три, как минимум, за этот год, причем с весьма жаркими спорами! Вот нашлось на этом форуме, даже не перелистывая экран, правда в упрощенной версии форума.

http://electronix.ru/forum/lofiversion/index.php/t38646.html
phantom
Да наверное, торможу как всегда... Интересно почитать, однако.
oran-be
Цитата(phantom @ Dec 17 2007, 19:06) *
Люди работающие на РIC-ах говорят что зависания в АVR-ках обычная вещь, дескать, поэтому они перешли на ПИКи...

Это явление имело место лет 5 назад, до появления Меги8 и последующих тинь - самое веселое, что происходило регулярно - это стирание флеша по неопределенным причинам. Сейчас этого не происходит и причина зависаний может быть только в программных глюках или сбоях питания. Либо наводки на выводы кварцевого резонатора. Собака, кстати -не панацея от зависаний, правильная собака должна иметь двойной цикл сброса - взвод и сброс, процедуры которых должны втыкаться в основном тактирующем прерывании и в главном цикле. Тогда при зависании любого из них произойдет сброс. У атмела такого нет, поэтому сброс собаки лучше вешать в главном цикле с контролем основного тактирующего прерывания посредством флага.
ArtemKAD
Цитата
Это явление имело место лет 5 назад, до появления Меги8 и последующих тинь - самое веселое, что происходило регулярно - это стирание флеша по неопределенным причинам.

По "неопределенным причинам" небыло никогда. У меня все еще катаются в автомобилях тысячи изделий на 2313 и 8515 без каких либо перепрошивок. Была, правда, одна явно бракованная партия 90S8515 (0105), но там флеш не стерался, а просто помирал проц (или начинал делать разное всякое).
Если стерался флеш, то это к схемотехнику и разводчику...
Ruslan_Shaida
1)Наиболее частая проблема в питании. Лечится подключением танталового конденсатора 1-10мкФ и керамического конденсатора 0,1мкФ прямо возле ножки питания проца.

2)Использование разъема для подключения ISP программатора в конечном изделии - крайне нежелательно. При невозможности его удаления - разводим плату так, что-бы длина дорожек разъем-проц была минимальная. При этом все его проводники (MISO, MOSI, SCK) должны быть подтянуты к +Uпит.

3)Используем супервизор питания.

При выполнении данных условий - проблемы только в программе.
Igor26
Цитата
2)Использование разъема для подключения ISP программатора в конечном изделии - крайне нежелательно. При невозможности его удаления - разводим плату так, что-бы длина дорожек разъем-проц была минимальная. При этом все его проводники (MISO, MOSI, SCK) должны быть подтянуты к +Uпит.

И что это дает? Пока ресет не в нуле, то вход в режим программирования просто невозможен. Передо мной лежит плата, на которой разъём программирования находится на расстоянии сантиметров семи от процессора. Никаких "слетаний флэш и ЕЕПРОМ" за несколько лет серийного производсва не замечалось. Супервизора питания на ней нет, только включен BOD.
В свои устройства я тоже давно не ставлю супервизор питания. Один раз были жалобы, что у устройства слетает ЕЕПРОМ. Еду разбираться на место. Оказалось, что наладчик не прошил фьюз BODEN. Установил его и как бабка отшептала. С лета ни одного звонка с того объекта небыло, а устойств там порядка четырнадцати. Так что вот так.
kd_Rash
Цитата(Igor26 @ Dec 20 2007, 11:02) *
И что это дает? Пока ресет не в нуле, то вход в режим программирования просто невозможен. Передо мной лежит плата, на которой разъём программирования находится на расстоянии сантиметров семи от процессора. Никаких "слетаний флэш и ЕЕПРОМ" за несколько лет серийного производсва не замечалось. Супервизора питания на ней нет, только включен BOD.
В свои устройства я тоже давно не ставлю супервизор питания. Один раз были жалобы, что у устройства слетает ЕЕПРОМ. Еду разбираться на место. Оказалось, что наладчик не прошил фьюз BODEN. Установил его и как бабка отшептала. С лета ни одного звонка с того объекта небыло, а устойств там порядка четырнадцати. Так что вот так.


точно-точно, без BOD-а ЕЕПРОМ слетал постоянно, пока я не узнал, что есть такая ВЕЩЬ, как BOD
oran-be
Цитата(ArtemKAD @ Dec 19 2007, 16:28) *
По "неопределенным причинам" небыло никогда. У меня все еще катаются в автомобилях тысячи изделий на 2313 и 8515 без каких либо перепрошивок. Была, правда, одна явно бракованная партия 90S8515 (0105), но там флеш не стерался, а просто помирал проц (или начинал делать разное всякое).
Если стерался флеш, то это к схемотехнику и разводчику...

ИМХО: "Всякое разное" проц начинает как раз делать от помех по питанию и сбоев тактового генератора - вот это как раз вопрос к разработчику, а процедура запуска стирания флешь не должна запускаться от случайных помех. У Микрочипов хоть программатор и посложнее, но такой лажи с ними ни разу не происходило.
Serj78
Да, флешь на старых 90s2333 постоянно слетал. это было лет эдак 8 назад smile.gif
Была пара промышленных устройств ( клеевые манипуляторы) которые по весне, обязательно в марте-апреле (!!!) зависали и ничего не делали. Лечилось только перепрошивкой. smile.gif

Работяги шутили-у машины весенний авитаминоз, надо лечить smile.gif
Года через 4 меня это достало я сделал новую версию на 2313.
ArtemKAD
Цитата
ИМХО: "Всякое разное" проц начинает как раз делать от помех по питанию и сбоев тактового генератора - вот это как раз вопрос к разработчику, а процедура запуска стирания флешь не должна запускаться от случайных помех.

Просто "разное всякое" без каких либо помех - на столе. Еще раз - просто была такая одна партия...
Цитата
У Микрочипов хоть программатор и посложнее, но такой лажи с ними ни разу не происходило.

Еще не вечер. Я пару месяцев назад переразводил плату ребятам из Луганска по причине неустойчивой работы того самого PIC-а(16f62x).
ЗЫ. Просто Атмел раньше начал работать с Флеш-памятью и на данный момент через все грабли уже прошел...
oran-be
Цитата(ArtemKAD @ Dec 20 2007, 16:01) *
Еще не вечер. Я пару месяцев назад переразводил плату ребятам из Луганска по причине неустойчивой работы того самого PIC-а(16f62x).
ЗЫ. Просто Атмел раньше начал работать с Флеш-памятью и на данный момент через все грабли уже прошел...

Флеш и внутренний программатор - немного разные вещи. Стирание флеша у Атмелов инициирует внутренний программер, которого у Атмеловских 89-х в помине не было. А у Микрочипсов внутренние программаторы были уже тогда, когда Атмела еще и в помине небыло. В АВРы Атмелы его воткнули, но сделали его несколько кривовато, хорошо хоть исправили, а то нельзя было бы ими еще до сих пор пользоватся нормально. А Микрочипсы уже во второй итерации своих флеш процессоров ужесточили режим входа в режим программирования, хотя и до этого вроде никто не жаловался.
_Sam_
Цитата
Люди работающие на РIC-ах

если бы эти люди работали не только на PIC-ах, или говорили о зависаниях обоснованно, тогда можно было бы послушать. А так, извиняйте, эти высказывания больше похожи на лозунги фанатов. biggrin.gif
ArtemKAD
Цитата
Стирание флеша у Атмелов инициирует внутренний программер, которого у Атмеловских 89-х в помине не было.

Не знаю у кого как и когда стирается флеша, но я такого безобразия с 1998-го не наблюдал. Единственное - у 90S2343 мог не запускаться внутренний RC-генератор, что могло выглядеть как стирание шлешки. Никаких особых защит и подтяжек НИКОГДА не делал. На RESET на старых AT90S ставил супервизор (простейший), на новых не ставлю ни емкостей ни подтяжек. Условия эксплуатации - автомобиль. Объемы - за 40 тыс..


ЗЫ. Кстати, а кто иннициировал у Атмелов часто наблюдавшееся у старых чипов (особенно на 90S1200) стирание сигнатуры чипа wink.gif ? То-же SPI ?!
Ruslan_Shaida
Цитата
И что это дает? Пока ресет не в нуле, то вход в режим программирования просто невозможен. Передо мной лежит плата, на которой разъём программирования находится на расстоянии сантиметров семи от процессора. Никаких "слетаний флэш и ЕЕПРОМ" за несколько лет серийного производсва не замечалось. Супервизора питания на ней нет, только включен BOD.


Все зависит от того, используются ли в проекте силовые устройства. При некоторых условиях по нулевому проводу идут такие помехи, что не помогает ни качественная разводка, ни опторазвязка. В этом случае шаманство с длиной проводов бывает спасает. Вот и решайте невозможен самопроизвольный переход в режим программирования или нет.
ReAl
Цитата(oran-be @ Dec 19 2007, 13:50) *
Это явление имело место лет 5 назад, до появления Меги8 и последующих тинь - самое веселое, что происходило регулярно - это стирание флеша по неопределенным причинам.
Ни-ра-зу.
1998-2000 годы, 90s1200, 90s2313, сотни изделий, "комнатные" условия, правда, но никаких супервизоров не было. Ничего не слетало, даже EEPROM. У 90s1200, правда, EEPROM использовалось только на чтение, содержимое прописывалось программатором, и код записи в EEPROM напрочь отсутствовал, но у 90s2313 EEPROM использовалось на полную катушку.
С 1999 года - 90s4433, 90s8515, поблизости питающее устройство рентгенаппарата, правда, тут уже стояли супервизоры, 1171СП42, после замены 90s4433 на mega8 и 90s8515 на mega8515 супервизоры были выброшены, но и до этого пару сот установок успели сделать.
WHALE
Цитата(ReAl @ Dec 23 2007, 20:12) *
Ни-ра-зу.
1998-2000 годы, 90s1200, 90s2313, сотни изделий, "комнатные" условия, правда, но никаких супервизоров не было. Ничего не слетало, даже EEPROM. У 90s1200, правда, EEPROM использовалось только на чтение, содержимое прописывалось программатором, и код записи в EEPROM напрочь отсутствовал, но у 90s2313 EEPROM использовалось на полную катушку.

у меня другие данные по крайней мере по 90s1200.Девайс-маломощный(10Вт) ТВ передатчик примерно
штук 20 производства МИСИ(Москва).Частый слет EEPROM,как правило,после бросков питания.Условия,правда,не комнатные,неотапливаемые боксы.Но ЕЕPROM также использовался только на чтение,код записи отсутвовал.Мало того,чип был переведен в режим отключения ISP(PIN RESET использовался как порт IO).Вылечил переходом на tiny2313 c переносом всех констант во флеш.
Andreas1
Цитата(ReAl @ Dec 23 2007, 20:12) *
Ни-ра-зу.
1998-2000 годы, 90s1200, 90s2313, сотни изделий, "комнатные" условия, правда, но никаких супервизоров не было. Ничего не слетало, даже EEPROM. У 90s1200, правда, EEPROM использовалось только на чтение, содержимое прописывалось программатором, и код записи в EEPROM напрочь отсутствовал, но у 90s2313 EEPROM использовалось на полную катушку.

Возможно время спада питания при выключении было мало.
Анализировали сбои EEPROM в 2313 при многократных вкл/выкл:
- если нет кода записи - нет сбоев
- защита кода записи проверками снижает вероятность, но не исключает
Ввели 1171СП42, сбои практически исчезли. Выяснилось, что сбой генератора, например касание пальцами, сносит EEPROM примерно с вероятностью 5%. Появились меги, сбои от питания и генератора исчезли. Было пара раз из нескольких десятков тысяч, подозрение на статику, поскольку разряд на ногу иногда сносит по-прежнему, но это уже за гранью допустимого.
ArtemKAD
Цитата
Все зависит от того, используются ли в проекте силовые устройства. При некоторых условиях по нулевому проводу идут такие помехи, что не помогает ни качественная разводка, ни опторазвязка. В этом случае шаманство с длиной проводов бывает спасает.

Э-э-э... Как бы Вам помягче сказать.
Отправьте своего разводчика платы на курсы повышения квалификации лет на 20. Т.к. влияние помех "по нулевому проводу" и "шаманство с длиной проводов" это прямой диагноз - хреновая разводка платы.
Igor26
Полностью согласен c ArtemKAD!!!
Ну не сбоят АВРки!!! Лет пять используем и ноль проблем.
Ruslan_Shaida
Цитата(ArtemKAD @ Dec 24 2007, 19:20) *
Э-э-э... Как бы Вам помягче сказать.
Отправьте своего разводчика платы на курсы повышения квалификации лет на 20. Т.к. влияние помех "по нулевому проводу" и "шаманство с длиной проводов" это прямой диагноз - хреновая разводка платы.

Не могу с Вами согласиться.
Опыт показал, что отсутствие проводов на выводах ISP или подтягивание их потенциала к питанию через достаточно низкоомные 5-10кОм резисторы, очень положительно сказывается на надежность функционирования устройства, особенно в условиях мощных электромагнитных помех, распространяющихся по землям и по эфиру. И дело здесь не в плохой разводке платы.
oran-be
Вообще то все эти слеты флеша уже давным давно пофиксены и известны. В определенных кругах, как оказывается. Слет флеша в АТ90-х происходил в условиях повышенных помех при условии неиспольхования ног программирования. При заземлении этих ног проблема уходила. Конечно, в 85х5 пи этом приходилось жертвовать SPIем. В Мегах внутренний программер доработали и он уже не запускает с фонаря процедуру стирания. ЕЕПРОМ, как известно, и Атмелы про это писали, при пониженном напряжении может сходить с ума при попытке записи в него. Этот глюк остался и ячейку ЕЕПРОМ с адресом 0 опытные шаманы не используют, поскольку если что, то она страдает первой.
ArtemKAD
Цитата
При заземлении этих ног проблема уходила. Конечно, в 85х5 пи этом приходилось жертвовать SPIем.

А мужики-то и не знают 8-) . Особенно когда предусматривалось переписывание ПО по штатным ногам устройства. Штатно питание было 7-20В. А при подаче 5В по штатным ногам можно было писать AVR...

И без каких либо загрузчиков!

Цитата
ЕЕПРОМ, как известно, и Атмелы про это писали, при пониженном напряжении может сходить с ума при попытке записи в него. Этот глюк остался и ячейку ЕЕПРОМ с адресом 0 опытные шаманы не используют, поскольку если что, то она страдает первой.

Этот "глюк" с таким-же успехом присутствует и во внешних EEPROM. Связан он с особенностью этого типа памяти - необходимости высокого напряжения для записи ячеек.
oran-be
Цитата(ArtemKAD @ Dec 25 2007, 19:23) *
А мужики-то и не знают 8-) . Особенно когда предусматривалось переписывание ПО по штатным ногам устройства. Штатно питание было 7-20В. А при подаче 5В по штатным ногам можно было писать AVR...

И без каких либо загрузчиков!

Что-то в этой части текста присутствует какой-то хотический смысл - вся конструкция напоминает чистый оксюморон. Пообстоятельнее разъяснили бы, какие такие 7-20В, куда и откуда 5В?

Цитата(ArtemKAD @ Dec 25 2007, 19:23) *
Этот "глюк" с таким-же успехом присутствует и во внешних EEPROM. Связан он с особенностью этого типа памяти - необходимости высокого напряжения для записи ячеек.

Внешние ЕЕПРОМ обычно имеют внутренний супервайзер, который срабатывает раньше, чем наступают глюки. ЕЕПРОМка в этом случае возвращает NACK, если она И2Цсная, либо ошибку в статусе. С Атмеловскими не работал, ни Микрочиповские работают именно так. И ваще, при недостатке питания, если схеме умножения не разовьет должного напряжения, то записи просто не должно произойти, а не произойти запись по случайному адресу. Этот глюк говорит о том, что не схема умножения сходит с ума, а мультиплексор. Это явно ошибка разработчиков чипа.
SasaVitebsk
Тоже считаю что at90s8515 как минимум имело "нехорошесть" по параметрам надёжности EEPROM и FLASH. Тем не менее мы выпускали серийно изделие где работала связка 8515-1200. Интересно что с 1200 у нас проблем не было никаких вообще. А вот с 8515 происходили эпизодические случаи потери FLASH. После появления м8515 стали их заменять на них. Все проблемы пропали.

Причину выясняли. Если использовать хороший блок питания, то проблемы исчезают. Но дело в том, что мы делали изделие с внешним блоком питания. А обычно использовался китайский. Сделали часть изделий со своим встроенным импульсным блоком питания - ни одного случая вылета не наблюдалось.

И тем не менее если замена at90s8515 на atmega8515 приводит к нормальной работе на том же изделии где ранее наблюдались сбои, то это говорит что глюк всётаки был и он был устранён разработчиками.

Но всё это времена далёкие, теперь почти былинные. Посмотрите на сайт Atmel. Сейчас почти все микрухи выпускаются в исполнении avtomativ. Это говорит за то, что это уже не изделия для поделок.
defunct
Цитата(oran-be @ Dec 25 2007, 15:16) *
При заземлении этих ног проблема уходила. Конечно, в 85х5 пи этом приходилось жертвовать SPIем.

Pull-down 5-10k недостаточно было? Тогда бы и SPI остался.

По сабжу ни разу ничего не слетало просто так. Слет'а EEPROM'а на AVR'ке в глаза не видел, хоть в коде используется и запись и чтение всегда.
флеш слетал, но далеко не по вине Atmel'а, а при таких условиях:
1)
a. Прошит бутлоадер.
b. Используется 5-ти вольтовая внешняя память в которой могут храниться указатели на функции.
c. BOD на 2.7V.

либо

2)
a. Прошит бутлоадер.
b. Выключен BOD, нет супервизора.

Причем если от 1) можно еще как-то защититься - перемычками, двойными-тройными проверками перед записью страницы, задержкой перед стиранием и т.п., то от 2) никакие "финты" в бутлоадере не спасают.

Цитата(SasaVitebsk @ Dec 26 2007, 13:41) *
Причину выясняли. Если использовать хороший блок питания, то проблемы исчезают. Но дело в том, что мы делали изделие с внешним блоком питания. А обычно использовался китайский. Сделали часть изделий со своим встроенным импульсным блоком питания - ни одного случая вылета не наблюдалось.

Слеты скорее всего были связаны с "кратковременными просадками" питания - у МК портится содержимое регистров в т.ч. PC, надо бы его сбрость, а супервизор "зевает", МК прыгает на случайный участок кода, потом когда питание восстанавливается - этот участок кода выполняется и алес.
Dog Pawlowa
Цитата(SasaVitebsk @ Dec 26 2007, 14:41) *
Причину выясняли. Если использовать хороший блок питания, то проблемы исчезают. Но дело в том, что мы делали изделие с внешним блоком питания. А обычно использовался китайский. Сделали часть изделий со своим встроенным импульсным блоком питания - ни одного случая вылета не наблюдалось.

А был промежуточный стабилизатор на плате, или напряжение с внешнего блока питания подавалось на схему без дополнительной стабилизации?
ArtemKAD
Цитата
Что-то в этой части текста присутствует какой-то хотический смысл - вся конструкция напоминает чистый оксюморон. Пообстоятельнее разъяснили бы, какие такие 7-20В, куда и откуда 5В?

Ну если все еще не понятно объясняю чуть иначе.
Плата со стабилизатором 78L05 и 90s8515 на RESET-е которого стоит супервизор на 4,2В. Ноги 90s8515 используемые при программировании (SPI) использовались как два входа и один выход. При этом до срабатывания супервизора (Uп=7-20В) это обычные ноги, а при сработавшем супервизоре (Uп=...-5В) это ноги ISP.
За 4 года выпуска таких плат проблем со случайным слетанием флешки от внешних сигналов на ногах SPI обнаружено небыло.
Serj78
Цитата(oran-be @ Dec 25 2007, 15:16) *
сходить с ума при попытке записи в него. Этот глюк остался и ячейку ЕЕПРОМ с адресом 0 опытные шаманы не используют, поскольку если что, то она страдает первой.



Опытные шаманы не используют несколько ячеек с начала памяти smile.gif
oran-be
Цитата(Serj78 @ Dec 29 2007, 00:27) *
Опытные шаманы не используют несколько ячеек с начала памяти smile.gif

Ну что. Я - падйолкой. Очень Опытные Шаманы, чтущие законы Мерфи, прочитав лет 10 назад еррату на Мегу103, воздержались от применения АВРов до тех пор, пока другие, менее опытные шаманы не перестали рассказывать о аномальных явлениях, происходящих с кристаллами АВР. После этого Очень Опытные Шаманы, чертыхаясь, переписали основную массу драйверов, написанных менее опытными шаманами(некоторые из которых непонятно было, как они ваще работали) после чего в использовании АВРов начали наблюдаться некоторые признаки стабильности и комфорта.
Чего всем и желаю в Новом году. smile.gif
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.