Связь Arduino прервана, предотвращает загрузку программы (catch 22)

Я написал некоторое программное обеспечение, которое при загрузке на Arduino Micro по какой-то причине блокирует связь. Давайте оговоримся, что с этим что-то не так.

Используя Ardiono IDE в Windows 10 и (через Интернет) дважды нажимая кнопку сброса платы в течение 5 секунд после включения питания, затем (диспетчер устройств) на 2 секунды появляется порт связи, предположительно под управлением программы начальной загрузки микроконтроллера.

В среде IDE вы можете выбрать только существующий порт связи. Как и выше, порт связи появляется на 2 секунды.

Кнопка загрузить вызывает компиляцию и загрузку на порт связи - обычно это занимает 8 секунд.

Таким образом, заменить программу duff можно только путем выбора кратковременно доступного порта связи, компиляции и загрузки на него, что занимает больше времени, чем окно доступности порта.

И поэтому замена кода duff чем-либо невозможна. Я что-то здесь пропустил? Есть ли у кого-нибудь какой-нибудь "аварийный" код, который ожидает появления порта и немедленно загружает что-то безобидное?

Кстати, ограничение тегов не позволяет мне использовать значимые теги.

, 👍1

Обсуждение

попробуйте это: в настройках включите подробный вывод для загрузки. пока плата пытается выполнить загрузку и не может найти нужный порт, перезагрузите плату. возможно, он вернет порт на тот, который указан в меню Сервис, и начнется загрузка, @Juraj

Это было очень интересно. Я сделал, как вы сказали, это не удалось, но затем в нижней части экрана появилось сообщение с символом бесконечности / диполя Arduino, в котором говорилось "загрузить для использования ...". Я так и сделал, дал ему запуститься, и затем он запустился, найдя новый порт связи, @NeilS


1 ответ


1

Я бы предложил:

  1. Включите подробную компиляцию в среде IDE.
  2. Настройте так, как вы были с выбранным правильным портом, и перейдите к загрузке - она завершится с ошибкой, как обычно
  3. Найдите команду avrdude в подробном выводе и скопируйте полную команду и ее параметры
  4. Откройте командную строку или окно терминала и вставьте скопированную вами команду (но пока не запускайте ее).
  5. Дважды нажмите кнопку reset, чтобы запустить создание последовательного порта
  6. Запустите вставленную вами команду. Он должен немедленно начать загрузку и "исправить" вашу проблему.
,

Спасибо за ваш ответ, как и в моем предыдущем ответе. Запустив новую подробную загрузку, все заработало немедленно, и операции выглядели очень похоже на то, что вы описали выше. Я думаю, что кто-то из Arduino прислал мне это изменение кода, которое было просто работой. Спасибо всем!, @NeilS