Можно ли ускорить загрузку Arduino

rusik-r2d2
Offline
Зарегистрирован: 13.10.2013

Добрый день.

Сделал "проект" на Arduino micro (оригинал) - регулятор яркости светодиодов двухканальный с экранчиком. Регурировка производится энкодерами.

Но между подачей питания и началом работы проходит 3-5секунд (не мерял точно, но как-то долго)

Можно как-то ускорить загрузку? С чем это вообще связано?

axill
Offline
Зарегистрирован: 05.09.2011

немного ускорить можно если заменить штатный загрузчик на optiboot

остальное зависит от вашего скетча

а в чем проблема с задержкой? на что влияет?

std
Offline
Зарегистрирован: 05.01.2012

4 с ждёт загрузчик.

Если есть вторая плата, можно сделать ArduinoISP программатор. Дорого но зато с ним даже ребёнок управится.

Если есть Atmega8A (не Atmega8L), можно сделать USBASP программатор. Геморрой (кварц на 12, стабилитроны, прошивать надо из командной строки), приколы (мой почему-то отказывается прошивать если нажать кнопку позже двух минут как вставил в USB, не прошивает во второй раз - надо выдернуть и снова воткнуть), зато дешёвый и пишет быстро (быстрее 57600).

Прошивание скетча программатором исключает задержку вообще.

axill
Offline
Зарегистрирован: 05.09.2011

std пишет:

Прошивание скетча программатором исключает задержку вообще.

ну тогда уж не только прошивать програматором нужно, но еще и загрузкчик фьюзами отключить

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

rusik-r2d2 пишет:

Можно как-то ускорить загрузку? С чем это вообще связано?

Это связано с загрузчиком (bootloader) ардуино, который позволяет загружать скетчи через USB-UART переходник. У него такой принцип работы - после подачи питания загрузчик некоторое время ждёт данных от USB-UART переходника. Если ничего не приходит, то только после этого он передаёт управление ранее загруженной программе. Поэтому и ожидание в несколько секунд.  Чтобы ваша программа начала работать сразу после подачи питания, нужно убрать загрузчик. Для этого надо прошивать ардуино не через USB-UART переходник, а с помощью программатора, например USBasp.

UPD: А стоп... Попутал Arduino Micro c Arduino Pro Mini. Если у вас именно Micro с МК ATmega32u4, то там нет переходника. Втыкается напрямую в USB. Но в любом случае придётся отказаться от загрузки скетчей по USB и прошивать ардуину программатором.

axill пишет:

но еще и загрузкчик фьюзами отключить

Чего?... Ведь достаточно прошить программатором и загрузчик автоматически затрётся.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Затрётся если вы загрузите большой код и залезете по его адресам.

axill
Offline
Зарегистрирован: 05.09.2011

Если фьюзами не выключить загрузчик то старт программы может быть не с тех адресов, лучше отключить

но кстати если просто поставить optiboot все будет намного быстрее и прошивать можно будет как и раньше

Jeka_M
Jeka_M аватар
Offline
Зарегистрирован: 06.07.2014

axill пишет:

Если фьюзами не выключить загрузчик то старт программы может быть не с тех адресов, лучше отключить

Эм... Пните меня в нужную сторону, какими фьюзами управляется загрузчик? Честно говоря, в первый раз слышу.

trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011
rusik-r2d2
Offline
Зарегистрирован: 13.10.2013
Итого два варианта: 
 
Загрузчик optiboot, но как я понял, это сократит время загрузки, но не сильно
 
Загрузить все через программатор. Это быстрее, но потом нельзя будет пользоваться стандартным загрузчиком.
 
 
Второй вариант получается еще быстрее?
Можно ли будет прошивать "обычные" скетчи из ArduinoIDE? или их придется как-то переделывать?
Что еще требуется для этого?
 
trembo
trembo аватар
Offline
Зарегистрирован: 08.04.2011

Загрузить с помощью программатора. Выбрать программатор USBASP, да, прошивать можно обычные скетчи.

Если исправить(добавить) плату в boards.txt то можно будет использовать всю память программ по максимуму.

А если  снова " Записать загрузчик" то можно вернуться к нормальной загрузке по компорту.