|
Не стартует Atmega644P |
|
|
|
Dec 21 2012, 11:03
|
Местный
  
Группа: Участник
Сообщений: 242
Регистрация: 10-06-08
Из: Хочу в пампасы...
Пользователь №: 38 192

|
Стороннее производство смонтировало нам 30 одинаковых контроллеров на вышеуказанном чипе. То есть техпроцесс, комплектующие - все идентичное. Питание чипа 5В. Ресет на питание через резистор 4К7 и на землю 0.1мкФ керамика. Ага, присутствует еще интерфейс RS485 в виде драйвера ST485. Управляет контроллер несколькими светодиодами. Проще некуда. Проблема - на одной плате из 30 не стартует прошивка. Используется самописный (нашими программистами) бутлоадер и далее переход на собственно исполняемый код. Бутлоадер не использует прерываний и является отдельным проектом, с исполняемым кодом не связан. В этой ситуации логично было предположить, что чип бракован, перегрели при пайке, плата дохлая и тд, то есть отказ железа. На кварце генерация есть. Вариант с неправильными фьюзами исключен. Правда грыз червячок сомнения, тем более что случайно удалось установить, что при некоторой критической скорости нарастания напряжения питания чип все-таки заводится и работает. Примерно так: если питание выросло от нуля до 5В за время, меньшее 2 мС, то чип стартует. Если больше 3-х - гарантированно не стартует. Вроде железячная проблема. Манипулирование с BOD, параметрами кварца и тд. ничего не изменили. А поскольку питается весь модуль от 12В через линейный стабилизатор и фильтры, то скорость нарастания в реальной системе порядка 4 мС, вот он и не стартует. А почему тогда стартует на остальных 29 платах? Но червячок сомнения все грыз... Пришлось написать свой тестовый кусочек кода моргание светодиода, используя другой компилятор (ImageCraft). Так вот этот тестовый код стартует всегда, независимо от скорости нарастания. Даже на 15 миллисекундах! Прихожу к выводу, что железо-то - рабочее! Тут нужно уточнить, что наши программисты используют GCC из состава WinAVR. Путем морального избиения программистов удалось установить, что чип стартует всегда и попадает в бутлоадер, откуда управление всегда передается на main() (установлено по отладочному светодиоду). А там либо работает, либо виснет.
Почему та же прошивка работает без проблем на 29 платах? Почему она не стартует на одной плате если питание нарастает медленно? Почему она таки стартует, если питание нарастает быстро? Кто\что может быть виноват(о): GCC, железо, программист? Есть у кого подобный опыт?
|
|
|
|
|
 |
Ответов
|
Jan 8 2013, 15:13
|
Местный
  
Группа: Участник
Сообщений: 242
Регистрация: 10-06-08
Из: Хочу в пампасы...
Пользователь №: 38 192

|
Докладываю результат: При прошивке очередной "улучшенной версии" программы не заработали уже 5 плат из 9. Начальство в панике и начало чехвостить потенциальных виновных. Тут же причина была найдена, баг исправлен.
На свою голову дал этим прекрасным людям (программистам) возможность общаться с железкой через отдельный последовательный порт (отладочный, никаких иных функций не несущий). Вот у них и был отладочный билд, когда в железку можно было достучаться извне и получить ответ. Во-первых, эти умнейшие создания (ну да, программисты) никак сами себе объяснить не могут, как в релиз попала эта функциональность, предназначенная только для отладки. А во-вторых, использовался вызов функции scanf() для чтения из отладочного порта. Разумеется, никакого кастомного getch() и в помине не было. Вот на этом scanf() происходила перезагрузка с вероятностью, зависящей от скорости нарастания питающего напряжения. Также при более тщательном досмотре нашлись куча неинициализированных переменных. Убрали вызов scanf() - все стало работать правильно.
Вывод: железо полностью рабочее. А за scanf() надо бы железной линейкой по рукам... Вот им и не хватает 64к флеша.
P.S. Как эта фирмварь писалась: супер-пупер программер (Qt, GUI, физик по образованию) пол-года мусолил, так и не написал, съехал (типа, мало времени, очень загружен). Дали приходящему на 1 день в неделю студенту. Тот за месяц написал кое-что кое-как работающее. И вот это "кое-что" зарелизили. А искать ошибки посадили третьего, который впервые (как и первые два) видит АВР. P.P.S. А я предлагал менеджеру, давай мол я напишу фирмварь, но поскольку числюсь электроником, заплатите мне за это премию. Отказался наотрез. Типа, "это шантаж".
Думаете, гирлянды делаем? Неа, медицинское оборудование. Думаете, в Тамбове в сарае? Нифига, центр Европы. Думаете, китайцы на коленках нам платы паяют? Опять мимо, сам Филипс.
Блин, каждый раз дрожат колени когда вхожу в самолет. Одна надежда - а вдруг у Боинга не так, как у нас... А мы ведь людям в глаз 20mW лазером светим... Как жить дальше...
тему, наверное, можно закрыть.
|
|
|
|
|
Jan 8 2013, 17:25
|
практикующий тех. волшебник
    
Группа: Участник
Сообщений: 1 190
Регистрация: 9-09-05
Пользователь №: 8 417

|
Цитата(Kompot @ Jan 8 2013, 19:13)  ...Думаете, гирлянды делаем? Неа, медицинское оборудование. Думаете, в Тамбове в сарае? Нифига, центр Европы. Думаете, китайцы на коленках нам платы паяют? Опять мимо, сам Филипс.... Вы это.... уважаемый... не пугайте так. я грешным делом думал про россию описалово идёт. в ней родёмой на энтузиазме, упорстве и совести конечных исполнителей частенько всё держится. софтверные конторы на этом и выезжают частенько. да уж... там у вас не програмисты вообще, чисто по моим меркам. то что описали - это студенческие потуги (я на полном серьёзе). рассмотрите фриланс либо удалённый филиал - толку больше будет, при тех же(либо меньших) затратах. да и на этом форуме любой толковый разработчик сделает вам софт на должном уровне при должном финансировании. экономия на спичках у вас там... и менагер ничего не мыслит в производстве, если элементарный контроль на производстве не может обеспечить. да уж... если желание будет - организовать филиал, обращайтесь - это моё
Сообщение отредактировал kolobok0 - Jan 8 2013, 17:31
|
|
|
|
Сообщений в этой теме
Kompot Не стартует Atmega644P Dec 21 2012, 11:03 V.K Цитата(Kompot @ Dec 21 2012, 16:03) Есть ... Dec 21 2012, 11:48 stfrd А найти участок, где происходит залип? Может дело ... Dec 21 2012, 11:52 Kompot Цитата(stfrd @ Dec 21 2012, 15:52) А найт... Dec 21 2012, 13:46  adnega Цитата(Kompot @ Dec 21 2012, 17:46) Я бол... Dec 21 2012, 13:50   Kompot Цитата(adnega @ Dec 21 2012, 16:50) Неини... Dec 21 2012, 14:58    eug Однако была подобная тема с контроллерами AT91SAM7... Dec 21 2012, 15:15    ILYAUL Цитата(Kompot @ Dec 21 2012, 18:58) Спаси... Dec 21 2012, 15:24 ILYAUL 64К на управление светодиодами - кон. гениально... Dec 21 2012, 11:57 zombi Поменяйте процессоры с этой и любой из 29-ти рабоч... Dec 21 2012, 13:49 stfrd ЦитатаТак собственно весь вопрос в том, можно ли т... Dec 21 2012, 18:24 ILYAUL ЦитатаТак собственно весь вопрос в том, можно ли т... Dec 21 2012, 19:04
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|