Arduino Nano не отвечает, желтый светодиод быстро мигает

Обновление: я начал играть с настоящим Deumilanove, и с ним случилась точно такая же проблема - светодиод d13 мигал, но avrdude говорит, что stk500_recv(): программист не отвечает

Я загрузил большой скетч размером ~15 КБ в Arduino Nano v3.0 (клон), в результате чего плата оказалась в непригодном для использования состоянии. При подключении к USB сразу загорается светодиод питания, а через 1-2 секунды начинает очень быстро мигать желтая буква «L». Вот доска, которую я использую, это дешевый клон, но до сегодняшнего дня она работала очень хорошо.

Теперь, когда я пытаюсь загрузить новый скетч, я получаю сообщение об ошибке:

avrdude: stk500_recv(): programmer is not responding

Я попробовал сделать программатор ISP из оригинального Duemilanove, используя контакты ISP Nano, и попробовал следовать

href="http://arduino.cc/en/Tutorial/ArduinoISP">официальные инструкции (конденсаторы/резисторы не использовались). В любом случае, когда я нажимаю «Записать загрузчик», возникает одна и та же ошибка:

avrdude: stk500_getsync(): not in sync: resp=0x15

Я подключил светодиоды «отладки» к D7,8,9, и в режиме ожидания пульс затухает, а другие остаются темными. Когда я нажимаю «Записать загрузчик», все светодиоды гаснут, затем он несколько раз быстро мигает на 7, затем аналогичная картина для 8, а затем возобновляется пульс. Иногда эта последовательность повторяется дважды.

Я также пытался отредактировать файл settings.txt, чтобы обойти загрузчик, но это не помогло.

Как мне восстановить эту доску или выполнить сброс низкого уровня? Кажется, он находится в каком-то режиме отказа, колеблется контакт 13, но я не знаю, что это значит.

, 👍10

Обсуждение

Ааа, я вроде как помню, что удерживание кнопки сброса во время загрузки может разблокировать Arduino настолько, чтобы загрузить ее, но я не могу вспомнить, когда отпустить кнопку (или мне это просто кажется) ... вы уверены, что у вас есть правильный COM порт выставил и всё в IDE?, @Anonymous Penguin

Да, почти уверен, что порты правильные, потому что плата программатора по-разному мигает светодиодами, когда программное обеспечение пытается связаться с nano., @Paul

В официальных инструкциях конденсаторы не упоминаются (если только вы не используете голый чип). Можешь показать фото как ты его подключил?, @Gerben

При использовании Uno предлагается конденсатор емкостью 10 мкФ. В любом случае мне удалось восстановить платы с помощью кнопки Reset, см. мой ответ ниже. После этого я разобрал провода, поэтому на этот раз фотографий нет. Подключение было очень простым, я мог бы попробовать еще раз, как только найду новый загрузчик., @Paul

У меня та же проблема, китайская Arduino 3.0 с USB-контроллером CH340, я думал, что проблема в сбое CH340, в мое время этот Arduino такой дешевый, я решаю эту проблему, заменив всю плату, но чтобы узнать, в чем причина сбоя Я буду тестировать замену чипа CH340 на этой плате., @Pedro Alvarez


4 ответа


Лучший ответ:

11

Я успешно восстановил обе платы с помощью кнопки сброса:

  1. Выключите плату (я отключил USB-кабель от компьютера)
  2. Нажмите и удерживайте кнопку сброса
  3. Подключите USB-кабель (продолжайте удерживать кнопку сброса)
  4. Нажмите «Загрузить скетч»
  5. Подождите секунду или две, пока программное обеспечение Arduino не сообщит «Загрузка...» в строке состояния
  6. Отпустите кнопку сброса

Используйте эти шаги для загрузки любого небольшого скетча. Пример Blink — хороший выбор.

,

Меня заблокировали на этом форуме на 2 дня, вы только что спасли мою доску!, @Julien L


1

В оригинальном старом загрузчике Arduino есть ошибка, связанная со сторожевым таймером. Вы можете переключиться на другой загрузчик, например «Optiboot».

Описание проблемы из Техническое описание ATmega48A/PA/88A/PA/168A/PA/328/P, раздел 10.10.5 Сторожевой таймер, страница 48:

Если сторожевой таймер случайно включен, например, из-за выхода указателя из-под контроля или отключения питания, устройство будет сброшено, а сторожевой таймер останется включенным. Если код не настроен для работы со Watchdog, это может привести к вечному циклу сброса тайм-аута. Чтобы избежать этой ситуации, прикладное программное обеспечение должно всегда очищайте флаг сброса системы сторожевого таймера (WDRF) и бит управления WDE в процедуре инициализации, даже если Watchdog не используется.

Сброс с помощью кнопки не помогает, только сброс/включение питания позволяет устройству снова загрузиться (и прошить новое программное обеспечение) . Объяснение этого из 11.9.1 MCUSR – Регистр состояния MCU, стр. 54:

Бит 3 — WDRF: Флаг сброса сторожевой системы Этот бит устанавливается, если происходит сброс системы сторожевого таймера. Бит сбрасывается сбросом при включении питания или записью логической схемы. ноль для флага.

,

1

Используйте «upload.verbose=true» в файле preferences.txt среды разработки Arduino (Файл->Настройки-> Щелкните по файлу), это поможет вам найти подходящий момент для отпускания кнопки сброса (Шаг 5 метода Пола).

avrdude: Version 6.3, compiled on Jan 17 2017 at 12:00:53
.
.
         Using Port                    : COM19
         Using Programmer              : arduino
         Overriding Baud Rate          : 57600
release here ^^^^
,

1

Попробуйте изменить тип процессора на ATmega328 (старый загрузчик) в Tools->Processor. Моя плата Nano мигала светодиодом, как будто у нее был загрузчик, но я не мог загрузить скетч, и это помогло.

,