Как загрузить скетч без загрузчика, используя в качестве программатора другой ардуино?
Примечание. Это справочный вопрос (но не стесняйтесь писать свои ответы!)
Мой Arduino слишком долго загружается, мне нужно использовать пространство, занимаемое загрузчиком, и я не хочу, чтобы в результате отключения счетчик программ переместился в код загрузчика, что может привести к моему код поврежден.
Я подумывал о покупке программатора Arduino, но поскольку у меня уже есть Uno, который ничего не делает, я бы предпочел использовать его как программатор.
Я нашел несколько руководств в Интернете, но в большинстве из них упущены важные детали и они недостаточно конкретны.
Итак, как я могу загрузить скетч без загрузчика, используя в качестве программатора другую Arduino?
@glibg10b, 👍0
Обсуждение1 ответ
Лучший ответ:
В Интернете есть несколько руководств, объясняющих, как это сделать, но я обнаружил, что большинство из них содержат слишком много двусмысленности или оставляют важные детали вне. Это моя попытка написать краткое, но полное руководство, которое легко понять. следовать.
Предпосылки
- Плата, на которой будет выполняться ваш скетч
- Плата, которая будет действовать как программатор (он же "ISP")
- 7 проводов
- Любой небольшой конденсатор
Шаги
Программирование программатора
Во-первых, вам необходимо загрузить скетч ArduinoISP в программатор. Вот как:
- В Arduino IDE нажмите Alt+F и откройте Примеры -> 11.ArduinoISP -> ArduinoISP.
- Подключите плату программатора (USB).
- Нажмите Alt+T и установите "Плата" своему программатору тип платы и "Порт" к последовательному порту вашей платы программатора.
- Нажмите Ctrl+U, чтобы загрузить скетч в программатор.
Соединение плат
Затем вам нужно подключить программатор к плате, которая будет запускать ваш скетч.
- Отсоедините плату программатора. Это необходимо для предотвращения случайного короткого замыкания.
- Подключите контакты GND, 10, MOSI, MISO, SCK и 5V программатора к контактам GND, RESET, MOSI, MISO, SCK и 5V платы, на которой будет работать ваш скетч соответственно. Контакты MOSI, MISO и SCK соответствуют контактам 11, 12 и 13 соответственно на Uno и Nano. Обратитесь к техническому описанию вашей платы, если вы не уверены.
- Подключите конденсатор между контактами 5V и RESET на плате программатора. Этот заключается в том, чтобы предотвратить его автоматический сброс во время программирования.
- Подключите плату программатора. Вам никогда не придется подключать плату, которая запустит ваш скетч.
Загрузка скетча
Порядок этих шагов важен из-за ошибки в Arduino IDE.
- Нажмите Alt+T и установите "Плата" на плату, которая будет работать тип вашего скетча, "Порт" к последовательному порту вашей платы программатора и "Программатор" на «Arduino как ISP».
- Откройте скетч, который хотите загрузить.
- Нажмите Ctrl+Shift+U, чтобы загрузить скетч с помощью программатора.
Устранение неполадок
Если что-то пошло не так, нажмите Ctrl+, и включите подробные сведения "сборник" и "загрузить" и повторите шаг, который пошёл не так. Ищите эти сообщения об ошибках:
avrdude: stk500_recv(): программатор не отвечает
За этим следует что-то похожее на:
avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp=0x00
avrdude: stk500_getsync() attempt 2 of 10: not in sync: resp=0xe0
Удалите конденсатор перед загрузкой скетча на плату программатора.
avrdude: Ого! Недопустимая подпись устройства.
Прокрутите вверх и скопируйте строку, похожую на следующую:
...avrdude -C...avrdude.conf -v -V -p... -c... -P... -b... -Uflash:w:....hex:i
Вставьте его в терминал и добавьте -F
в конец. Вы можете повторно использовать эту команду
каждый раз, когда вы загружаете один и тот же скетч.
Кажется, загрузка прошла успешно, но мой скетч по-прежнему работает с тем же кодом!
Если плата, на которой работает тактовая частота ЦП вашего скетча, медленнее 1 МГц (например,
sketch изменяет прескалер процессора), вам нужно изменить (1000000/6)
в
Скетч ArduinoISP на что-то более медленное и перезагрузите скетч на свой
программатор.
- Как записать загрузчик с помощью произвольных Fuses
- Как записать загрузчик?
- Не удается снова загрузиться после смены платы
- Разница в загрузчике Arduino Nano ATmega328P
- Почему я получаю avrdude: stk500v2_ReceiveMessage(): timeout error when uploading to Arduino Mega?
- Тайм-аут связи Arduino Mega с ошибкой программатора
- Arduino Nano не отвечает, желтый светодиод быстро мигает
- ESP32-CAM первый: 0x8 TG1WDT_SYS_RESET загрузочный цикл
запись в блоге 10-летней давности о другом стеке может быть здесь не так актуальна, как предполагалось. Конечно, SO хочет любой бесплатный контент, но пользователи? У меня нет проблем с этим, но вам, вероятно, следует сделать ваши «вопросы» более подходящими для обычного формата; для этого отсутствует часть «что вы пробовали», что делает это усилие больше похожим на ловлю очков, чем на полезную комбинацию вопросов и ответов. Ваша информация хорошо изложена, а ваши намерения хорошо продуманы, но вам, вероятно, следует уделить немного больше внимания правилам, условностям и ожиданиям. Если вы усложните вопрос, я сделаю УФ..., @dandavis
@dandavis Я расширил этот вопрос и другой. Я переписал их в более манере с просьбой о помощи и добавил вещи, которые могли быть опробованы целевой аудиторией вопросов. Хорошо ли они выглядят сейчас?, @glibg10b
@dandavis Справочные вопросы — это прекрасно. Мы ожидаем, что люди будут вносить свой вклад в сообщество, что, похоже, и делает glibg10b. Давайте попробуем поощрять новых участников., @Nick Gammon