Как на Arduino Nano убрать секундную задержку при загрузке?
- Войдите на сайт для отправки комментариев
Втр, 28/01/2020 - 10:09
Всем доброго дня.
Была у меня задача одна по установке ардуинки в пром.автоматику на 3 прибора. Два Я реализовал на Arduino Pro Mini.
Но из-за того, что загрузчик долго грузился, мне пришлось прошить его на Optiboot от Uno.
Теперь загрузка происходит мгновенно и светодиод (оставил моргалку светодиода для проверки) наинает моргать сразу.
Но так как у третьей Pro Mini у меня нет, собрал на Nano, прошил так же Optiboot по тому же алгоритму.
Но Nano все равно имеет секундную задержку! В чем может быть проблема?
Залейте скетч без загрузчика.
А это как сделать? Не подскажете?
Для этого нужен программатор (напр. USBasp) или ещё одна ардуина (Arduino as ISP).
Arduino IDE: "Скетч" -- "Загрузить через программатор"
Спасибо за совет, но при этом загрузчик сотрется? Или его отдельно стирать надо?
Сотрётся
Сотрётся
Вот здесь вот под вопросом. Если программатору "скормить" *.hex по размеру не превышающий флеш=прошивка+бутлоадер --- то бутлоадер не сотрётся.
В чем может быть проблема?
Загрузчик ждёт команду, поэтому задержка.
Лечение --- убери фьюз = BootRst и проц не будет "нырять" в бутлоадер. При этом бут точно не сотрёццО.
Вот здесь вот под вопросом. Если программатору "скормить" *.hex по размеру не превышающий флеш=прошивка+бутлоадер --- то бутлоадер не сотрётся.
Нет никакого вопроса. Если программатору скормить *.hex , не содержащий бутлоадер - сотрется в любом случае. А если в *.hex есть и прошивка и бут - то запишется обратно. Так, собственно, его и восстанавливают.
Тогда у меня вопросы:
1. Почему в Pro Mini проц не ныряет в бутлоадер, а в Nano ныряет?
2. И после изменения этого фьюза я так же могу заливать прошивку через IDE стандартно по COM или только программатором?
3. Выставить фьюз можно только сторонней программой? Какой?
1. Почему в Pro Mini проц не ныряет в бутлоадер, а в Nano ныряет?
Ныряет, просто бутлоадеры разные. У них разное время ожидания после подачи питания.
2. И после изменения этого фьюза я так же могу заливать прошивку через IDE стандартно по COM или только программатором?
Нет, только программатором.
3. Выставить фьюз можно только сторонней программой? Какой?
https://www.google.com/search?q=avr+фьюзы
1. Почему в Pro Mini проц не ныряет в бутлоадер, а в Nano ныряет?
Ныряет, просто бутлоадеры разные. У них разное время ожидания после подачи питания.
2. И после изменения этого фьюза я так же могу заливать прошивку через IDE стандартно по COM или только программатором?
Нет, только программатором.
3. Выставить фьюз можно только сторонней программой? Какой?
https://www.google.com/search?q=avr+фьюзы
Тогда мне совсем непонятно, почему я Pro Mini перешил загрузчик и он стартует сразу, а Nano прошил этим же загрузчиком, он запускается с секундной задержкой? Что то еще в них отличается? Фьюзы вроде все одинаковые, согласно описаний.
Тогда мне совсем непонятно, почему я Pro Mini перешил загрузчик и он стартует сразу, а Nano прошил этим же загрузчиком, он запускается с секундной задержкой? Что то еще в них отличается? Фьюзы вроде все одинаковые, согласно описаний.
в про мини нет USB если я не путаю. Зачем ей вообще хагрузчик, вы как ее прошиваете?
Тогда мне совсем непонятно, почему я Pro Mini перешил загрузчик и он стартует сразу, а Nano прошил этим же загрузчиком, он запускается с секундной задержкой? Что то еще в них отличается? Фьюзы вроде все одинаковые, согласно описаний.
каким образом ты "перешил" загрузчик в ProMini, каким - в Нано? Подробно опиши свои действия.
Тогда мне совсем непонятно, почему я Pro Mini перешил загрузчик и он стартует сразу, а Nano прошил этим же загрузчиком, он запускается с секундной задержкой? Что то еще в них отличается? Фьюзы вроде все одинаковые, согласно описаний.
в про мини нет USB если я не путаю. Зачем ей вообще хагрузчик, вы как ее прошиваете?
Я прошиваю через переходник UART-USB
Тогда мне совсем непонятно, почему я Pro Mini перешил загрузчик и он стартует сразу, а Nano прошил этим же загрузчиком, он запускается с секундной задержкой? Что то еще в них отличается? Фьюзы вроде все одинаковые, согласно описаний.
каким образом ты "перешил" загрузчик в ProMini, каким - в Нано? Подробно опиши свои действия.
Я из одного нано сделал программатор. Т.е. В Nano зашил скетч ArduinoISP. Далее соединил по схемке и в IDE перезаписал загрузчик на всторой Nano и на Pro Mini. Теперь и Nano и Pro Mini загружают скетчи как Uno.
На сколько мне известно, в UNO стоит загрузчик Optoboot. Он загружает мнгновенно.
Я из одного нано сделал программатор. Т.е. В Nano зашил скетч ArduinoISP. Далее соединил по схемке и в IDE перезаписал загрузчик на всторой Nano и на Pro Mini. Теперь и Nano и Pro Mini загружают скетчи как Uno.
На сколько мне известно, в UNO стоит загрузчик Optoboot. Он загружает мнгновенно.
Оптибут определяет отсутствие попытки программирования по ошибке UART "фрейминг еррор" если она есть - перестает ждать. Если её нет - ждет секунду. Особенность схемотехники Нано (в отличии от Уно и Меги) иногда приводит к вот таким результатам.
-----------------
Отдельно дам совет, пусть и непрошеный: запись через загрузчик специально придумана для удобства создания макетов и для отладки. В готовое изделие записывай код через ISP, без загрузчика. Тогда МК будет стартовать мгновенно и надежно.
Я из одного нано сделал программатор. Т.е. В Nano зашил скетч ArduinoISP. Далее соединил по схемке и в IDE перезаписал загрузчик на всторой Nano и на Pro Mini. Теперь и Nano и Pro Mini загружают скетчи как Uno.
На сколько мне известно, в UNO стоит загрузчик Optoboot. Он загружает мнгновенно.
Оптибут определяет отсутствие попытки программирования по ошибке UART "фрейминг еррор" если она есть - перестает ждать. Если её нет - ждет секунду. Особенность схемотехники Нано (в отличии от Уно и Меги) иногда приводит к вот таким результатам.
-----------------
Отдельно дам совет, пусть и непрошеный: запись через загрузчик специально придумана для удобства создания макетов и для отладки. В готовое изделие записывай код через ISP, без загрузчика. Тогда МК будет стартовать мгновенно и надежно.
Я уже выпаивал USB адаптер с Nano, в надежде, что будет стартовать быстрее. Нифига, задержка такая же.
В чем все-таки их различия? Процы то одинаковые!
Значит проц на Nano как то "нюхает" присутствие UART, даже без микросхемы CH340G. Возможно подтяжка на какой то вывод дает процу понять, что есть UART адаптер. Как думаете?
USB-коннекторы на моей памяти с ардуин ещё не сдавали для ускорения.
Какие же, все-таки затейники - эти ардуинщики.
Я так и сделал. Ваш способ работает. Именно так я скорее всего и решу свою проблему. Но хочется понять истину, в чем все-таки различия.
ты производишь впечатление любознательного и подготовленного новичка. Измерь тестером сопротивление от контакта на CH340 и МК до разъема на плате TX и RX у Нано и Уно. Посмотри схему того и другого.
Заодно (бонусом) и получишь ответ, почему Уно и Мега (даже те, что на CH340) могут работать в режиме USB-UART при замыкании Reset на GND, а Нано - не может.
Разница только в цепи контактов UART. Ты правильно понимаешь, что сами МК и их настройки - одинаковы.
Нет никакого вопроса. Если программатору скормить *.hex , не содержащий бутлоадер - сотрется в любом случае. А если в *.hex есть и прошивка и бут - то запишется обратно. Так, собственно, его и восстанавливают.
Тааакс, те иными словами аврки не поддерживают перезапись а поддерживают только стирание+запись? Правильно я понимаю?
Тогда мне непонятен один момент: у меня есть самые первые дурдуины от 8 до 2560 замученные в хвост и гриву много мильёнов раз, некоторые даже уже не пишутся правильно. Перешивались они всякими разными программаторами втч и китайскими стока же мильёнов раз. Но если мне надо мой бутлоадер (а он самописный, в инете его нет) - я беру любую дурдуину и тупо сливаю всю флешь с камня на камень. Внимание вопрос: как выживает бутлоадер???
там пару резисторов сдуть надо было, как мне кажется )))
Сейчас начнут пытать, а что за нано у ТС (на вкус все одуванчики разные)
ты производишь впечатление любознательного и подготовленного новичка. Измерь тестером сопротивление от контакта на CH340 и МК до разъема на плате TX и RX у Нано и Уно. Посмотри схему того и другого.
Заодно (бонусом) и получишь ответ, почему Уно и Мега (даже те, что на CH340) могут работать в режиме USB-UART при замыкании Reset на GND, а Нано - не может.
Разница только в цепи контактов UART. Ты правильно понимаешь, что сами МК и их настройки - одинаковы.
В общем разобрался в чем проблема.
Оказывается в Pro Mini введены сигналы Rx, Tx и DTR. На самой ардуинке сигнал DTR идет через конденсатор на Reset. И когда мы подключаем внешний адаптер USB-TTL, сам адаптер делает сброс ардуинки и бутится. Далее происходит заливка скетча.
В Nano схемотехника та же. И так же сигнал DTR подключен к встроенному адаптеру USB-TTL. Но при подключении питания, сам адаптер начинает дергать этот сигнал DTR на минус, тем самым не давая ардуинке запустится в течении 1сек.
В качестве эксеримента, я отсоединил этот конденсатор (по схеме C4) и Nano начала мгновенно запускаться!
Если кому нужно будет ускорять закгузку ардуино Nano, как мне, можете менять бут на UNO и удалять конденсатор или обрезать дорожку, идущую от него на ресет.
Всем спасибо за активное участие!
P.S.: Хотел прикрепить схемы Nano и Pro Mini, но не нашел, как прикреплять файлы.
Усё хорошо, "прекрасная маркиза", но, порезав ногу Reset у тебя не будут грузиццо скетчи? Кагбыть?
Усё хорошо, "прекрасная маркиза", но, порезав ногу Reset у тебя не будут грузиццо скетчи? Кагбыть?
Это понятно. В моем случае, когда не хватает ардуинок, а Китай во всю празднует Новый год и не хочет отправлять новую партию, это самое оптимальное решение. Не надо ардуину замораживать под программатор.
В моем случае, когда не хватает ардуинок
Так надо не конденсаторы резать, а менять поход к комплектованию. Я, вот, например, самые ходовые детали (МК, некоторые микросхемы, резисторы, конденсаторы и т.п.) дозакупаю новые полсотни-сотню, когда в загашнике ещё остаётся десяток-два. В результате - никогда не кончаются :-) Очень рекомендую.