Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Cтранные вещи с AT91SAM7S256
Форум разработчиков электроники ELECTRONIX.ru > Микроконтроллеры (MCs) > ARM
sloth
Наблюдаю очень странное явление. Есть 3 совершенно одинаковые платы (Кроме первой), в них залит один и тот же бинарник, устройство читает SD карточку и держит связь по UART с другим устройством. Так вот, теперь о каждой:
1. Отличие от остальных: стоит чип ревизии А (на 2 и 3 - ревизия B ). Работает идеально, прошла все стресс тесты.
2. Работает нормально, но при сильных помехах по питанию виснет, но перезагружается ватчдогом.
3. Запускается через раз, причем всегда по-разному, работает 30 секунд, потом отваливается UART, но по моргающему светодиоду видно, что проц не завис.

Сразу скажу что 2 и 3 паялись не очень аккуратно и могли перегреться, хотя в своей практике никогда такого не встречал.
Питание реализовано на LM2734YMK (импульсник), на выходе тантал на 470 мкФ, остальные емкости в точном соответствии с даташитом.
Надо спаять еще 20 устройств, лежит упаковка чипов ревизии B. Что делать - не знаю. Слышал что ревизия B довольно проблемная в плане питания. В принципе второй девайс более менее устраивает, но вот что с 3 - непонятно.
Может китайские подделки? Кто-нибудь сталкивался?
Это мой первый проект на арм, уже сто раз пожалел что выбрал этот проц.
aaarrr
Цитата(sloth @ Dec 12 2009, 03:35) *
Питание реализовано на LM2734YMK (импульсник), на выходе тантал на 470 мкФ, остальные емкости в точном соответствии с даташитом.

А скорость нарастания питания ядра соответствует даташиту?

Цитата(sloth @ Dec 12 2009, 03:35) *
Может китайские подделки? Кто-нибудь сталкивался?

Не думаю, что виноваты процессоры.
zhevak
Цитата(sloth @ Dec 12 2009, 05:35) *
... уже сто раз пожалел что выбрал этот проц.

Первое падение с велика? Жалеть не надо! Если не сдадитесь, то научитесь отжигать и великах, и на Харлейях, и на <вставить по желанию>. Главное не ныть и не сдавваться.

Дросселек по питанию 10-100 мкГ после тантала не пробовали ставить? Шины земли и питалова у Вас разведены по "науке" или как бог на душу поклал? Ноги питания проца обвешены близко расположенной керамикой? На выходе +1.8В тантал + керамика? Есть неиспользуемые лапы проца, которые сконфигурированы на вход и оставлены ввоздухе?

Извините за дурацкие вопросы. Гадать, что там у Вас на плате, очень сложно.
sloth
Цитата(aaarrr @ Dec 12 2009, 06:07) *
А скорость нарастания питания ядра соответствует даташиту?

Если бы я мог это проверить. К сожалению, нечем.

Цитата(zhevak @ Dec 12 2009, 11:37) *
Первое падение с велика? Жалеть не надо! Если не сдадитесь, то научитесь отжигать и великах, и на Харлейях, и на <вставить по желанию>. Главное не ныть и не сдавваться.

Дросселек по питанию 10-100 мкГ после тантала не пробовали ставить? Шины земли и питалова у Вас разведены по "науке" или как бог на душу поклал? Ноги питания проца обвешены близко расположенной керамикой? На выходе +1.8В тантал + керамика? Есть неиспользуемые лапы проца, которые сконфигурированы на вход и оставлены ввоздухе?

Падение далеко не первое, изучаю в одного, без каких либо учителей и консультантов, уже более 2 месяцев, так что на собственной шкуре испытал много нюансов, уже не удивляюсь ничему smile.gif.
На выход дополнительно 1.8 повешал тантал на 10 мкФ - чип стал запускаться 1 раз из 10, но UART все также отваливался через некоторое время - убрал. Дроссель на 15 мкГ поставил в разрыв - с запуском проблем не стало, но UART все также отваливается. Шины земли и питания старался развести как считаю нужным (вроде это мнение должно совпадать с научным). Тантал по питанию сделал общей точкой - от него отдельными дорожками на флешку и на чип. Керамику старался ставить максимально ближе к чипу. Вся керамика X7R. В воздухе остались только TDO, NRST, Erase, TST (в даташите обещано что есть внутренние резисторы), все остальные ноги либо выходы, либо подтянуты резисторами.
Думаю, что в плате будет проблематично разобраться, поэтому выкладываю ее кусок.
Может быть все же стоит достать чипы ревизии А?
zhevak
Цитата(sloth @ Dec 12 2009, 15:24) *
Думаю, что в плате будет проблематично разобраться, поэтому выкладываю ее кусок.

Ну, по плате вроде как вопросов нет. Единственное, что я обычно под своими тараканами (AVR, MSP430, LPC) всегда делаю, -- так это полигон земли. А так, плата как плата.

UART отваливается. А как он отваливается? Может прерывание где-нибудь теряете или обрабатываете не верно? Ведь то обстоятельство, что две платы работают, -- это еще не критерий, что косяк только на третьей плате. Где гарантия, что при определенных условиях (изменение температуры, например) на первых двух платах не вылезут те же косяки? (Только это ведь будет уже не на Вашем столе, а на объекто заказчика.) Как Ваш код отреагирует на прием "битого" пакета (или байта)?

Да, и забыл сказать! Обязательно проверьте метализацию переходов. У меня в сериях такое случается 2-3 раза на 1000 изделий (изготовляю в "Резоните"). И займите у кого-нибудь бациллоскоп на вечер, многие вопросы сразу отпадут.
sloth
Цитата(zhevak @ Dec 12 2009, 15:42) *
UART отваливается. А как он отваливается?

Пошурудю код и почитаю еррату еще, может действительно, что-то накопаю. С одним прерыванием была проблема, всроде как всё уже хорошо причесал. Кстати, платы тоже делал в резоните, обязательно пропаяю переходы.

Цитата(zhevak @ Dec 12 2009, 15:42) *
И займите у кого-нибудь бациллоскоп на вечер, многие вопросы сразу отпадут.

Уже несколько дней думаю у кого - старыми отечественными тут особо нечего ловить, а серьезной игрушки что-то ни у кого нет.
В общем, спасибо за помощь, буду дальше копать, отпишусь о достижениях.
aaarrr
Цитата(sloth @ Dec 12 2009, 13:24) *
Если бы я мог это проверить. К сожалению, нечем.

Цитата(sloth @ Dec 12 2009, 14:15) *
Уже несколько дней думаю у кого - старыми отечественными тут особо нечего ловить, а серьезной игрушки что-то ни у кого нет.

Скорость нарастания можно проверить практически любым. А судя по описанию, она легко может не вписаться в 6V/ms.

Цитата(sloth @ Dec 12 2009, 13:24) *
Может быть все же стоит достать чипы ревизии А?

Не стоит: выборку из двух устройств с разным набором глюков никак не назовешь репрезентативной.
sloth
Цитата(aaarrr @ Dec 12 2009, 17:22) *
Скорость нарастания можно проверить практически любым. А судя по описанию, она легко может не вписаться в 6V/ms.

Нашел где взять игрушку на понедельник. Буду смотреть. Но, если скорость нарастания будет ниже, чип просто не запуститься, но у меня то основная проблем в том что он от малейшей помехи по питанию (12 В) виснет.
Сегодня тестировал варианты 1 и 2 на объекте - 1 работает идеально, как и в лабораторных условиях, второй же оказался значительно хуже чем на столе - перезагружается по ватчдогу очень часто.
Кстати, забыл сказать, что для питания ядра использую встроенный в чип стабилизатор.
Сергей Борщ
Цитата(sloth)
Сразу скажу что 2 и 3 паялись не очень аккуратно
Может у них просто непропаяна какая-либо из ног питания или земли? Пропаяйте еще раз и попробуйте пошевелить иголкой вывод около площадки. Непропаянные шевелятся, видно глазами.
sloth
Собрал еще один дивайс, работает точно также как второй, надо третий промыть и пропаять хорошенько. Надеюсь что осциллограф покажет где собака зарыта.
Aquatik
PLL используете?... Если да посмотрите цепь фильтра, что там происходит... smile3046.gif
zhevak
Еще одна версия.

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

unsure.gif Опа?
dch
Обычный способ бороться с софтом добится неправильной работы, не на конечном приложении а на тесте, упростите софт, выкинте функционал легче станет проверять софт.
sloth
Цитата(zhevak @ Dec 14 2009, 03:02) *
Вы ведь помните, что функции стандартной библиотеки (и др.) не реентерабельны?


Можно поподробнее, пожалуйста, не совсем понял о чем речь (может и не знал этого).

Цитата(dch @ Dec 14 2009, 07:08) *
Обычный способ бороться с софтом добится неправильной работы, не на конечном приложении а на тесте, упростите софт, выкинте функционал легче станет проверять софт.

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

Потыкался осциллографом - ничего страшного не увидел, питание достаточно чистое, никаких генераций нет, скорость нарастания напряжения ядра 18 вольт/мс, напряжения 3,3 В - 3 В/мс. Может быть разводка кривая, грешу пока что больше всего на это.
sloth
Создается впечатление что проблема действительно исключительно софтварная, видимо не зря гуру электроники (владельцы осцила) меня не подпускали к нему, говоря что аппаратная часть в порядке и нечего там проверять. Отпишусь о ходе решения.

upd: Итак, после того как я позамыкал ноги кварца, вывод PLL на землю и это не повесило проц (только остановило его работу, после убирания перемычки он продолжал дальше работать), зашумил питание ядра - тоже ничего не произошло, начал ковырять все выводы, в итоге, когда дергаешь вывод, на котором висит IRQ1 - проц виснет. Заменил это прерывание на прерывание PIO по изменению уровня - все заработало. Всем большущее спасибо за помощь, вы меня очень выручили.

PS: Все таки хотелось бы поподробнее о функциях в обработчике прерывания.
Alexashka
Цитата(sloth @ Dec 14 2009, 17:04) *
PS: Все таки хотелось бы поподробнее о функциях в обработчике прерывания.

Обычно все функции не реентрантные (т.е не поддерживают повторный вход в нее), поэтому такие функции нельзя использовать в прерываниях и в основном теле программы одновременно.
Если функция начнет выполнятся в основном теле программы, а затем произойдет переход на подпрограмму прерывания и там снова произойдет ее вызов, то последствия этого будут непредсказуемы- обычно сбой программы.
aaarrr
Цитата(Alexashka @ Dec 17 2009, 23:42) *
Обычно все функции не реентрантные

Обычно все с точностью до наоборот - есть лишь небольшой набор функций, являющихся таковыми. Но в любом случае лучше обратиться к документации на конкретный компилятор.
Alexashka
Цитата(aaarrr @ Dec 18 2009, 00:01) *
Обычно все с точностью до наоборот - есть лишь небольшой набор функций, являющихся таковыми. Но в любом случае лучше обратиться к документации на конкретный компилятор.

Ну для DLIB библиотеки да, это так, в основном функции реентрантны. Но я например не пользую DLIB библиотеки, поскольку это замедляет программу и влечет дополнительный расход оперативки.
Тем более если чел в этом не разбирается лучше не рисковать а повыкидывать все библиотечные функции из прерываний smile.gif
sloth
Спасибо за доступные объяснения, все прекрасно понял.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.