Не загружается скетч через USB (avrdude: stk500_recv(): programmer is not responding)
- Войдите на сайт для отправки комментариев
Всем привет!
Понимаю, это 1001-й вопрос с ошибкой avrdude: stk500_recv(): programmer is not responding, но я перепробовал кажется все возможные варианты решения проблемы и не знаю, куда двигаться дальше.
Дано: плата Arduino UNO Rev3 оригинальная, Arduino IDE 1.8.19, Windows 11.
Акт 1.
Изначально Windows не видела плату, вернее определяла её как ATmega16U2. Выяснил, что это контроллер USB и надо бы его прошить. Установил Flip, драйверы для USB и каталога Flip, после чего смог прошить контроллер hex, найденным в Github (после пробовал перепрошивать с помощью hex из поставки Arduino IDE, но они кажется одинаковые). Плата начала определяться в диспетчере устройств с присвоенным портом COM4. IDE её тоже увидела. Я уж было возрадовался и попробовал залить blink, но не тут то было. Возникла та самая ошибка про неотвечающий программатор. Решил, что проблема связана с загручиком и надо бы его перезалить. Перед этим пробовал вытаскивать ATmega328P и вставлять обратно (мало ли что), но безрезультатно.
Акт 2.
Приобрёл популярный программатор USBasp. Попробовал залить загрузчик, но испугался по началу предупреждений от avrdude. Включил подробный лог загрузки. В итоге кажется всё OK (и запись и чтение по 100%). Затем залил скетч через программатор и о чудо, диод L заморгал с секундной задержкой! Но через USB по-прежнему глухо. Знаю, что перезатёр загрузчик предыдущим действием, поэтому предварительно залил его ещё раз.
Итог:
В логе загрузки вижу
История про " не понимаешь - не лезь"
Ардуина совершенно верно определялась компом как атмега16, а вас кто-то дернул ее перешивать.
вероятнее всего своим "Актом 1" вы стерли из чипа, что служит USB-COM-мостом (Атмега16U ?) оригинальную прошивку . Что вы там потом за HEX нашли на гитхабе и насколько он вообще подходит к вашей плате - неизвестно.
А все действия? начиная с Акта2 - не имеют ни малейшего отношения к восстановлению прошивки в Атмеге16U и потому никак не могут решить проблему.
Спорить не стану. Не понимаю.
Решение по перепрошивке ATmega16U2 вычитал где-то в интернетах. Следовал инструкции с Амперки. HEX кажется брал отсюда: https://github.com/arduino/ArduinoCore-avr. Но я написал, что впоследствии взял HEX из поставки Arduino IDE ("C:\Documents and Settings\rchig\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.8.5\firmwares\atmegaxxu2\arduino-usbserial\Arduino-usbserial-atmega16u2-Uno-Rev3.hex"). Но ничего не поменялось. Flip рапортует об успехе. Arduino видна в диспетчере задач с присвоенным портом.
Допустим я накосячил с первым актом. Как быть дальше? Есть какая-то возможность диагностировать ATmega16U2?
ваши действия через IDE:
1. выбрать плату UNO
2. выбрать ваш программатор - USBISP
3. подключить UNO к USBISP
4. В IDE выбрать порт занятый программатором
5. В IDE - Инструменты - Записать загрузчик
После этого в чипе atmega328p всё по фэншую,
отсоединяем программатор, втыкаем USB шнур в UNO
и выбираем порт
Далее из примеров берем блинк без делэй и пробуем зашить,
если после этого лыжи не едут то возможны две проблемы
ваши действия через IDE:
1. выбрать плату UNO
2. выбрать ваш программатор - USBISP
3. подключить UNO к USBISP
4. В IDE выбрать порт занятый программатором
5. В IDE - Инструменты - Записать загрузчик
После этого в чипе atmega328p всё по фэншую,
отсоединяем программатор, втыкаем USB шнур в UNO
и выбираем порт
Далее из примеров берем блинк без делэй и пробуем зашить,
если после этого лыжи не едут то возможны две проблемы
USBasp
rchigvintsev
Второй HEX, что вы взяли из поставки Ардуино ИДЕ - должен подойти. Кто такой Flip не знаю. Попробуйте прошить этот Хекс программатором USBASP, который вы использовали для восстановления загрузчика в основном чипе. Только не перепутайте, к какому разъему ISP подключаться. на вашей Уно их два:
разъем чипа атмега16 на этой картинке слева. рядом с большим USB коннектором
ваши действия через IDE:
1. выбрать плату UNO
2. выбрать ваш программатор - USBISP
3. подключить UNO к USBISP
4. В IDE выбрать порт занятый программатором
5. В IDE - Инструменты - Записать загрузчик
После этого в чипе atmega328p всё по фэншую,
отсоединяем программатор, втыкаем USB шнур в UNO
и выбираем порт
Далее из примеров берем блинк без делэй и пробуем зашить,
если после этого лыжи не едут то возможны две проблемы
делаешь ту же ошибку. что и ТС - забываешь, что на оргинальной Уне два МК.
Пункты выше - это восстановление загрузчика в АТМЕГЕ328.
Но если наш ТС снес прошивку в атмеге16, это все бестолку.
Спасибо за ответ, но есть вопросы:
1. Программатора такого в IDE нет. Есть USBasp. С ISP есть всякие варианты вроде AVR ISP, AVRISP mkII и т.п.
2. Программатор кажется не занимает какой-либо порт. Он виден в диспетчере задач в ветке libusbK Usb Devices. Порт ему не присвоен.
В такой конфигурации запись загрузчика генерирует вот такой лог (не знаю, как спрятать его под спойлер):
avrdude: Version 6.3-20190619
Процедура эта (что в первом акте) даже у ардуин на сайте описана. https://support.arduino.cc/hc/en-us/articles/4411209176722-If-Arduino-UN...
и далее там по ссылке собственно процесс прошивки. Так что если всё по инструкции делал, то вроде как и ничего криминального.
Странно только, что оригинальная ардуина в недоделанном виде прийти может.
Можно попробовать loopback test https://support.arduino.cc/hc/en-us/articles/360020366520-How-to-do-a-loopback-test
Спасибо! Можно попробовать прошить программатором. Flip - это Atmel'овская утилита для прошивки их чипов (https://www.microchip.com/en-us/development-tool/flip). Делал всё по вот этой инструкции: http://wiki.amperka.ru/%D1%83%D1%81%D1%82%D0%B0%D0%BD%D0%BE%D0%B2%D0%BA%D0%B0-%D0%B8-%D0%BD%D0%B0%D1%81%D1%82%D1%80%D0%BE%D0%B9%D0%BA%D0%B0-arduino-ide:arduino-uno-update-16u2.
kalapanga
Ну ок, если тут все по прописи - значит я не прав и зря влез. ТС делал все по инструкции и что-то пошло не так.
Однако остается вопрос, что делать дальше. Несмотря на то, что я ошибся в диагнозе, в качестве решения для себя я бы все равно выбрал сначало прошить ИСП-программатором атмегу16, а потом обновить загрузчкик в атмеге328.
Только. повторюсь. важно не перепутать ISP разъемы.
Тест loopback успешно пройден. Мигают оба диода RX/TX. Сообщения сразу возвращаются. Значит USB-контроллер работает как надо? Но скетч всё равно не заливается. :(
К сожалению, не знаю, как прошить через ISP. Это ведь через IDE не сделать?
К сожалению, не знаю, как прошить через ISP. Это ведь через IDE не сделать?
вы уже делали это - это прошивка через внешний программатор, USBasp например.
Только сразу не подскажу, как прошить атмегу16 через Ардуино ИДЕ... проше найти любую оболочку для avrdude , типа Sinaprog
https://cxem.net/software/sinaprog.php
Тест loopback успешно пройден. Мигают оба диода RX/TX. Сообщения сразу возвращаются. Значит USB-контроллер работает как надо? Но скетч всё равно не заливается. :(
По крайней мере про этот контроллер видимо можно забыть - работает. Дальше загрузчик идёт. Надо думать, что при его прошивке могло не так пойти... Но там вроде кроме выбора платы и ошибиться-то особо не в чем (правильная выбрана?). Уж или шьётся или нет. При прошивке загрузчика точно никаких нехороших сообщений не было?
Кажется справился с SinaProg. Выбрал HEX, выбрал контроллер ATmega16, выбрал программатор USBasp, поискал контроллер (он нашёлся). После чего в секции Flash нажал Program. Программа сказала, что всё OK. После этого перезалил загрузчик на всякий случай. Но всё тщетно.
Что же ещё нужно этой капризной итальяшке? Шерсть козла и кровь девственницы?
Выше есть моё длинное сообщение с логом после прошивки загузчика. Предупреждения есть вроде avrdude: Warning: cannot open USB device: Function not implemented, но операция похоже всё же завершается успехом. Или нет?
Плата правильная - Uno.
Я для таких работ использую портабле версию 1.8.3, с 1.8.9 были проблемы
К сожалению, не знаю, как прошить через ISP. Это ведь через IDE не сделать?
через IDE и делается
Кажется справился с SinaProg. Выбрал HEX, выбрал контроллер ATmega16, выбрал программатор USBasp, поискал контроллер (он нашёлся). После чего в секции Flash нажал Program. Программа сказала, что всё OK. После этого перезалил загрузчик на всякий случай. Но всё тщетно.
Что же ещё нужно этой капризной итальяшке? Шерсть козла и кровь девственницы?
Надеюсь, что для заливки загрузчика вы перетыкаете в другой разьём :)
Ежели вам реально так не повезло и оба камня были пустые(что жутко странно), а не тупо не хватало дровей в системе, но уже, как грицца, поздно. С загрузчиком для 328 вы походу справились а вот флип для 16U2 прикольная штука, но есть нюанс, он не прошивает фюзы. А они для работы в качестве конвертера - другие. Через дудку можно/нужно залить правильные.
Заинтриговали. :)
Скачал AVRDUDE_PROG, подключил программатор, но флажки у меня выглядят немного по-другому:
При попытке установить их так, как у вас на скрине и запрограммирвать, прога зависает, а в логе видна ошибка верификации и предложение откатить изменения (скопировать текст не получилось).
Да и хрен с ней. тут главное FF во fuse low. Сначала убедитесь что программатор видится и читает.
Попробовал сейчас автоматическое программирование. Просто выбрал ATmega16U2, флаги никакие не менял. Нажал на кнопку "Запрограммить всё". В итоге сначала всё было неплохо, но в что-то пошло не так:
Дубль два: Начните с малого - вкладка FUSE>чтение.
Контроллер хитрый, работает в двух режимах.
Чтение OK:
Ставьте/убирайте галки в первых трёх областях и жмякайте программирование
Что-то таки получилось:
Хня получилась :) галки ставить как на моём скрине и не обращать внимание на серые области. D9 и FF должны быть полюбому.
Правда уже снята галка на RSTDISBL ( вот на х... ????????? ) так что уже не факт что будет шиться.
Не шьётся. :) Команду снимать/ставить галки воспринял буквально: там где была галка, убрал и наоборот. Надежда потеряна?
Не шьётся. :)
толстый песец подкрался незаметно
Угу. Я бл... специально нашёл UNU, выкопал из закромов программатор, вспомнил как тут по-грёбаному выкладываются картинки и выложил и вот что я пыжился? Короче сочувствую. Привести в порядок можно, но нужен другой программатор(интересно а фюзе доктор поможет?) Доп. проблема, что контроллер в BGA корпусе и так просто к нему не подцепишся.:(
А попробуйте повторить историю с флипом. Чем там кто-то не шутит и вдруг он как-то на фюзы влияет и вернёт их на заводские. Маловероятно, но а вдруг.
Я её похоже надёжно вырубил. В диспетчере задач плата не видна, соответственно Flip до неё не дотянется.
Есть теперь какие-то варианты восстановления, помимо выдувания контроллера с платы? Что за fuse doctor? Как к нему записаться на приём? И что за другой программатор?
И что за другой программатор?
https://www.radiokot.ru/circuit/digital/pcmod/72/
fuse doctor - аппаратная приблуда для автоматического востановления фюзов. Но не факт, что этот контроллер поддерживается.
Программатор любой параллельный для т.н. высоковольтного программирования.
Основная проблема - это подпаяться к площадкам этого типа корпуса.
Думаю усилия по оживлению не стоят того и если уж у вас есть USBASP, то и шейте через него. В случае необходимости глянуть в сериал порт есть отдельные конвертеры. А если использовать сигнал DTR, то и отличий не заметите(ну, кроме висящей сбоку приблуды)
А ведь я там потом успел дописать про картинку, но с сайта выкинуло с ошибкой при сохранении:(
Почитал немного про Atmega fusebit doctor. Вроде можно с помощью него 16U2 восстановить, но только не понял, это через ICSP уже никак не сделать?
Ну а в целом да, скетчи успешно и через программатор заливаются.
Спасибо за попытку помочь! Не знал, что фьюзы - такая коварная штука. :)
Да уж, все эти загрузчики...
Не, только параллельный программатор. Жаль, что так вышло. А ведь почти получилось. Возможно:)
Это вы ещё SPIEN не зацепили( хорошо, что отключен доступ из оболочки:)
Не, только параллельный программатор. Жаль, что так вышло. А ведь почти получилось. Возможно:)
Это вы ещё SPIEN не зацепили( хорошо, что отключен доступ из оболочки:)
а чего ты ждал, выдал на руки юнцу оторвавшемуся от мамкиной сиськи ДШК, а потом надо жеж, так получилось )))
Этот "юнец" адекватно воспринимает советы, сам разобрался в синапроге, сам без доп. вопросов нашёл дудку и адекватно принял неудачу и не стал обвинять других. Т.ч. Он повзрослее некоторых будет, а опыт и знания придут со временем. Тут как в анекдоте про"а у Вас ноги кривые, ужасно кривые, омерзительно кривые, а я завтра трезвым буду" :)
оно и видно, теперь ему предстоит сдуть камень бежать в любой сервисный центр и там фитоновским программатором залить прошивку...
Новичкам, а он новичок, советовать что-то кроме IDE крайне неполезно, созреет, сам найдёт необходимую информацию
нано лучше, там только один чип....
нано лучше, там только один чип....
или китайская UNO )))
Получилось как в азбуке - "многие знания многие печали"
он не прошивает фюзы. А они для работы в качестве конвертера - другие.
а можно подробнее, какие "другие" фьюзы требуются для работы в качестве конвертера. Другие по отношению к чему?
Ну как минимум делитель на 8 и работа с кварцем(другие относительно заводских). Наверное для синхронной скорости с 328.
Собирал конвертер на AT90USB162(типа почти копия) и заливал также флипом. Не заработала пока не содрал фюзы у оригинальной UNO и не залил в этот.
как-то картинко с калькулятором фьюзов не совпадает
на APM2.6 (это mega2560) и чип 32U4 и mega2560 шьются через стандартный USB порт чипа32U4 только когда шьёшь 32U4 его надо перевести в режим программирования, замкнув перемычки
И? так же, как и 16U2 - "сам себе программатор" . Флип для этого и нужен. Чтоб без программатора, один бл.., сам бл... :)
Ну как минимум делитель на 8 и работа с кварцем
на вашей картинке в #70 делитель на 8 выключен. Может вы путаете прямые и обратные фьюзы? Обратите внимание на бит SPIEN - по нему всегда можно определить тип фьюзов, поскольку по умолчанию SPIEN всегда ON и защищен от изменения
Собственно, на вашей картинке указаны совершенно типичные фьюзы для работы от внешнего кварца. ничего специального для работы в качестве моста как-то не улавливаю... поэтому и спросил.