Как выйти из загрузочного цикла?

Примечание. Это справочный вопрос (но не стесняйтесь писать свои ответы!)


Я загрузил код, который содержит ошибку, из-за которой мой Arduino немедленно перезагружается при запуске с помощью этот код из FAQ по AVR libc. Встроенный светодиод продолжает мигать. Поскольку он постоянно перезагружается, я не могу загрузить в него свой скетч.

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

Как вывести Arduino из этого цикла загрузки, чтобы снова загружать скетчи?

, 👍4

Обсуждение

Если вы планируете отвечать на свои собственные вопросы, что является отличной идеей, полезно отметить, что это «справочный вопрос». То есть вы публикуете, чтобы помочь другим людям, а не обязательно искать ответы. Я проделывал это несколько раз, пока люди не подтолкнули меня к этому. :), @Nick Gammon

Спасибо, что предоставили эти вопросы + ответы сообществу., @Nick Gammon

Спасибо за совет @Nick, я добавил примечание ко всем своим вопросам :), @glibg10b


1 ответ


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

4
  1. Начните удерживать кнопку сброса. Это необходимо для предотвращения входа Arduino в загрузочный цикл.
  2. Отсоедините Arduino и снова подключите его.
  3. Откройте новый скетч. Удалите весь код и замените его на int main(){}. Это необходимо для создания небольшой программы, которая будет быстро загружаться.
  4. Начните загрузку скетча. Avrdude попытается загрузить скетч десять раз — при каждой попытке светодиод RX на Arduino будет кратковременно мигать.
  5. Обратите внимание, как часто мигает светодиод (у меня 0,2 Гц). Прежде чем он снова начнет мигать, отпустите кнопку сброса. У avrdude есть небольшая возможность загрузить скетч до того, как запустится Arduino. Если светодиоды TX и RX мигают, успешно!
,

Поскольку вы не указали, какой Arduino у вас есть, ответили на свой вопрос довольно быстро, и обычно в скетче нет main(), это выглядит подозрительно., @the busybee

«ответил на свой вопрос за довольно короткое время» StackExchange [поощряет это] (https://stackoverflow.blog/2011/07/01/its-ok-to-ask-and-answer-your-own-questions/). Это не сайт вопросов и ответов, это ресурс, @glibg10b

«вы не указали, какой у вас Arduino» Это не имеет значения, @glibg10b

"обычно в скетче нет main()" Все скетчи имеют [main()](https://github.com/arduino/ArduinoCore-avr/blob/master/cores/arduino/main.cpp), просто не вижу. Этот main() можно переопределить, что и происходит в моем ответе., @glibg10b

"это выглядит подозрительно" Какие подозрительные планы у меня могут быть? Мой ответ никому не причинит вреда, но может помочь некоторым людям. Я не получаю от этого никакой репутации (благодаря вам, я просто потерял ее) — я разместил ее исключительно для того, чтобы помочь другим с той же проблемой., @glibg10b

достойный ответ на плохо написанный вопрос..., @dandavis

Я только что дал тебе репутацию. Не беспокойтесь слишком о репутации. Если вы публикуете хорошие вопросы и ответы, у вас скоро будет столько репутации, что вы не будете знать, что с ней делать. ;), @Nick Gammon