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

Выглядит это так: пишу программу, зашиваю (avreal + byteblaster) -- не работает, или работают только самые примитивные вещи (счет на порту со светодиодами с busy-loop задержкой). Попытка отлаживать это дело (расставить мигания светодиодом в нужных участках программы) приводит к плавающим результатам, а потом где-то на десятой-двадцатой прошивке камень скукоживается, т.е. перестает обнаруживаться avreal'ом совсем. При этом могут происходить всякие странности, вроде мигания светодиодами в момент прошивки (хотя они висят на порту C, а SPI интерфейс на порту cool.gif. Мигание происходит не всегда, а только если камню "особенно плохо" (от чего это зависит я так и не понял). Если дать плате отлежаться примерно сутки, функциональность частично восстанавливается, пока опять не прошьешь раз пять, и тогда -- здравствуйте глюки!

Байтбластер -- боевой и проверенный, не один камень с ним зашил, кабели короткие, резисторы где положено, звонов не было. Разве что может его космическими лучами ударило и он заглючил -- посмотрю еще раз сегодня.

Плату -- мыл.

Чип -- не перегревал.

То, что упомянутый выше порт C питается от AVCC -- знаю, питание разведено как положено.

Блокировочные конденсаторы -- есть.

Подтяжка #RST к питанию -- есть.

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

Начинаю грешить на чипдип, где камни покупались (покупались в последние три-четыре месяца где-то). Купленная пару лет назад tiny12 так и не нашедшая применения, и валяющаяся на столе в скотских условиях и лапаемая пальцами со статикой шьется и читается тем же бластером на ура (раз двести по-моему уже зашил).

Ах да, еще одно: к глюкам приводит даже не то что попытка зашить чип, а просто попытка раз 10 почитать байтбластером конфигурацию и идентифицировать чип (то, что avreal делает по умолчанию, если не указать иного).

Что еще можно проверить?
smac
Цитата(slanted @ Jul 15 2008, 14:05) *
Пытаюсь тут соорудить одну игрушечную железяку (пара кнопок, светодиоды, мелкий матюгальничек) -- наступаю на какие-то невообразимые совершенно грабли. Если коротко: в попытках отладить это барахло дохнет уже четвертый камень (и вторая ревизия платы). Пробовал tiny2313V и мегу8.
....
Что еще можно проверить?

Действительно странная ситуация, я бы в этом случае осциллоскопом посмотрел на ресете и питании, может провалы или вспелески где-нибудь. Может быть еще конденсаторы (особливо электролиты) между землей и плюсом посмотреть.
slanted
Цитата(smac @ Jul 15 2008, 14:34) *
Действительно странная ситуация, я бы в этом случае осциллоскопом посмотрел на ресете и питании, может провалы или вспелески где-нибудь. Может быть еще конденсаторы (особливо электролиты) между землей и плюсом посмотреть.


Меня больше всего удивляет "отлежка" камней. Через сутки он оживает, дает себя почитать пару раз и уходит в нирвану опять.

Может его в морозилку сунуть? Или наоборот, паяльником погреть?
smac
Цитата(slanted @ Jul 15 2008, 15:05) *
Меня больше всего удивляет "отлежка" камней. Через сутки он оживает, дает себя почитать пару раз и уходит в нирвану опять.

Может его в морозилку сунуть? Или наоборот, паяльником погреть?

Мне все-таки кажется, что проблема не в камне. Если это возможно, то попробуйте сделать для камня простенькую макетку (ну например порты на "расческу") и помигать диодом, чтобы точно определить в камне или плате проблема.
Вообще ощущение такое, что либо где-то плохой контакт (непропай, микротрещина и т. п.) либо наоборот утечка, только не "чистое" к. з. Ну например грязь или остатки флюса между землей и ресетом.
Огурцов
Как-то огреб такой глюк - шил мегу 8, как мегу 128. Тестовая прога запускалась только при совершенно определенном коде, но работала каким-то неожиданным образом. Плюсом напряжение на пинах было ни то, ни се. Иначе выглядела мертвой.
Serjio
А от чего питается плата (проц. соответственно)? Пульсаций питания там не может быть?
Tiny
Я бы поставил МК на отдельную панельку, повесил бы пару светодиодов для контроля работы и питание другое, от батарейки например и понаблюдал бы результат. В общем кроме МК все взял бы другое. Без всякой платы. Там много и не будет, как я понял.
У больших МК бывали глюки с портами еще из-за включенного JTAG, а Tiny вроде это не касаетя.
_Pasha
Цитата(slanted @ Jul 15 2008, 14:05) *
дохнет уже четвертый камень (и вторая ревизия платы). Пробовал tiny2313V и мегу8.


Что значит дохнут? А где свидетельство о смерти? biggrin.gif
Телепатируйте схему,плату, информации - нуль.
777777
Цитата(slanted @ Jul 15 2008, 14:05) *
Пытаюсь тут соорудить одну игрушечную железяку (пара кнопок, светодиоды, мелкий матюгальничек) -- наступаю на какие-то невообразимые совершенно грабли. Если коротко: в попытках отладить это барахло дохнет уже четвертый камень (и вторая ревизия платы). Пробовал tiny2313V и мегу8. <...>


Ты думаешь по этому описанию можно продиагностировать неисправность? Схему давай!

ЗЫ. Может и у тебя светодиоды без резисторов? smile.gif
Ivan A-R
Одна тинька у меня сдохла подобным образом. Правда не V а полноскоростная. Но остальные из той же партии чувствуют себя отлично.

mega8L у меня была только одна, но до сих пор живёт на макетке в добром здравии. mega88 и mega168 не дохли никогда.
delamoure
Может, всё-же длинный кабель от программатора? Симптомы больно похожие...
slanted
Цитата(smac @ Jul 15 2008, 17:34) *
Мне все-таки кажется, что проблема не в камне. Если это возможно, то попробуйте сделать для камня простенькую макетку (ну например порты на "расческу") и помигать диодом, чтобы точно определить в камне или плате проблема.
Вообще ощущение такое, что либо где-то плохой контакт (непропай, микротрещина и т. п.) либо наоборот утечка, только не "чистое" к. з. Ну например грязь или остатки флюса между землей и ресетом.


Блин, там вся плата из себя подобную макетку и представляет :-). Ее задача -- посчитать количество импульсов от геркона за период времени, и зажечь соответствующее количество светодиодов. Я делал железки и посложнее, запускались, что характерно, с первого раза. А вот тут -- на ровном месте грабли.

Короче, я потыкал в неё осциллографом. Сигналы везде нормальные, кроме ресета. При питании +5В, на ресете что-то около трех с половиной с какой-то помехой. С частотой в пять-десять герц ресет кратковременно подпрыгивает до +5, с этой же частотой помаргивают светодиоды (там в самом начале программа действительно мигает лампочками, типа, все нормально). Подтяжка ресета кверху -- десять килоом вроде-бы.

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



Цитата(Огурцов @ Jul 15 2008, 17:58) *
Как-то огреб такой глюк - шил мегу 8, как мегу 128. Тестовая прога запускалась только при совершенно определенном коде, но работала каким-то неожиданным образом. Плюсом напряжение на пинах было ни то, ни се. Иначе выглядела мертвой.


Нет, код правильный. Напряжение на ресете, правда, плавает. На остальных пинах вроде в норме.

Цитата(Serjio @ Jul 15 2008, 18:33) *
А от чего питается плата (проц. соответственно)? Пульсаций питания там не может быть?


Сетевой блок питания. Посмотрел осциллографом -- питание ровное, как стол.
ArtemKAD
А как там на счет WDT ? В программе сбрасываешь?
slanted
Цитата(Tiny @ Jul 15 2008, 19:51) *
У больших МК бывали глюки с портами еще из-за включенного JTAG, а Tiny вроде это не касаетя.

У восьмой меги тоже нет JTAG'а.
ArtemKAD
Цитата
Что странно -- байтбластер не может при чтении утянуть ресет книзу, дотягивает только где-то вольт до полутора. На остальных камнях утягивает нормально.

Убери внешнюю подтяжку.

И проверь цепь GND.
slanted
Цитата(ArtemKAD @ Jul 17 2008, 13:05) *
А как там на счет WDT ? В программе сбрасываешь?

Оно по умолчанию выключено. Я его не включал. Впрочем, спасибо, проверю.

Цитата(delamoure @ Jul 17 2008, 12:43) *
Может, всё-же длинный кабель от программатора? Симптомы больно похожие...


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

Цитата(ArtemKAD @ Jul 17 2008, 13:11) *
Убери внешнюю подтяжку.

unsure.gif
А что с ней может быть не так?

Цитата
И проверь цепь GND.


В смысле? Цепь -- на месте.
delamoure
Народ задумался...
Попробуйте теперь упорядочить информацию, что вы нам предоставили.
Мне вот уже непонятно с каким чипом вы конкретно работаете сейчас (tiny, mega); про замыкание reset на питание пинцетом непонятно тоже (при подключенном программаторе что-ли?).
Если через подтягивающий к VCC резистор программатор не может посадить вывод на землю, может стоит обратить внимание на то, что reset имеет и альтернативную функцию порта? При той "хаотичности" во время прошивок он мог и сконфигурироваться как линия IO.
slanted
Цитата(delamoure @ Jul 17 2008, 13:46) *
Народ задумался...
Попробуйте теперь упорядочить информацию, что вы нам предоставили.
Мне вот уже непонятно с каким чипом вы конкретно работаете сейчас (tiny, mega);

mega

Цитата
про замыкание reset на питание пинцетом непонятно тоже (при подключенном программаторе что-ли?).

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

Цитата
Если через подтягивающий к VCC резистор программатор не может посадить вывод на землю, может стоит обратить внимание на то, что reset имеет и альтернативную функцию порта? При той "хаотичности" во время прошивок он мог и сконфигурироваться как линия IO.

Ну через раз контроллер таки читается.

Ладно, я еще попробую откопать какую-нибудь из старых железок, чтобы быть точно уверенным, что это не программатор. Завтра вернусь с результатами.
777777
Цитата(slanted @ Jul 17 2008, 13:04) *
Короче, я потыкал в неё осциллографом. Сигналы везде нормальные, кроме ресета. При питании +5В, на ресете что-то около трех с половиной с какой-то помехой. С частотой в пять-десять герц ресет кратковременно подпрыгивает до +5, с этой же частотой помаргивают светодиоды (там в самом начале программа действительно мигает лампочками, типа, все нормально). Подтяжка ресета кверху -- десять килоом вроде-бы.


Ну а как насчет схемы все-таки? Или она секретная?

А насчет ресета - если там нет банального замыкания с одним из соседних выводов, то объяснение только одно - ты запрограммировал ресет как линию порта и проц туда что-то иногда выдает.
Igor26
Цитата
При питании +5В, на ресете что-то около трех с половиной с какой-то помехой.

Было такое один раз с Мегой128. Заменил - всё стало нормально.
Цитата
запрограммировал ресет как линию порта

А почему тогда напряжение не логических уровней? А почему тогда программатор кристалл видит?
slanted
Цитата(777777 @ Jul 18 2008, 08:48) *
Ну а как насчет схемы все-таки? Или она секретная?


Далась вам эта схема. Нет там никакого криминала, RC-цепочка на ресете, пара блокировочных кондеров на питании, восемь штук светодиодов через резисторы от портов C, B и D. Ну, еще транзистор на OC1B, который управляет динамиком.

Цитата(Igor26 @ Jul 18 2008, 10:04) *
Было такое один раз с Мегой128. Заменил - всё стало нормально.

А почему тогда напряжение не логических уровней? А почему тогда программатор кристалл видит?


В общем-то, я ее домучал сегодня.
Флюс, зараза.
Помог ацетон, спирт, протереть, просушить, и так два или три раза. Шиться, по крайней мере, начало без глюков. Ну, плюс еще мелкий баг в программе, но после его исправления железяка заработала вся и сразу. Тем не менее две тиньки и одна мега таки остались трупами -- видимо, что-то такое туда зашилось, после чего они ушли в себя.

Да, флюс -- CT-brand 61B.
delamoure
Цитата(slanted @ Jul 18 2008, 11:49) *
Тем не менее две тиньки и одна мега таки остались трупами -- видимо, что-то такое туда зашилось, после чего они ушли в себя.


Imho поможет параллельный программатор.
slanted
Цитата(delamoure @ Jul 18 2008, 12:58) *
Imho поможет параллельный программатор.


Да нету нигде в ближайшем окружении. Проще выкинуть нафиг и взять следующий камень.
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.