Не работает сброс Arduino Pro Mini во время прошивки
- Войдите на сайт для отправки комментариев
Всем доброго времени суток!
Столкнулся с проблемой: не прошивается Arduino Pro Mini (ATmega328P, 5V, 16MHz). Использую UART переходник на чипе cp2104, где предусмотрен вывод DTR. Подключаю так: DTR -> DTR, 5V -> VCC, TXD -> RXI, RXD -> TXO, GND -> GND. Во время прошивки на ножке DTR переходника сигнал падает с 5V до очень низкого, однако сброс ардуинки это не вызывает. Если DTR с переходника напрямую воткнуть в RST - то плата во время прошивки просто отключается (т.к. на DTR логический 0). Попадать в нужный момент нажатием reset в ручную сложно, однако если попасть, всё прекрасно прошивается. В чём может быть проблема - ума не приложу. На ардуинке ножка DTR через конденсатор подключена выводом к RST пину. Настройки Arduino IDE: Плата "Arduino Pro or Pro Mini", Процессор "ATmega328p (5V, 16MHz)", Программатор "AVRISP mkII". Буду рад любым идеям =)
На ардуинке ножка DTR через конденсатор подключена выводом к RST пину
Зачем?
Во время прошивки на ножке DTR переходника сигнал падает с 5V до очень низкого, однако сброс ардуинки это не вызывает.
А если замерять после конденсатора, например на ножке RST? Возможно на плате где-то непропай.
Это не я подключил, он там с магазина уже впаян (маленький smd конденсатор).
А если замерять после конденсатора, например на ножке RST? Возможно на плате где-то непропай.
Стабильно 5V (от RST к земле). По идее конденсатор должен на мгновение дать 0, что бы ардуинка сбросилась. Скорее всего этот интервал нельзя засечь на вольтметре, а осциллографа у меня нет.
Так купите хотя бы DSO-138, он копейки стоит.
Спасибо за совет, гляну.
Конечно, это жесткий костыль, но при наличии второй ардуинки можно обойтись подобным скетчем в ней
А пин А0 подключить к пину RST изучаемой платы. И данные вывести на плоттер. Если будет бросок к низкому уровню, его можно будет увидеть. Если не проморгать ))
Как выяснилось, я вчера затупил, пока описывал проблему. Уровень DTR ножки на переходнике держится в районе 3.44V, при прошивке падает почти в 0. Я решил проверить: взял ногу DTR у ардуинки и сунул в 5V, ничего не происходило, и затем резко ткнул в землю - и да, ардуинка перезагрузилась. Она отлично перезагружается, если на её DTR ножке менять напряжение с 5V на 0 (и наоборот). Проделал то же самое, только вместо 5V взял провод на 3.3V (напряжение как у DTR на переходнике) - ничего не происходит. Почему ардуинка не перезагружается от скачка с 3.44V в 0 - не знаю. Что делать?
Конечно, это жесткий костыль, но при наличии второй ардуинки можно обойтись подобным скетчем в ней
А пин А0 подключить к пину RST изучаемой платы. И данные вывести на плоттер. Если будет бросок к низкому уровню, его можно будет увидеть. Если не проморгать ))
Спасибо за ответ, однако, скорее всего скачек происходит, не хватает только напряжения...
Как вариант - как следует осмотрите переходник, может быть там где-то сопля на пайке висит
Что делать?
Переключить переходник на 5В. Обычно там есть либо место для впайки перемычки, либо отверстия, куда можно впаять ножки для джампера. А у некоторых на выходе есть 3.3, 5 и Vcc, так там надо Vcc соединить с чем нужно. Вы же не показали нам что у Вас за переходник, так что конкретнее - сами разбирайтесь.
Переключить переходник на 5В. Обычно там есть либо место для впайки перемычки, либо отверстия, куда можно впаять ножки для джампера. А у некоторых на выходе есть 3.3, 5 и Vcc, так там надо Vcc соединить с чем нужно. Вы же не показали нам что у Вас за переходник, так что конкретнее - сами разбирайтесь.
Джамперов не видно. Отверстий для пайки много, однако это скорее всего не то, что нужно. Переходник у меня CP2104. У людей сразу "из коробки" всё работает...
Нет, с таким я не работал :-(
В любом случае, спасибо за помощь =)
Переходник у меня CP2104.
Фото действительно вашего переходника или нечто похожее? Потому что то что вы написали в #1
как то не очень стыкуется с картинкой. На плате видно что сигнал DTR приходит на гребенку через конденсатор. Плюс на самой ардуинке кондер распаян ...
Действительно, на мой не похож. Вот мой + ардуинка.
а фото ардуинки с другой стороны можно? Что-то есть большие сомнения в надежности пайки проводов на ардуине.
Зачем вообще вы припаиваете провода прямо к плате? Почему не впаять штатные гребенки, чтобы подключатся к переходнику проводами с наконечниками из комплекта??
Что-то есть большие сомнения в надежности пайки проводов на ардуине.
Вот зачем вы так со мной?) Припаял очень хорошо, зубами не вырвать, хотя на фото сильно не видно.
Зачем вообще вы припаиваете провода прямо к плате? Почему не впаять штатные гребенки, чтобы подключатся к переходнику проводами с наконечниками из комплекта??
Потому что я их потом не выпаяю. К тому же мне не нужны вообще боковые пины, только A4, A5 и питание. В готовом устройстве гребенки будут мешать. Провода у меня припаяны отдельные, и соединяются они со штатными проводами от переходника за кадром.
Проблема в том, что для сброса ардуины нужно 5V, а у меня из DTR идёт 3.44V. Провёл так же опыт, в котором сам подключил к RST на ардуине кондер в 0.1мкФ. Эффект тот же: от 5-ти вольт сбрасывается, от 3.44 - нет. Так же 3 штуки воткнул параллельно по 0.1мкФ - не помогло. Может как-то можно понизить напряжение сброса ардуинки? Или единственный выход - коммутировать с помощью 3.44V сигнал 5V на DTR с помощью какого-нибудь транзистора? Или в чём может быть проблема, если оно у всех работает, а у меня нет? Буду рад любым идеям)
Попробуйте на время прошивки питать ардуину от 3.3 В с переходника
Сейчас проверил на своем переходнике - на DTR напряжение 3,18, как и на пине 3,3v. При этом прошивает нормально. Что как бы и естественно, т.к. все, что выше 2,5 вольт трактуется как высокий уровень. Так что проблема явно в вашей ардуинке, имхо
Попробуйте на время прошивки питать ардуину от 3.3 В с переходника
Вы не поверите, но это действительно сработало! И как я только до этого не додумался... Я думал плата, которая рассчитана на 5V не будет работать от 3.3V. Теперь всё прошивается без проблем, огромное вам спасибо!))
Сейчас проверил на своем переходнике - на DTR напряжение 3,18, как и на пине 3,3v. При этом прошивает нормально. Что как бы и естественно, т.к. все, что выше 2,5 вольт трактуется как высокий уровень. Так что проблема явно в вашей ардуинке, имхо
Да, скорее всего бракованная ардуинка попалась...
Проблема решена, всем большое спасибо! =)
Да, скорее всего бракованная ардуинка попалась...
да нет в этом ничего "бракованного". Наоборот, ваша ардуина слишком "правильная" :) Ведь по стандарту 3.3в при питании 5в - вообще-то уже не попадает в диапазон HIGH (> 0.7 *VCC), поэтому контроллер не обязан реагировать на этот сигнал :)
люди такие "правильные" тоже бывают :)
да нет в этом ничего "бракованного". Наоборот, ваша ардуина слишком "правильная" :) Ведь по стандарту 3.3в при питании 5в - вообще-то уже не попадает в диапазон HIGH (> 0.7 *VCC), поэтому контроллер не обязан реагировать на этот сигнал :)
У всех нормальные, а у меня слишком правильная?) Эхх, повезло...)) Хотя с другой стороны RX, TX линии работают нормально, а там уровень тоже в районе 3.44V.
люди такие "правильные" тоже бывают :)
Это точно)))
Наоборот, ваша ардуина слишком "правильная" :) Ведь по стандарту 3.3в при питании 5в - вообще-то уже не попадает в диапазон HIGH (> 0.7 *VCC), поэтому контроллер не обязан реагировать на этот сигнал :)
Тут как бы не совсем так. Дело в том, что DTR - это вспомогательный пин. RST в любом случае подтянуто к VCC, т.е. на нем присутствует 5В, несмотря на то, что на DTR - 3,3В. RST и DTR связаны через конденсатор, т.е. при падении уровня на DTR к нулю на RST тоже уровень должен кратковременно упасть на нуль. Иными словами
DTR: 3.3v - 0v
RST: 5v - 0v
Так что ардуинка все-таки бракованная. Скорее всего конденсатор не в дугу
Так что ардуинка все-таки бракованная. Скорее всего конденсатор не в дугу
Или резистор на питание вместо 10 КОм 100 Ом. Китайцы все могут учудить.
+ 0,1 мкф на Ардуино в параллель родному.
+ 0,1 мкф на Ардуино в параллель родному.
Только что попробовал, то же самое, при питании 5V не сбрасывается. Я даже DTR с переходника подключал к RST на ардуине через 1, и 2, и 3 кондёра параллельно по 0.1мкФ - то же самое. Проблема либо в подтягивающем резисторе (который я не могу обнаружить... Резистор на 10кОм один на плате, и не видно, что бы он RST к VCC подтягивал, хотя могу и ошибаться), либо в самом микроконтроллере. В любом случае при питании через пин 3.3V у меня всё прекрасно прошивается и я не жалуюсь =)
Резистор на 10кОм один на плате, и не видно, что бы он RST к VCC подтягивал, хотя могу и ошибаться), либо в самом микроконтроллере. В любом случае при питании через пин 3.3V у меня всё прекрасно прошивается и я не жалуюсь =)
Возьми тестер и прозвони на все резисторы ногу сброса. Там их не много. И все станет ясно. А может стоит плату спиртиком промыть от излишков флюса..
Если проблема только с одной платой, но она шьется на 3,3В, то вообще проблемы не вижу - прошилась, убралась в корпус и хай себе работает ))
Возьми тестер и прозвони на все резисторы ногу сброса.
От VCC на плате до обоих RST 9.95кОм. От RST до резистора на 10кОм сопротивление 13Ом, после - 9.95кОм. До всех остальных либо столько же, либо больше (до 1-го вообще 3МОм, наверное через МК пробивает).
Был один подобный. Подключаю резеты 2х МК в параллель - один сбрасывается, другой нет. Пришлось к земле один притягивать. Т.е., резет с делителем получился.(
Понятно, но судя по всему у меня с подтягиванием всё хорошо.
Если проблема только с одной платой, но она шьется на 3,3В, то вообще проблемы не вижу - прошилась, убралась в корпус и хай себе работает ))
Ага, даже по ходу разработки на 5V переключаться не нужно, всей периферии и 3.3V хватает...)
Понятно, но судя по всему у меня с подтягиванием всё хорошо.
С подтягиванием у вас то хорошо, только не работает.) А я говорил о притягивании к земле.
Притянул 30к, подтяжка 10к - так получилось у меня.
GND |--/\/\--+--/\/\---> VCC
DTR ---||---+----> /RES
Впрочем, дело хозяйское.)
От RST до резистора на 10кОм сопротивление 13Ом
Многовато 13 Ом. Вы точно к нужному резистору меряете? На вашем фото это в верхнем левом углу возле 6-7 пинов.
Впрочем, дело хозяйское.)
Ну кому-то может и хозяйское, а мне как программисту... "Подтягивание", "притягивание"... Я человек простой, ну вы понимаете))
Многовато 13 Ом. Вы точно к нужному резистору меряете? На вашем фото это в верхнем левом углу возле 6-7 пинов.
Нормально. У меня тестер старенький, МОмы меряет и 1к вольт берёт. Щупы толстые, может контакт не идеально проходит... От обоих RST до контакта резистора под 7-м пином - 10-30Ом, смотря как надавить, можно и 0 Ом выдавить, только что потом от ардуины останется? =) Под 6-м - 9.95 - 10кОм.
Ну кому-то может и хозяйское, а мне как программисту... "Подтягивание", "притягивание"... Я человек простой, ну вы понимаете))
Понимаю. "Кому и кобыла невеста!" Только вы ж о железках спрашиваете. Вот и вникайте.
Понимаю. "Кому и кобыла невеста!" Только вы ж о железках спрашиваете. Вот и вникайте.
Да, разобрался уже) Спасибо за ответ.