МК видится программатором, но сам запускается через раз

Все прочитали, вроде даже поняли, взяли паяльник - а нифига не получается? Скорее сюда! Поможем. Чем можем...
Ответить
Аватара пользователя
proximo
Открыл глаза
Сообщения: 45
Зарегистрирован: Пт апр 16, 2010 13:48:29
Откуда: Питер

МК видится программатором, но сам запускается через раз

Сообщение proximo »

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

Re: МК видится программатором, но сам запускается через раз

Сообщение pyzhman »

А при отключенном программаторе пробовали включать? Запускается?
Docendo discimus
Реклама
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Re: МК видится программатором, но сам запускается через раз

Сообщение Arlleex »

Программу приложите срочно.
Тут дело как раз-таки в ней.
Не умеешь - не берись, но не взявшись не научишься...
Аватара пользователя
proximo
Открыл глаза
Сообщения: 45
Зарегистрирован: Пт апр 16, 2010 13:48:29
Откуда: Питер

Re: МК видится программатором, но сам запускается через раз

Сообщение proximo »

А при отключенном программаторе пробовали включать? Запускается?
Конечно пробовал. Не запускается. Но пару раз бывало, что после очередной перепрошивки сразу (при подключенном программаторе) запускался.
Программа в сокращенном виде (только то, что необходимо для индикации начальных ноликов) в приложении. Там же и скомпиленные файлы AVRStudio 5.
Только что ее попробовал на железке, не работает, но в симуляторе по-прежнему все ок.
Вложения
Overflow_fluxmeter_avrstudio5.rar
(24.9 КБ) 182 скачивания
Реклама
Эиком - электронные компоненты и радиодетали
Аватара пользователя
demson
IT KT
Сообщения: 1309
Зарегистрирован: Пн авг 25, 2008 08:49:33
Контактная информация:

Re: МК видится программатором, но сам запускается через раз

Сообщение demson »

варианты из аппаратного:
резет подтяни резистором на + для начала.
проверь не стоит ли фьюз ватчдога.
кварц внешний? но он скорее не при делах раз шьется.
в спорах рождается ИСТИНА [AND] flud.
Реклама
Аватара пользователя
proximo
Открыл глаза
Сообщения: 45
Зарегистрирован: Пт апр 16, 2010 13:48:29
Откуда: Питер

Re: МК видится программатором, но сам запускается через раз

Сообщение proximo »

резет подтяни резистором на + для начала.
а разве не подтянут?
проверь не стоит ли фьюз ватчдога.
не стоит. Конфигурация фьюзов сейчас high C9, low 2E.
кварц внешний?
кварц стоит внешний, но пробовал и через внутренние
Реклама
Аватара пользователя
proximo
Открыл глаза
Сообщения: 45
Зарегистрирован: Пт апр 16, 2010 13:48:29
Откуда: Питер

Re: МК видится программатором, но сам запускается через раз

Сообщение proximo »

Arlleex, ну где же ты.. :(
Аватара пользователя
proximo
Открыл глаза
Сообщения: 45
Зарегистрирован: Пт апр 16, 2010 13:48:29
Откуда: Питер

Re: МК видится программатором, но сам запускается через раз

Сообщение proximo »

Я продвинулся в изучении своей проблемы. Вероятно, в старой плате все же где-то был косяк. В новой плате я теперь добился того, что мне стабильно удается запустить МК и шаговый двигатель. Но вот если вместо движка пытаться запускать индикаторы - все опять по-старому. Вспыхивают на мгновение и гаснут. Уважаемые спецы, посмотрите, пожалуйста, схему подключения сдвиговых регистров, она в первом сообщении. У меня сомнения насчет того, правильно ли я подтянул их входы, и все ли входы я подтянул, а может, и лишнее что подтянул. Если там все ок внешне, то буду разбираться с программой.
Апдейт: частота работы индикаторов у меня далеко не 11,052МГц, а гораздо ниже (мне тут указали было на это).
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Re: МК видится программатором, но сам запускается через раз

Сообщение Arlleex »

Гхм... Подключены верно, только есть одно замечание.
Каким методом вы осуществляете управление линиями DATA, CLK, RESET в сдвиговом регистре?
Чтобы записать 1 - я так понял, соответствующий бит порта микроконтроллера отпускаете в состояние HI-Z (3-е состояние)? А что бы записать 0 - опускаете линию в 0?
Далее (правда к проблеме не относится, хотя может быть) - почему в цепи светодиодов D2 and D3 я не увидел токоограничительных резисторов?
Далее - мне очень интересно, почему это у вас линии аппаратного USART выведены на разъем программатора?
А зачем линии для организации протокола IIC SDA and SCL подключены к MAX232? У вас что, программный USART?
Резисторы R2, 3, 4 в цепи кнопок я бы убрал и включил микроконтроллером внутреннюю подтяжку.
И вот что. Что вы за штуку организовали на MAX232? уберите все лишнее - включите ее по стандартному и привяжите к СОМ-порту вашего ПК. Меньше заморочек будет.
И кнопки никакие не нужны будут.
Не умеешь - не берись, но не взявшись не научишься...
Аватара пользователя
proximo
Открыл глаза
Сообщения: 45
Зарегистрирован: Пт апр 16, 2010 13:48:29
Откуда: Питер

Re: МК видится программатором, но сам запускается через раз

Сообщение proximo »

Каким методом вы осуществляете управление линиями DATA, CLK, RESET в сдвиговом регистре?
Чтобы записать 1 - я так понял, соответствующий бит порта микроконтроллера отпускаете в состояние HI-Z (3-е состояние)? А что бы записать 0 - опускаете линию в 0?
Эммм... Нет. Ну, по крайней мере, я думаю, что нет. У меня эти ноги настроены на выход (DDRX=1), а не на вход. Если записываю 1, то ставлю ногу в высокий уровень (sbi PORTX, N), если 0 - то в низкий (cbi PORTX, N)... В моменты, когда у меня все же получалось запустить индикацию, все работало нормально.
Далее (правда к проблеме не относится, хотя может быть) - почему в цепи светодиодов D2 and D3 я не увидел токоограничительных резисторов?
Они на проводе (выводные), который ведет к этим светикам. В кнопках у меня светики. Так вышло, что для резисторов не нашлось места на плате.
Далее - мне очень интересно, почему это у вас линии аппаратного USART выведены на разъем программатора?
А куда еще их? У меня рукодельный программатор на FT232RL, который еще может выступать в роли отладчика. USBBit.
А зачем линии для организации протокола IIC SDA and SCL подключены к MAX232? У вас что, программный USART?
И вот что. Что вы за штуку организовали на MAX232? уберите все лишнее - включите ее по стандартному и привяжите к СОМ-порту вашего ПК. Меньше заморочек будет.
И кнопки никакие не нужны будут.
На MAX232 у меня два 12-вольтовых датчика повешаны. К программатору отношения не имеет. Кстати, я ее отключал вообще, и без нее тоже не получалось запустить МК.
Резисторы R2, 3, 4 в цепи кнопок я бы убрал и включил микроконтроллером внутреннюю подтяжку.
А она тоже присутствует. Внешние резисторы для гарантии)

Спасибо, что посмотрели схему, я просто переживал, правильно ли я подключил сдвиговые регистры. Сейчас я склоняюсь к мысли, что запуск не получается из-за семисегментников, но если с железом все нормально, надо смотреть программу. Займусь...
Кстати, а может так быть, что МК сбрасывается или уходит в затык из-за того, что в момент, когда включаются все семисегментники разом, резко возрастает энергопотребление схемы? Хотя у меня земля от них приходит в самое начало земляной линии на плате...
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Re: МК видится программатором, но сам запускается через раз

Сообщение Arlleex »

Может быть. Но, вот что меня удивило:
Эммм... Нет. Ну, по крайней мере, я думаю, что нет. У меня эти ноги настроены на выход (DDRX=1), а не на вход. Если записываю 1, то ставлю ногу в высокий уровень (sbi PORTX, N), если 0 - то в низкий (cbi PORTX, N)... В моменты, когда у меня все же получалось запустить индикацию, все работало нормально.
Уберите подтягивающие резисторы из платы на линиях управления/данных сдвигового регистра. Они там не нужны, раз используется такая программная конфигурация.
Или, если не хотите выпаивать - придется подправить форму записи данных.
чтобы записать 1 - отпускаем линию в Hi-Z (DDRx=0, PORTx=0).
а чтобы ноль - соответственно записываем в PORTx 0.
Вы можете просто пожечь выводы микроконтроллера (что скорее всего произошло).
Попробуйте не изменяя программы - убрать резисторы подтяжки информационных линий сдвиговых регистров (и CLR тоже).
Выпаяйте по 1 выводу у каждого резистора - и попробуйте запустить плату.
Результаты сюды :)
Не умеешь - не берись, но не взявшись не научишься...
Аватара пользователя
proximo
Открыл глаза
Сообщения: 45
Зарегистрирован: Пт апр 16, 2010 13:48:29
Откуда: Питер

Re: МК видится программатором, но сам запускается через раз

Сообщение proximo »

Спасибо за наводку)
Поизучаю еще матчасть про состояния портов и попробую.
Аватара пользователя
proximo
Открыл глаза
Сообщения: 45
Зарегистрирован: Пт апр 16, 2010 13:48:29
Откуда: Питер

Re: МК видится программатором, но сам запускается через раз

Сообщение proximo »

чтобы записать 1 - отпускаем линию в Hi-Z (DDRx=0, PORTx=0).
а чтобы ноль - соответственно записываем в PORTx 0.
где-то тут подвох)
Насколько я смог понять, в режиме входа (DDRx=0) и при наличии подтяга к питанию на линии всегда будет лог.1, независимо от состояния PORTx.
В остальном же да, я понял, что резисторы надо выкидывать, иначе спалю ноги МК.
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Re: МК видится программатором, но сам запускается через раз

Сообщение Arlleex »

Нет, вы не правильно поняли.
Если линия настроена на ввод данных, т.е. в регистре DDRX определенный бит сброшен (=0), линия настраивается на прием данных, в свое время тот же бит в регистре PORTX указывает состояние внутренних подтягивающих резисторов (1 - подтягивающий резистор включен, 0 - отключен). И это - если бит общего запрещения подтягивающих резисторов сброшен в регистре общего управления.
Не умеешь - не берись, но не взявшись не научишься...
Аватара пользователя
proximo
Открыл глаза
Сообщения: 45
Зарегистрирован: Пт апр 16, 2010 13:48:29
Откуда: Питер

Re: МК видится программатором, но сам запускается через раз

Сообщение proximo »

Все верно, но при наличии внешнего подтяга к питанию на этой линии всегда будет 1, независимо от значения PORTx. Ведь PORTx, по сути, это тот же подтяг к питанию. То есть в режиме PORTx=1 получается два подтяга, внешний и внутренний, а в режиме PORTx=0 только внешний, но в обоих случаях на линии всегда 1.
Вообще говоря, возвращаясь к разговору о резисторах, без них я уже пробовал, я с этого начинал. Помню только, что без них на индикаторах была белиберда, но не помню, при каких режимах ног МК. Я выкину резисторы и попробую без них сегодня, в последние дни было просто не добраться до паяльника.
Аватара пользователя
proximo
Открыл глаза
Сообщения: 45
Зарегистрирован: Пт апр 16, 2010 13:48:29
Откуда: Питер

Re: МК видится программатором, но сам запускается через раз

Сообщение proximo »

АААААААА!!!!!!!!!!! АНО РАБОТАЕТ!!!
:music:
Arlleex, ты шайтан!!!
:beer:
Arlleex
Друг Кота
Сообщения: 4435
Зарегистрирован: Сб мар 07, 2009 20:44:36

Re: МК видится программатором, но сам запускается через раз

Сообщение Arlleex »

Так в чем проблема была? Резисторы выпаял, и заработало, я правильно понял? :)
Рад был помочь :beer:
Не умеешь - не берись, но не взявшись не научишься...
Аватара пользователя
proximo
Открыл глаза
Сообщения: 45
Зарегистрирован: Пт апр 16, 2010 13:48:29
Откуда: Питер

Re: МК видится программатором, но сам запускается через раз

Сообщение proximo »

Ага) Самое обидное, что я в первой плате этого девайса не стал поначалу ставить эти резисторы, потому что сомневался, правильно ли я делаю, что ставлю их, но плата все равно не заводилась по причине какого-то другого косяка, а я подумал потому, что резисторов нет.
Ответить

Вернуться в «Практика»