Нажатие кнопки сброса перезапускает программу всего через несколько секунд.

Мне интересно, почему после нажатия кнопки сброса на моем Arduino последняя загруженная программа запускается, но только примерно через 5 секунд. То же самое происходит, когда я запускаю Arduino с компьютера с помощью программного обеспечения Arduino 1.6.9.

Есть ли способ сократить эту задержку?

Спасибо, ЕСЛИ

, 👍0

Обсуждение

(1) Может ли «около 5 секунд» быть всего лишь секундой или двумя? То есть вы задержку мерили часами или просто прикинули навскидку? (2) Если это происходит только с одним эскизом, отредактируйте свой вопрос, включив в него [Минимальную, полную и проверяемую](http://stackoverflow.com/help/mcve) копию эскиза, чтобы мы могли идентифицировать программирование. ошибка, которая вызывает проблему. (3) Если это происходит с несколькими разными несвязанными эскизами, отредактируйте свой вопрос, включив в него их список., @James Waldby - jwpat7

Несколько секунд кажутся нормальными, и я не думаю, что вы сможете сократить это время. Если вы объясните, почему вы хотите, чтобы это было быстрее, кто-то может предложить гораздо более быструю альтернативу., @Code Gorilla

Загрузчик должен поработать несколько секунд, прежде чем запустится ваш скетч. Если вы этого не хотите, удалите загрузчик и используйте аппаратный программатор., @Majenko


2 ответа


3

Первое, что происходит, когда вы подаете питание на плату или нажимаете кнопку сброса, — запускается загрузчик. Требуется некоторое время, чтобы принять новый скетч через последовательный порт. Если ничего не поступает, он завершает работу и выполняет существующий скетч.

На Uno эта задержка составляет всего 2 секунды. Однако на Leonardo задержка намного больше (около 5-8 секунд) из-за того, как реализован последовательный порт: он должен дать главному компьютеру время для повторного определения USB-устройства после перезагрузки, а это занимает секунду. или два.

Если вы не хотите такой задержки, вам нужно будет удалить загрузчик (т. е. игнорировать его) и запрограммировать плату с помощью аппаратного программатора и контактов ICSP (что отключит загрузчик за вас). Однако вы теряете удобство программирования через USB-соединение.

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

,

0

Столкнувшись с той же проблемой, я недавно обнаружил, что Leonardo/Micro сразу переходит к пользовательскому приложению при включении питания, либо путем вставки USB-кабеля, подключенного к зарядному устройству мобильного телефона, т.е. питания только через USB, либо путем подключения внешнего питание через вход питания RAW. Итак, если вам нужен быстрый перезапуск после сброса, просто отключите и снова подключите источник питания.

,