Я сделал устройство на Меге 8. Одно из его назначений - индикация на 5-разрядном 7-сегментном индикаторе. Схема в приложении. Там блок питания внешний, импульсный 12В, МК запитан через кренку. Семисегментники сидят на отдельной пластинке, соединенной с материнской платой (
Программа писана в AVRStudio 5, отлаживалась в Протеусе. В симуляторе никаких проблем не возникает - все заводится и показывает.
С железом же возникла проблема.
МК определяется программатором (пользую самодельный на FT232RL), успешно перепрошивается, но вот запускается один раз из пятидесяти. При этом интерфейс для подключения программатора у меня сделан на плате устройства, т.е. МК я не вытаскиваю для перепрошивки.
Симптомы такие: при включении блока питания все 7-сегментные индикаторы вспыхивают всеми сегментами на какое-то мгновение, потом гаснут, и потом ни фига не происходит. Хотя должна начинаться индикация всяких цыфер. Ну, собственно, для упрощения отладки на данном этапе я просто вывожу на индикаторы нолики, и зацикливаю программу. Индикаторы у меня подключены через сдвиговые регистры.
Если при включении блока питания зажать и держать Резет, то все индикаторы загораются и горят до тех пор, пока не отпустишь Резет. После - ни фига не происходит.
Однако. Один раз из пятидесяти, как я уже говорил, МК все же запускается. После этого начинается индикация, и программа работает. При нажатии на Резет сбрасывается как положено, и опять выполняется. Но если выключить питание, то опять его фиг запустишь...
Что я пробовал:
- подключать другой блок питания (комповый и производства Meanwell) - без разницы.
- отключал всю "периферию", которая не относится к индикаторам и самому МК - т.е. драйвер двигателя и MAX232, они там присутствуют. Просто перерезал дорожки на плате. Бестолку.
- думал, в транзисторе проблема, заводил байпасный проводок в обход него и перерезал дорожку, ведущую к базе. Бестолку.
- менял источник тактового сигнала в МК, ставил внутренний и внешний, менял частоту, фьюз CKOPT, сторож уровня напряжения на обоих уровнях. Все без разницы. Разве только скорость наполнения индикаторов, в случаях, когда все же МК запускался, была разной.
- прозванивал всю плату на предмет нежелательных замыканий. Нет их там.
- замерял напряжения в разных точках. Все там нормально.
- менял кренку и конденсаторы вокруг нее, добавлял параллельно керамику и танталы, убирал все конденсаторы вообще. Кстати, без кондеров выяснил одну фишку - если электродом от блока питания скребсти по входной ножке кренки, как в кино заводят машину без ключей, то вероятность успешного старта МК повышается... С кондерами же перед каждой попыткой надо ждать, когда после отключения они разрядятся.
- естественно, пробовал другой МК.
- перетыкивал точки подключения земель от драйвера двигателя и MX232 в разные места линии земли.
- подключал землю блока питания в разные места линии земли на плате.
- в конце концов, когда количество трепанаций платы превысило всякий предел, заново переразвел и переделал всю плату, половину компонентов перенес на другую сторону платы, сменил всю разводку. Просто родил новую плату. Выкинул оптроны от MAX232, для экономии места. Напаял новые панельки и разъемы. Если где и было замыкание - вероятность его повторения нереально маленькая. Та же петрушка.
Вобщем, смог различить только одно - при частом-частом включении-выключении питания МК иногда стартует, и работает нормально до тех пор, пока не отключишь питание. По-хорошему стартовать не хочет. В то, что проблема в программе, мне верится слабо, поэтому пока и не прикладываю ее.
Коты, помогите.


