Привет, Хабр!
Недавно возникла у меня такая ситуация: купил я Arduino Leonardo, пользовался ей в течение года. И вдруг она перестала работать. Стал усиленно гуглить, пытаясь понять, как же спасти плату. И понял, что гайдов, описывающих способы спасения, не так уж много, вот я и решил написать свой.
Итак, нам дана плата Arduino (неважно, какая), в которую не вгружается скетч. Что же с ней делать?
Проверить настройки IDE.
Да-да, часто проблема кроется именно в неправильных настройках. Поэтому первым делом нужно проверить, выбран ли правильный порт, правильная ли выбрана плата, программатор, загрузчик и др. Подробные инструкции по настройке IDE для практически любой платы можно нагуглить, не буду перечислять здесь их все.
Драйверы.
Иногда проблема кроется в отсутствии драйверов для работы с платой. Если на плате есть микросхема CH340, то для неё нужно установить драйвер, и тогда всё скорее всего заработает. Найти его можно, например, здесь
Serial
Если Ваша плата общается с другими программами на компьютере (Putty, монитор порта и др.), то отключите от неё все программы, с вероятностью 90% все заработает.
Периферия
Если в Вашем проекте к пинам RX и TX (имеются в виду 0-ой и 1-ый пины), то отключите от них всё, иначе прошивка не будет загружаться
Если всё вышеперечисленное не помогло, то проблема кроется в микроконтроллере. Для решения этой проблемы есть несколько способов:
Прошивка через программатор
Если у Вас есть программатор, поддерживаемый Arduino IDE, то подключите к нему свою плату и попробуйте записать загрузчик. Если не помогает, то переходите к пункту 2. Если же у Вас нет программатора, то можно сделать его из другой платы Arduino, загрузив в неё стандартный пример ArduinoISP, и собрав всё по схеме. Конденсатор ставим обязательно, без него может не работать. Потом выбираем тип платы, которую будем прошивать, и выбираем программатор "Arduino as ISP". Потом заливаем прошивку.
Если же Вам не помогла и прошивка через программатор, то с вероятностью 99,9% ваша плата умерла.
Однако, у меня был похожий случай с платой Arduino Leonardo, и мне чудом удалось её спасти. Проблема была такова: При подключении платы к компьютеру он замечал её только минуты через 2. При загрузке прошивки компиляция проводилась успешно, но перед началом загрузки прошивки плата, как обычно сбрасывалась (это происходит всегда и для всех плат), и компьютер переставал её видеть вообще, даже после 10 минут ожидания. Решением стала установка такого же конденсатора между пином RESET и GND. Он предотвращает сброс платы.
Спасибо за внимание!
Drag13
Для винды да.
Для линукса, не совсем. С одной стороны он есть из коробки, с другой стороны, может потребоваться его "заменить".
https://learn.sparkfun.com/tutorials/how-to-install-ch340-drivers/all
https://github.com/juliagoda/CH341SER
Aromik Автор
Здравствуйте! Спасибо Вам большое за дополнение
VT100
"Если в Вашем проекте к пинам RX и TX (имеются в виду 0-ой и 1-ый пины), то отключите от них всё, иначе прошивка не будет загружаться"
Слова смысл несущие — пропущены у Вас.
А если строго, то есть вариант аккуратного проектирования схемы — так, чтобы дополнительные подключения не конфликтовали с режимом загрузки. Но это выходит за рамки данного guide.
daggert
А не подскажите какую-нибудь простенькую схемку или руководство по такому проектированию, для начинающих? Сделал небольшую плату в диптрейсе (4 слоя), и все боюсь отправить на SMT т.к. боюсь что схема не рабочая и накосячил с ISP и i2c.
VT100
Вероятно — только опыт. Как вариант — зарегистрироваться на радиолюбительском форуме и задать вопрос: "Разработал схему и печатную плату, сделал так-то и так-то потому, что думаю вот так. Всё ли правильно?"
По поводу помех, можно, например, порекомендовать "Помехоустойчивые устройства." Алексей Кузнецов.
daggert
Вот тоже боюсь что только опыт… Про радиолюбительские форумы — мой опыт разработки простого усилителя модульного, где есть общая шина питания, а модули с моно-усилителями втыкаются как на полозьях, показал что на таких форумах нубские вопросы не очень любят. Дельного я ничего не получил, даже с радиокота, и в схему по итогу не добавил никаких компонентов.
Спасибо за ссылку, пойду читать.
VT100
Мне кажется, что если показать ход собственной мысли, то больше шансов получить ответ или уважительную дискуссию.
Потому как нередки треды, начинающиеся со "сделайте мне красиво, немедленно!". Или треды, в которых информация выдаётся ТС'ом по крупицам, несмотря на первые-же ответы в стиле "телепаты в отпуске".
Ну и пару раз было так, что формулируя предельно понятно для "человека со стороны" свой вопрос на форум — сам находил ответ.
unsignedchar
Где в голосовалке замена микроконтроллера? ;)
Aromik Автор
Здравствуйте! Под пунктом «ничего» это и подразумевается ;)
unsignedchar
«Ничего» подразумевается «не смог починить и выбросил».
serafims
Начинать проверку надо с контактов, их качества, с питания, с земли, не отвалился ли кварцевый генератор, работает ли переходник usb-com в режиме эхо, когда rx-tx соединены.
Aromik Автор
Здравствуйте!
В данном гайде я рассматривал только возможные проблемы с МК и софтом. А так спасибо за дополнение, учту на будущее.
serega374
У меня было что Uno не прошивалось по USB. А по ISP прошивалось. По итогу слетела прошивка на МК UART. Прошивал переведя МК UART в режим DFU. В общем танцы с бубнами на пару часов для новичка
ntfs1984
Можно еще проверить, подходит ли к Ардуине питание.
Ну а если без сарказма, то атмегу убить достаточно сложно, и как правило люди которые работают с этим хотя бы больше недели — "мертвой ардуиной" называют плату с необратимо убитым микроконтроллером. Чаще всего убиваются входы (кстати uart чувствительнее всего), когда на них прилетает ЭДС самоиндукции после подключения чего-то индуктивного без опторазвязки или гасящего диода. Все остальное — это суета из разряда "не заметил".
remzalp
Я сумел статикой сжечь на ардуино UNO USB-UART микросхему, она мелкая и в корпусе, к которому паяльником с моими навыками не подлезть.
Зато с внешним UART можно перепрошивать.