Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Не запускается Atmega162
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > AVR
Panych
День добрый!
Искал по форуму - не нашел подобных симптомов.
1-2 раза из 10 включений Atmega162 не запускается - программа висит.
Генерация на кварце видна всегда.
Частота 16Мгц. Питание подается довольно крутым фронтом.
Reset не помогает. FUSE JTAGEN снят.
Причем проявляется только на некоторых экземплярах - пробовали менять компоненты между платами.
Стабильно помогает, если после подачи питания закоротить на короткое время питающие +5В (LDO источник позволяет) - контроллер после этого стартует.

Была мысль, что сказывается плавное нарастание питания. Поставил по питанию схему, включающую линейный стабилизатор только при входном напряжении более 4,6В. Задержка супервизора гарантирует, что питание линейного стабилизатора при его включении будет однозначно выше +5В. Но, до этого на его выходе есть 1,2В. Результат нулевой.
В любом случае, контроллер так себя вести не должен.

Может, кто сталкивался? У меня все варианты, кроме бракованной партии, закончились. Брали в Терре - тоже не хочется плохого думать sm.gif.
kovigor
Цитата(Panych @ Sep 26 2013, 11:46) *
Может, кто сталкивался?

Если схема не секретная, то всю ее покажите, а не только этот кусочек. Хотя бы фрагмент с МК обнародуйте. И плату (разводку) тоже покажите ...
Panych
Цитата(kovigor @ Sep 26 2013, 12:59) *
Если схема не секретная, то всю ее покажите, а не только этот кусочек. Хотя бы фрагмент с МК обнародуйте. И плату (разводку) тоже покажите ...

Понимаю ход мыслей. Файлы целиком не хочется выкладывать. Для представления - куски прикрепил. Конденсаторы (в схеме включения резонатора) находятся на слое Bottom, который является практически сплошной заливкой землей (там еще блокировочные конденсаторы только).
kovigor
Цитата(Panych @ Sep 26 2013, 12:24) *
Для представления - куски прикрепил.

Вроде должно работать. Залейте в МК простейшую программу из пары строк, мигающую лампочкой. Тоже такой эффект будет ? Ну и мудреная схема питания наводит на размышления. Поставьте обычную 7805, с керамическим конденсатором в 1 мкФ на выходе, напаянным прямо на ножки 7805 ...
Сергей Борщ
Тоже склоняюсь к мысле о проблеме в софте.
QUOTE (kovigor @ Sep 26 2013, 11:57) *
Залейте в МК простейшую программу из пары строк, мигающую лампочкой.
И проверьте фуз BOOTRST. Коллега наблюдал подобные симптомы запуская прошивку без загрузчика с прошитым этим битом.
Panych
Цитата(kovigor @ Sep 26 2013, 13:57) *
Вроде должно работать. Залейте в МК простейшую программу из пары строк, мигающую лампочкой. Тоже такой эффект будет ? Ну и мудреная схема питания наводит на размышления. Поставьте обычную 7805, с керамическим конденсатором в 1 мкФ на выходе, напаянным прямо на ножки 7805 ...

С 7805 и начинали. Керамика была вплотную на плате.

Цитата(Сергей Борщ @ Sep 26 2013, 14:29) *
Тоже склоняюсь к мысли о проблеме в софте.И проверьте фуз BOOTRST. Коллега наблюдал подобные симптомы запуская прошивку без загрузчика с прошитым этим битом.

На скрине BOOTRST сброшен.

Прошили. Код вроде как проще не бывает:
Код
while (1)
      {
       delay_ms(300);
       SETBIT( PORTA,5 );
       delay_ms(300);
       CLEARBIT( PORTA,5 );
      }


Тот же эффект - первое же включение подвесило процессор. Reset не помогает, КЗ по питанию вывело из комы.

p.s.
Коллега пользуется подменами для своего удобства sm.gif
Код
#define SETBIT(ADDRESS,BIT) (ADDRESS |= (1<<BIT))
#define CLEARBIT(ADDRESS,BIT) (ADDRESS &= ~(1<<BIT))
#define CHECKBIT(ADDRESS,BIT) (ADDRESS & (1<<BIT))
kovigor
Цитата(Panych @ Sep 26 2013, 13:50) *
Тот же эффект - первое же включение подвесило процессор. Reset не помогает, КЗ по питанию вывело из комы.

Аварийного потребления при зависшем МК не наблюдается ?
БП, питающий ваш линейный стабилизатор, часом, не импульсный и самодельный ?
Если же БП трансформаторный, то задемпфирована ли RC - цепочкой его первичка ?
При выключенном питании, нет ли паразитной подпитки МК через выводы GPIO ?
Panych
Цитата(kovigor @ Sep 26 2013, 15:01) *
1 - Аварийного потребления при зависшем МК не наблюдается ?
2 - БП, питающий ваш линейный стабилизатор, часом, не импульсный и самодельный ?
3 - Если же БП трансформаторный, то задемпфирована ли RC - цепочкой его первичка ?
4 - При выключенном питании, нет ли паразитной подпитки МК через выводы GPIO ?

1 - нет, потребление как у не работающего МК.
2 - блок питания - импульсный
4 - питание отключается у всего, подпитки нет - проверено осциллографом.

Прикреплены осциллограммы питания:
"15V_Запустился.jpg" и "15V_Не запустился.jpg" - входное у линейного стабилизатора.
"5V.jpg" - его выходное. Вначале видны 1.2V во время задержки супервизора, управляющего линейным стабилизатором.
Santy
На мой взгляд правельней было бы сделать под микроконтроллером полигон земли в top и под ним же полигон + питания в bottom.
Заставляет задуматься почему цена на один и тот же микроконтроллер у одних и тех же поставщиков может отличаться.
Panych
Цитата(Santy @ Sep 26 2013, 15:56) *
На мой взгляд правельней было бы сделать под микроконтроллером полигон земли в top и под ним же полигон + питания в bottom.

Да, у меня наоборот - земля в Bottom, питание - в Top. Но они же по переменной составляющей в КЗ - блокировочных там хватает.
Делаю всё примерно однотипно, много лет. Первый раз с подобным сталкиваюсь.
fractcon
У нас были подобные симптомы, правда на другом процессоре. Это неподключенные выводы JTAG. На них наводится помеха, после чего микросхема входит в режим JTAG отладки и выводится оттуда только полным снятием питания. RESET тут не поможет.
Возьмите проволоку, закоротите все выводы JTAG между собой и через резистор 3К на питание. И зависать перестанет.
И да, пожалуйста sm.gif
RabidRabbit
Может попробовать включить BOD? На 4.3 вольта, к примеру...
Panych
Цитата(fractcon @ Sep 26 2013, 16:25) *
закоротите все выводы JTAG между собой и через резистор 3К на питание.

Спасибо! sm.gif
Стало лучше, теперь зависает только 2-3 раза из 20 запусков.
Nestorovich
Цитата(fractcon @ Sep 26 2013, 15:25) *
У нас были подобные симптомы, правда на другом процессоре. Это неподключенные выводы JTAG. На них наводится помеха, после чего микросхема входит в режим JTAG отладки и выводится оттуда только полным снятием питания. RESET тут не поможет.
Возьмите проволоку, закоротите все выводы JTAG между собой и через резистор 3К на питание. И зависать перестанет.
И да, пожалуйста sm.gif

У нас тоже было - болтался неподключенный SCK - подтянули к земле и все прошло
fractcon
Цитата(Panych @ Sep 26 2013, 16:55) *
Спасибо! sm.gif
Стало лучше, теперь зависает только 2-3 раза из 20 запусков.


Жесть какая.
Предлагаю конденсаторы 0.1uF, 0402 типоразмер, запаяйте на все выводы VCC прямо на корпусе микропроцессора.
Точнее прямо на выводы VCC, GND, насколько я понял в трех местах. Прямо на выводы микросхемы.
Взять можно из старой мобилы, ну или из айфона, если уж совсем неоткуда sm.gif
controller_m30
У вас на принципиальной схеме виден кусочек ADC, и подключенный к ножке выбора #CS_ADC пин контроллера #SS (мне так кажется))), подтянутый резистором к земле. С этим пином когда он =0 тоже траблы бывают.
Если этот пин контроллера настроен на ввод, и =0 - то SPI переводится в Slave, даже если он был настроен как Master. Программа может вполне глючить: не проходит инициализация SPI в режим Master, или не проходят транзакции по SPI (потому что оно само перевелось в Slave).
А если пин #SS настроен на вывод, и =0 - то тоже как-то неустойчиво работает (хотя в даташите пишут что если этот пин выводной - то он не влияет на SPI).
Я однажды наступил на такие грабли, и по возможности оставляю этот пин: не задействованным, переведенным на вывод, и =1.
http://www.atmel.com/Images/Atmel-2513-8-b...2_Datasheet.pdf на странице 162 расписывается про этот пин.

Попробуйте (если считаете возможным такой вариант):
1. Проводить инициализацию ножки #SS на вывод и =1 ещё ДО начала инициализации SPI.
2. Перекинуть #CS_ADC на другую свободную ножку контроллера (с соответствующим изменением в программе).
3. Временно заменить аппаратный SPI на программный.
4. Или поменять резистор подтягивающий SS# к земле - на подтягивающий к +питания.

PS. блин... просмотрел что загружали простую программу... но может и это к месту будет...
Santy
Как вариант, попробывать снизить частоту кварца.
demiurg_spb
Цитата(Santy @ Sep 26 2013, 21:14) *
Как вариант, попробывать снизить частоту кварца.
Давненько тоже боролся с подобной ситуацией и именно на mega162. Выход был найден такой: стартовать со включенным ckdiv=8, инициализировать периферию после небольшой паузы и менять предделитель на 1.
Panych
Цитата(RabidRabbit @ Sep 26 2013, 16:48) *
Может попробовать включить BOD? На 4.3 вольта, к примеру...

Цитата(Nestorovich @ Sep 26 2013, 17:22) *
У нас тоже было - болтался неподключенный SCK - подтянули к земле и все прошло

Цитата(fractcon @ Sep 26 2013, 17:48) *
Жесть какая.
Предлагаю конденсаторы 0.1uF, 0402 типоразмер, запаяйте на все выводы VCC прямо на корпусе микропроцессора.
Точнее прямо на выводы VCC, GND, насколько я понял в трех местах. Прямо на выводы микросхемы.
Взять можно из старой мобилы, ну или из айфона, если уж совсем неоткуда sm.gif

Проделали. Не помогло.

Цитата(controller_m30 @ Sep 26 2013, 19:03) *

Спасибо, буду иметь в виду. Но тут программа вообще не стартует. sad.gif

Цитата(Santy @ Sep 26 2013, 21:14) *
Как вариант, попробовать снизить частоту кварца.

Цитата(demiurg_spb @ Sep 26 2013, 21:42) *
Давненько тоже боролся с подобной ситуацией и именно на mega162. Выход был найден такой: стартовать со включенным ckdiv=8, инициализировать периферию после небольшой паузы и менять предделитель на 1.

Да, те же мысли по поводу частоты, но не дошел до этого.

Дело всё таки в питании и конкретном экземпляре. Потому как две таких же платы при всех тех же условиях работают нормально. А при питании +15В от лабораторного источника и глючный запускается 20 из 20.

Подключили глючный блок к другому блоку системы. Там стоит несколько иная нагрузка на источник питания (меньше емкостная составляющая) и у него на выходе напряжение имеет осциллограмму (см. ниже).
Как видно, тут нормальный рост напряжения идет почти до 5В.
Блок продолжил глючить.
Тогда из схемы убрали VT1 - пусть линейный стабилизатор сам справляется.
Результат - 20 запусков из 20 включений.

Таким образом, глюки при нарастании напряжения не скачкообразном могут наблюдаться у некоторых экземпляров.

Показалось, что полочка в 1.2В после подачи питания и до истечения времени задержки супервизора DA3 недопустима - она так же приводит к вероятным глюкам.
Но ведь при работе от лабораторных +15В всё работает в 20 из 20...

Надо ставить стабилизатор со входом "Enable", любо ключ по питанию, скорее всего по +15В.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.