Программатор из arduino uno: Использование Arduino UNO в качестве программатора / Хабр
|Содержание
Универсальный мини программатор из Ардуино Uno своими руками, прошивка ArduinoISP
Какое-то время у меня валялась Arduino Uno. И вот нашлось ей применение. Сделал удобный шилд для прошивки ходовых контроллеров в разных корпусах. Теперь данная отладочная плата активно используется. Шилд позволяет прошивать довольно много контроллеров от ATMEL, которые все еще популярны среди самодельщиков по многим параметрам. Итак, под катом изготовление шилда для прошивки микроконтроллеров Atmega8 (168/328), Attiny13(45/85), причем, как в DIP корпусах, так и в QFP и SOIC, используя адаптеры.
Ссылку я дал на похожую отладочную плату Arduini Uno, поскольку уже и не помню где брал свою. Моя платка с закосом под оргинал (конечно же это копия — поскольку брал в Китае):
Собственно, тут уже было немало обзоров на эту плату, поэтому перейдем сразу к шилду.
Схема шилда, довольно простая:
Конденсатор C4 позволяет не перезагружаться самой Arduino Uno во время прошивки, без него такое бывает и прошить не удается. На схеме видно два разъема для подключения контроллеров в корпусах dip28 и dip8. Для dip28 предусмотрен кварц с конденсаторами С2 и С3. Также на плате предусмотрен стандартный разъем ICSP для подключения, например, своих плат и их прошивки. Как и при типовом использовании, вывод 10 Arduino соединен с RESET программируемых контроллеров. Выводы 11, 12,13, представляющие ICSP соединены с аналогичными на подключаемых микроконтроллерах. На подключаемые контроллеры подается питание и земля от Arduino Uno. К выводам Arduino 7,8,9 через токоограничительные резисторы в 1КОм подключены индикационные светодиоды. Наш шилд позволит прошивать популярные контроллеры: Atmega8 (168/328), Attiny13(45/85), причем, как в DIP корпусах, так и в QFP и SOIC, используя адаптеры.
Платка получилась такая:
Желающие могут скачать файл платы, в формате для Sprint Layout. Также можно скачать готовые для заказа в Китае (или на местном производстве) gerber-файлы.
На плате видны две версии отверстий для dip28 в узком и широком корпусе, это сделано для подключения адаптера QFP32 в DIP28, обзор которого я делал здесь. Кроме того, если припаять разъем для узкой версии контроллера, то в отверстия для широкой версии можно припаять линейки штырьков и сразу тестировать прошитый контроллер. Для dip8 я также предусмотрел, помимо адаптера, отверстия для штырьков. Также имеются две версии ICSP разъемов широкий (10 контактов) и узкий (6 контактов), ну и все остальные детали, присутствующие на схеме. Светодиоды, резисторы и конденсаторы (22пФ) я использовал SMD 1206. Светодиоды распределил так: Зеленый — READY, Красный — ERROR, Желтый — PROG. Также предусмотрел штырьки для дополнительного питания и земли, которые могут потребоваться при тестировании прошиваемого контроллера.
Платы я заказывал в dirtypcbs.com, скорее всего я бы изготовил их ЛУТ-ом, но данный сервис разрешает панелизацию, а у меня как раз нашлось подходящее место на плате в заказе, да и спешки особой не было. Заводская плата выглядит все-таки гораздо лучше. Вот так они выглядят:
Припаиваем детали, я изготовил 2 версии, для широкого dip28:
Здесь я не стал припаивать штырьки и разъемы, так как планирую эту плату использовать для прошивки контроллеров с помощью адаптеров в корпусах SOIC и QFP.
Для узкого dip28:
Как видно из фото, для подключения микросхем в dip корпусах я использовал цанговые разъемы, мне они нравятся больше.
Адаптер QFP32 в DIP28 для подключения в широкую версию шилда:
Встает отлично:
Весь бутерброд, включая Arduino Uno:
Для узкой версии со вставленным контроллером ATtiny85:
Для прошивки контроллеров в SOIC8 корпусе я использую также адаптер:
Для того чтобы наша конструкция стала программатором, следует без шилда загрузить в Arduino Uno прошивку ArduinoISP, идущую в комплекте с любой версией Arduino IDE:
С таким шилдом стало очень удобно и быстро прошивать и тестировать контроллеры в различных корпусах, не боясь нарушить соединения как здесь:
Пример загрузки программы мигания диодом с помощью шилда и проверка его работы на месте:
com/embed/n1VRBJn386M?autoplay=0&hl=ru_RU&rel=0″ frameborder=»0″ allowfullscreen=»»>
На этом заканчиваю. Спасибо всем, кто дочитал до конца! Надеюсь, что кому-то приведенная информация окажется полезной. Всех со странным праздником: Старым Новым Годом!
Про Ардуино и не только: Arduino as ISP
Arduino as ISP — программатор из Ардуино
Есть у меня пара идей для будущих публикаций, но в них будет использоваться программатор. Поэтому сегодня я расскажу о том, как превратить Ардуино в ISP программатор, для чего он нужен и как им пользоваться. А в качестве примера будет описана процедура прошивки загрузчика в Ардуино.
Что такое ISP?
ISP (In-System Programming) расшифровывается как внутрисхемное программирование. Это технология, которая позволяет программировать микроконтроллер, установленный в устройство. До появления этой технологии микроконтроллеры программировались перед установкой в устройство, а для их перепрограммирования требовалось их извлечение из устройства.
Существует 2 основных подхода внутрисхемного программирования:
- С использованием программатора. В этом случае программатор работает напрямую с памятью микроконтроллера, самостоятельно размещая байты прошивки по нужным адресам. Микроконтроллер в этом процессе не участвует.
- С использованием загрузчика. Загрузчик, он же бутлоадер (от английского bootloader) — это программа, записанная обычно в конце ПЗУ микроконтроллера, которая берет на себя функции программатора. При включении микроконтроллера управление сначала передается загрузчику. Он проверяет наличие определенных условий, сообщающих о необходимости перейти в режим программирования. Если условия не выполнены, то управление передается основной программе, в противном случае загрузчик принимает данные по заранее определенному интерфейсу и размещает их в ПЗУ. Таким образом микроконтроллер перепрограммирует сам себя.
Одной из важнейших особенностей Ардуино является возможность программирования непосредственно через USB порт, без дополнительного программатора. Сразу после включения Ардуино запускается загрузчик, который работает несколько секунд. Если за это время загрузчик получает команду программирования от IDE по последовательному интерфейсу UART, то он принимает и загружает новую программу в память микроконтроллера.
Использование загрузчика существенно упрощает процесс перепрограммирования микроконтроллера, что особенно полезно при отладке. Но за удобство приходится платить. Во-первых, загрузчик занимает часть ПЗУ и для программы пользователя остается меньший объем памяти. Во-вторых, загрузчик не может изменить Fuse-биты и Lock-биты (в отличие от программаторов). Ну и, конечно, не обойтись без программатора, если вы хотите обновить бутлоадер или загрузить его в чистый МК. Таким образом существует ряд задач, которые могут быть выполнены только с использованием программатора. Если же у вас нет аппаратного программатора, то вместо него можно воспользоваться Ардуино, о чем и будет рассказано дальше.
Arduino as ISP. Прошивка загрузчика в Ардуино.
Итак, мы решили превратить Ардуино в программатор. Для примера попробуем прошить загрузчик в целевую плату Ардуино. Сначала подготовим плату, которую будем использовать в качестве программатора. Для этого загрузим в нее скетч ArduinoISP, его можно найти в стандартных примерах:
Теперь подсоединим к ней плату, в которую хотим прошить загрузчик. При прошивке используются линии SPI (Serial Peripheral Interface — последовательный периферийный интерфейс). Выводы MOSI, MISO и SCK обеих плат должны быть соединены, а вывод SS Ардуино-программатора подключается к выводу Reset целевой платы. И еще 2 провода нужны чтобы запитать целевую плату. Также может потребоваться предотвратить автоматическую перезагрузку платы-программатора, для этого между ее выводами Reset и GND нужно установить электролитический конденсатор на 10мкФ. Сначала можно попробовать без конденсатора, если же прошивка не начнется, то попробуйте добавить в схему конденсатор. По моим наблюдениям конденсатор нужен при использовании дешевых Ардуино-клонов (без контроллера ATmega8u2) в качестве программатора.
Если мы работаем с двумя платами Arduino Uno, то схема их подключения может выглядеть следующим образом:
Если используются не Uno, а другие платы Ардуино, то перед подключением программатора к целевой плате необходимо уточнить расположение на них выводов MOSI, MISO и SCK. Их расположение для различных плат приведено ниже в таблице. Как вы можете видеть, не на всех платах Ардуино линии SPI мультиплексированны с цифровыми выводами, поэтому для подключения к данному интерфейсу необходимо использовать разъем ICSP. Ниже показан пример подключения Uno в качестве программатора к плате Nano через ICSP разъем.
Плата Ардуино | MOSI | MISO | SCK | Уровень |
---|---|---|---|---|
Uno, Duemilanove | 11 или ICSP-4 | 12 или ICSP-1 | 13 или ICSP-3 | 5В |
Nano | 11 или ICSP-4 | 12 или ICSP-1 | 13 или ICSP-3 | 5В |
Pro Mini | 11 | 12 | 13 | 3. 3В или 5В |
Mega1280, Mega2560 | 51 или ICSP-4 | 50 или ICSP-1 | 52 или ICSP-3 | 5В |
Leonardo | ICSP-4 | ICSP-1 | ICSP-3 | 5В |
Due | ICSP-4 | ICSP-1 | ICSP-3 | 3.3В |
Zero | ICSP-4 | ICSP-1 | ICSP-3 | 3.3В |
101 | 11 или ICSP-4 | 12 или ICSP-1 | 13 или ICSP-3 | 3.3В |
Подключение Uno в качестве программатора к плате Nano через ICSP |
Обратите внимание на нумерацию выводов ICSP платы Nano: она начинается с правого нижнего угла. Поэтому на приведенной схеме Arduino Nano перевернута.
Теперь необходимо вернуться в Arduino IDE и изменить в ней параметры:
- В меню Инструменты > Плата выбираем вариант, соответствующий нашей целевой плате.
- В меню Инструменты > Программатор выбираем Arduino as ISP.
Подключаем плату-программатор к компьютеру, открытый в данный момент скетч значения не имеет, выбираем пункт меню Инструменты > Записать загрузчик и дожидаемся сообщения об успешном завершении операции. На этом прошивка бутлоадера в Ардуино завершена. Кроме того процедура прошивки бутлоадера включает в себя установку фьюзов микроконтроллера. Подробнее о фьюзах будет рассказано в следующей публикации.
Резюмируя вышеописанное, выделим основные шаги для прошивки загрузчика с использованием Ардуино в качестве ISP программатора:
- Запускаем Arduino IDE, открываем из примеров скетч ArduinoISP и загружаем его в плату Ардуино, которую будем использовать как программатор.
- Подключаем к Ардуино-программатору целевую плату по приведенной схеме.
- Меняем плату в Arduino IDE на целевую.
- Выбираем в IDE программатор Arduino as ISP.
- Записываем загрузчик в целевую плату командой из меню IDE.
Прошивка скетча с использованием Arduino as ISP
Еще один пример использования программатора — это загрузка скетча в целевую плату. Разумеется, это проще сделать привычным способом, подключив ее напрямую к компьютеру, но это может оказаться невозможным, например, при выходе из строя контроллера ATmega8u2/ATmega16u2 или преобразователя USB/UART. Если при этом основной микроконтроллер Ардуино остался рабочим, то мы можем прошить его, используя программатор. Для этого выполняем все шаги, описанные выше, но на последнем этапе вместо записи загрузчика необходимо:
- Открыть в Arduino IDE интересующий скетч.
- Загрузить скетч в целевую плату командой из меню IDE: Скетч > Загрузить через программатор.
Таким образом можно подарить вторую жизнь плате Ардуино, которую компьютер уже не видит через USB.
Установка загрузчика Arduino — SparkFun Learn
Авторы:
M-короткий
Избранное
Любимый
25
Введение
Внимание! Это руководство было написано для микроконтроллеров AVR с загрузчиком Arduino, использующим контакты ICSP. Если вы используете микроконтроллер ARM с контактами SWD, вам потребуется специальный программатор (например, Atmel JTAG ICE 3 или Atmel-ICE) для подключения к порту SWD. Для получения дополнительной информации ознакомьтесь с нашим руководством по программированию на ARM.
У вас есть заблокированный Arduino, который больше не принимает код? Или, может быть, вы написали свою собственную прошивку и хотели бы загрузить ее на свой Arduino? Или, может быть, вы просто хотите узнать больше о внутренней работе Arduino, AVR и микроконтроллеров в целом. Что ж, тебе повезло! В этом руководстве вы узнаете, что такое загрузчик, зачем вам нужно его устанавливать/переустанавливать, а также узнаете, как это сделать.
Рекомендуемая литература
Возможно, вы захотите ознакомиться с этими руководствами, прежде чем продолжить работу с загрузчиком.
Основы печатных плат
Что такое печатная плата? В этом учебном пособии будет рассмотрено, из чего состоит печатная плата, и некоторые общие термины, используемые в мире печатных плат.
Избранное
Любимый
52
Последовательный периферийный интерфейс (SPI)
SPI обычно используется для подключения микроконтроллеров к периферийным устройствам, таким как датчики, сдвиговые регистры и SD-карты.
Избранное
Любимый
91
Что такое Ардуино?
Что это вообще за «Ардуино»? В этом руководстве рассказывается о том, что такое Arduino, а также о проектах и виджетах Arduino.
Избранное
Любимый
53
Установка Arduino IDE
Пошаговое руководство по установке и тестированию программного обеспечения Arduino в Windows, Mac и Linux.
Избранное
Любимый
16
Интегральные схемы
Введение в интегральные схемы (ИС). Вездесущие черные фишки электроники. Включает акцент на разнообразие пакетов IC.
Избранное
Любимый
47
Руководство по подключению программатора Pocket AVR
Пропустите загрузчик и загрузите свою программу прямо на AVR с помощью AVR Pocket Programmer.
Избранное
Любимый
10
Что такое загрузчик?
Atmel AVR — отличные маленькие ИС, но программировать их может быть немного сложно. Вам нужен специальный программатор и несколько причудливых файлов .hex , и он не очень удобен для новичков. Arduino в значительной степени покончил с этими проблемами. Они поместили файл .hex в свои чипы AVR, который позволяет вам программировать плату через последовательный порт, а это означает, что все, что вам нужно для программирования вашего Arduino, — это USB-кабель.
Загрузчик в основном . hex файл, который запускается при включении платы. Он очень похож на BIOS, который работает на вашем ПК. Он делает две вещи. Во-первых, он оглядывается, чтобы увидеть, не пытается ли компьютер его запрограммировать. Если это так, он берет программу с компьютера и загружает ее в память ИС (в определенное место, чтобы не перезаписать загрузчик). Вот почему, когда вы пытаетесь загрузить код, Arduino IDE сбрасывает чип. Это в основном выключает и снова включает IC, чтобы загрузчик мог снова начать работать. Если компьютер не пытается загрузить код, он сообщает чипу запустить код, который уже хранится в памяти. Как только он находит и запускает вашу программу, Arduino непрерывно выполняет цикл по программе и делает это до тех пор, пока на плате есть питание.
Зачем устанавливать загрузчик?
Если вы собираете свой собственный Arduino или вам нужно заменить микросхему, вам потребуется установить загрузчик. У вас также может быть плохой загрузчик (хотя это очень редко) и вам необходимо переустановить загрузчик. Также бывают случаи, когда вы настроили свою плату в странных настройках, и переустановить загрузчик и вернуть его к заводским настройкам — это самый простой способ исправить это. Мы видели платы, на которых люди отключали последовательный порт, что означает невозможность загрузки кода на плату, хотя могут быть и другие способы исправить это, переустановка загрузчика, вероятно, самый быстрый и простой способ.
Как я уже сказал, плохой загрузчик на самом деле очень и очень редок. Если у вас есть новая доска, которая не принимает код, 9В 9,9% случаев дело не в загрузчике. В оставшемся 1% случаев это руководство поможет вам решить эту проблему.
Выбор программатора
Мы поговорим о двух разных типах программаторов, которые можно использовать для установки или переустановки загрузчиков.
Вариант 1: Специализированные программаторы
Для быстрого и легкого программирования мы рекомендуем использовать карманный программатор AVR (только для Windows).
Карманный программатор AVR
В наличии
ПГМ-09825
18,50 $
57
Избранное
Любимый
31
Список желаний
Или вы можете использовать официальный программатор Atmel-ICE для ARM, SAM и AVR.
Программатор и отладчик Atmel-ICE
Пенсионер
ПГМ-14950
Выведенный из эксплуатации
Примечание: Также можно использовать следующие программаторы, вышедшие из эксплуатации.
АВР MKII | JTAG ICE3 |
Карманный программатор AVR или более дешевые варианты прекрасно подходят для большинства приложений, но могут возникнуть проблемы с некоторыми платами, особенно с большим объемом памяти, такими как платы на базе ATMega2560.
Вариант 2: Использование Arduino в качестве программатора
Другой вариант — взять Arduino Uno (или Duemilanove). Если вы войдете в Arduino IDE, вы увидите пример скетча под названием «Arduino as ISP». Если вы загрузите этот код в свой Arduino, он будет действовать как программатор AVR. На самом деле это не рекомендуется для производства плат или плат с большим объемом памяти, но, в крайнем случае, это работает довольно хорошо. Также на момент написания этой статьи код работал только на платах ATmega328. Возможно, когда-нибудь это сработает на Леонардо или Дуэ, но пока нет.
Аппаратное подключение
Внутрисхемное последовательное программирование (ICSP)
Очень редко программируют микросхемы до того, как они будут припаяны к печатной плате. Вместо этого большинство микроконтроллеров имеют так называемый заголовок внутрисистемного программирования (ISP). В частности, некоторые производители ИС, такие как Atmel и Microchip, имеют специализированный метод ISP для программирования своих ИС. Это называется внутрисхемным последовательным программированием (ICSP). Большинство плат, совместимых с Arduino и Arduino, имеют 2×3-контактный разъем ICSP. У некоторых может быть даже больше одной, в зависимости от того, сколько ИС находится на печатной плате. Он размыкает три контакта SPI (MISO, MOSI, SCK), питание, землю и сброс. Это контакты, к которым вам нужно подключить программатор, чтобы перепрошить прошивку на вашей плате.
Здесь у нас Arduino Uno R3. Он имеет два заголовка ICSP: один для ATmega16U2 и один для ATmega328. Чтобы перепрошить загрузчик на этой плате, вы должны использовать только заголовок ICSP для ATmega328.
На некоторых платах меньшего размера этот разъем может быть не виден, но контакты должны быть выбиты в другом месте. Независимо от того, используете ли вы SMD IC или DIP IC, контакты ISP должны быть доступны в той или иной форме. Некоторые платы могут иметь только тестовые точки для заголовка ISP. Если это так, вы можете подумать о приобретении адаптера ISP Pogo. Этот комплект позволяет вам временно установить хорошее соединение с контрольными точками, чтобы перепрограммировать вашу микросхему.
Адаптер SparkFun ISP Pogo
В наличии
КОМПЛЕКТ-11591
13,95 $
4
Избранное
Любимый
13
Список желаний
Примечание: Если у вас возникли проблемы с поиском контактов ICSP на конкретной плате Arduino, просто просмотрите файлы платы Eagle или графическое описание платы для разработки. В SparkFun мы создали несколько графических таблиц для некоторых плат, которые мы производим.
После того, как вы нашли шесть контактов ICSP на своей плате, пришло время подключить ваш программатор к плате. Вы можете использовать кабель для программирования, чтобы соединить их, или, если у вас нет кабеля, вы можете просто использовать несколько перемычек между мужчинами и женщинами.
Провода-перемычки Premium 6″ M/F Упаковка из 10 шт.
В наличии
ПРТ-09140
1
Избранное
Любимый
16
Список желаний
Кабель для программирования AVR
В наличии
CAB-09215
3
Избранное
Любимый
5
Список желаний
Подключение карманного программатора AVR к мишени
Если вы используете программатор, такой как карманный программатор AVR, ваша установка должна выглядеть примерно так, как показано ниже, со стрелкой (◄) кабеля для программирования AVR , подключенной к MISO . Если вы внимательно посмотрите на форму разъема 2×3, вы сможете заметить стрелку (◄) , указывающую на контакт 1 относительно положения стандартного разъема ICSP.
Нажмите, чтобы увеличить изображение.
Подключение Arduino в качестве интернет-провайдера к цели
Или, если вы используете Arduino в качестве программатора, это должно выглядеть как на изображении ниже. Обязательно включите Arduino в качестве интернет-провайдера, подключив его к компьютеру.
Нажмите, чтобы увеличить изображение.
Стол для подключения
⚡ Зарядите свою цель Arduino! Убедитесь, что ваша целевая плата Arduino включена. Иначе прошить .hex 9 не получится0102 к вашей цели.
Вот таблица, которая поможет понять, какие соединения куда идут. В зависимости от Arduino у вас может быть доступ к контактам ICSP только в заголовке 2×3 ICSP. Обязательно обратитесь к макету платы для получения дополнительной информации о SPI-соединениях Arduino.
Программатор AVR | Ардуино как интернет-провайдер | Заголовок ICSP 2×3 | ATmega328 | ATmega2560 | ATmega32U4 |
---|---|---|---|---|---|
5В | В пост. тока/5 В | Штифт 2 | Вкк | Вкк | Вкк |
Земля | ЗЕМЛЯ | Штифт 6 | ЗЕМЛЯ | ЗЕМЛЯ | ЗЕМЛЯ |
МОСИ | МОСИ/Д11 | Штифт 4 | Д11 | Д51 | Д16 |
МИСО | МИСО/Д12 | Штифт 1 | Д12 | Д50 | Д14 |
СКК | СКК/Д13 | Контакт 3 | Д13 | Д52 | Д15 |
Сброс | Д10 | Контакт 5 | Сброс | Сброс | Сброс |
Внимание! Соединение для 5V Arduino. Если вы подключаетесь к Arduino, использующему более низкое напряжение, убедитесь, что вы безопасно конвертируете логические уровни с помощью преобразователя между программатором и целевым Arduino.
Преобразователь логических уровней SparkFun — двунаправленный
В наличии
ЛПП-12009
119
Избранное
Любимый
147
Список желаний
Преобразователь уровня напряжения SparkFun — TXB0104
В наличии
БОБ-11771
8
Избранное
Любимый
28
Список желаний
Переводчик уровней SparkFun — PCA9306
В наличии
БОБ-15439
2
Избранное
Любимый
23
Список желаний
Для получения дополнительной информации ознакомьтесь с нашим руководством по логическим уровням.
Логические уровни
Узнайте разницу между устройствами 3,3 В и 5 В и логическими уровнями.
Избранное
Любимый
83
Загрузка кода — простой способ
Примечание: В этом примере предполагается, что вы используете последнюю версию Arduino IDE на своем рабочем столе. Если вы впервые используете Arduino, ознакомьтесь с нашим руководством по установке Arduino IDE.
Самый простой способ загрузить загрузчик — использовать Arduino IDE.
Загрузить Arduino как ISP
Внимание! Вам нужно будет загрузить ArduinoISP.ino на заведомо исправный Arduino (т. е. вашу плату для программирования), прежде чем вы сможете использовать его в качестве программатора.
Возьмите хорошо зарекомендовавший себя RedBoard или Arduino Uno. Откройте среду разработки Arduino. В вашем меню выберите File > Examples > 11.ArduinoISP > ArduinoISP , чтобы открыть Arduino как эскиз ISP
Выберите COM-порт для вашего Arduino как ISP. COM-порт может отличаться в зависимости от того, как он пронумерован на вашем компьютере.
Загрузите код на Arduino, чтобы превратить его в AVRISP.
Запись загрузчика на вашу цель
Оставьте Arduino в качестве интернет-провайдера (т.е. вашего программатора), подключенного к вашему компьютеру. Если вы еще этого не сделали, подключите целевую Arduino. Затем выберите определение платы для вашего целевого Arduino в разделе Tools > Board .
Выберите программатор, который вы используете, в меню Tools > Programmer . В этом случае наш программатор является Arduino как ISP, поэтому выберите Arduino как ISP . Вам также нужно будет выбрать COM-порт, к которому подключен Arduino в качестве интернет-провайдера, если вы еще не выбрали COM-порт.
Внимание! Вы можете встретить более одного выбора для «Arduino as ISP» в списке программистов. Любой из них будет работать. Однако «ArduinoISP» не будет работать, если он выбран.
Наконец, выберите Burn Bootloader . Это возьмет плату, которую вы выбрали в Arduino IDE, и найдет соответствующий загрузчик в файл board.txt . Затем он найдет загрузчик в папке программы Arduino IDE (в частности, « …\Arduino\hardware\arduino\avr\bootloaders ») и установит его. Это работает, только если плата правильно установлена в IDE и у вас правильный загрузчик.
Если по какой-то причине вы хотите использовать загрузчик, который не установлен в Arduino IDE, перейдите к следующему разделу. Однако, вероятно, проще просто установить загрузчик из Arduino IDE. Для тех, кому интересны такие настройки, как биты предохранителей, не бойтесь. Arduino позаботится обо всех мелких деталях, когда вы прожигаете через него загрузчики.
Загрузка кода — трудный путь
Сложный способ — для тех, кто хочет использовать командную строку. Этот метод может быть более предпочтительным, если вы модифицируете и перекомпилируете и не хотите постоянно обновлять IDE, но в остальном он совершенно не нужен. Опять же, вам нужно будет получить программатор и подключить все. В этом примере мы используем avrdude в Windows.
Этот процесс состоит из трех шагов:
- Установка Fuse Bits (т. е. Low, High и Extended)
- Флэш-память .hex Файл
- Набор бит блокировки
Первый шаг включает настройку фьюзбитов. Fusebits — это часть микросхемы AVR, которая определяет, например, используете ли вы внешний кристалл или хотите ли вы обнаружить снижение напряжения. Команды, перечисленные ниже, предназначены специально для Arduino Uno, использующего ATMega328, они, вероятно, будут работать на некоторых других подобных платах, таких как Duemilanove, но убедитесь, что вы знаете, что делаете, прежде чем играть с фьюзбитами. Все необходимые биты предохранителей перечислены в boards.txt файл для разных плат. Опять же, если у вас установлен файл boards.txt , просто используйте простой способ. Второй шаг — собственно загрузка программы. Последним шагом является установка битов блокировки.
Примечание: Эти биты предохранителей , а не будут работать на плате 3,3 В/8 МГц. Если вы используете другой микроконтроллер, вам также потребуется настроить параметр partno.
Карманный программатор AVR
Fuse Bits
Если вы используете карманный программатор AVR для программирования целевого Arduino Uno, введите следующие команды в командной строке, чтобы установить фьюз-биты.
язык: bash avrdude -b 19200 -c usbtiny -p m328p -v -e -U efuse:w:0x05:m -U hfuse:w:0xD6:m -U lfuse:w:0xFF:m
Шестнадцатеричный файл и биты блокировки
После установки фьюз-битов мы можем записать скомпилированный файл .hex на целевую плату и установить биты блокировки. Введите следующее в командной строке. Убедитесь, что вы находитесь в том же каталоге, что и ваш файл .hex , и настройте ... hexfilename.hex
, который вы используете для прошивки для вашей цели. Чтобы прошить загрузчик Arduino Uno, перейдите в папку программы Arduino. В ОС Windows он будет выглядеть примерно так: …\arduino-1.8.5\hardware\arduino\avr\bootloaders\optiboot . В папке есть несколько файлов, но нас интересует файл optiboot_atmega328.hex .
язык: bash avrdude -b 19200 -c usbtiny -p m328p -v -e -U flash:w:hexfilename.hex -U lock:w:0x0F:m
Arduino как ISP
Fuse Bits
Если вы используете Arduino в качестве ISP для программирования целевого Arduino Uno, введите следующие команды в командной строке, чтобы установить фьюз-биты.
язык: bash avrdude -P comport -b 19200 -c avrisp -p m328p -v -e -U efuse:w:0x05:m -U hfuse:w:0xD6:m -U lfuse:w:0xFF:m
Шестнадцатеричный файл и биты блокировки
После установки фьюз-битов мы можем записать скомпилированный файл .hex на целевую плату и установить биты блокировки. Введите следующее в командной строке. Убедитесь, что вы находитесь в том же каталоге, что и ваш файл .hex , и настройте ... hexfilename.hex
, который вы используете для прошивки для вашей цели. Чтобы прошить загрузчик Arduino Uno, перейдите в папку программы Arduino. В ОС Windows он будет выглядеть примерно так: …\arduino-1.8.5\hardware\arduino\avr\bootloaders\optiboot . В папке есть несколько файлов, но нас интересует файл optiboot_atmega328.hex .
язык: bash avrdude -P comport -b 19200 -c avrisp -p m328p -v -e -U flash:w:hexfilename.hex -U lock:w:0x0F:m
Последняя информация. Как мы уже говорили ранее, загрузчик — это, по сути, файл .hex . Таким образом, вы можете использовать этот метод для загрузки и кода, который вы хотите для своих ИС.
Ресурсы и дальнейшее развитие
Ищете подходящий Arduino?
Ознакомьтесь с нашим руководством по сравнению Arduino ! Мы собрали все платы для разработки Arduino, которые у нас есть, чтобы вы могли быстро сравнить их, чтобы найти идеальную для ваших нужд.
Отведи меня туда!
Для получения дополнительной информации о AVR, загрузчиках и прошивке для других плат ознакомьтесь с другими замечательными руководствами.
- Arduino.cc
- Информация о загрузчике от Arduino
- Ардуино как интернет-провайдер
- АВРДУДЕ
- Распиновка для различных микросхем и макетных плат
- Графические листы SparkFun
- Начало работы с карманным программатором
Вы также можете ознакомиться с этими связанными руководствами, чтобы узнать больше о загрузке кода в микросхемы AVR или изменении прошивки.
Руководство по подключению программатора Tiny AVR
Практическое руководство по Tiny AVR Programmer. Как установить драйверы, подключить их и запрограммировать ваши любимые Tiny AVR с помощью AVRDUDE!
Избранное
Любимый
12
Установка загрузчика на MicroView
Исправьте ваш MicroView без загрузчика! В этом руководстве рассказывается, как: разобрать MicroView, подключить его к набору программаторов, запрограммировать загрузчик и протестировать его.
Избранное
Любимый
5
Руководство по программированию сервопривода
Заглянуть под капот Servo Trigger — используя среду разработки и некоторые более тонкие детали прошивки.
Избранное
Любимый
4
Как установить загрузчик ATtiny с виртуальным USB
Благодаря этому вы сможете загружать скетчи Arduino напрямую в ATtiny84 через USB без необходимости использования программатора (например, другого чипа Arduino или FTDI).
Избранное
Любимый
13
Pi AVR Programmer HAT Руководство по подключению
В этом руководстве мы будем использовать Raspberry Pi 3 и Pi AVR Programmer HAT для программирования цели ATMega328P. Сначала мы запрограммируем загрузчик Arduino через SPI, а затем загрузим скетч Arduino через последовательный COM-порт USB.
Избранное
Любимый
4
Или ознакомьтесь с нашим руководством по программированию ARM для чипов ARM.
Программирование ARM
Как программировать платы SAMD21 или SAMD51 (или другие процессоры ARM).
Избранное
Любимый
10
Установка загрузчика Arduino — SparkFun Learn
Авторы:
M-короткий
Избранное
Любимый
25
Внутрисхемное последовательное программирование (ICSP)
Очень редко программируют микросхемы до того, как они будут припаяны к печатной плате. Вместо этого большинство микроконтроллеров имеют так называемый заголовок внутрисистемного программирования (ISP). В частности, некоторые производители ИС, такие как Atmel и Microchip, имеют специализированный метод ISP для программирования своих ИС. Это называется внутрисхемным последовательным программированием (ICSP). Большинство плат, совместимых с Arduino и Arduino, имеют 2×3-контактный разъем ICSP. У некоторых может быть даже больше одной, в зависимости от того, сколько ИС находится на печатной плате. Он размыкает три контакта SPI (MISO, MOSI, SCK), питание, землю и сброс. Это контакты, к которым вам нужно подключить программатор, чтобы перепрошить прошивку на вашей плате.
Здесь у нас Arduino Uno R3. Он имеет два заголовка ICSP: один для ATmega16U2 и один для ATmega328. Чтобы перепрошить загрузчик на этой плате, вы должны использовать только заголовок ICSP для ATmega328.
На некоторых платах меньшего размера этот разъем может быть не виден, но контакты должны быть выбиты в другом месте. Независимо от того, используете ли вы SMD IC или DIP IC, контакты ISP должны быть доступны в той или иной форме. Некоторые платы могут иметь только тестовые точки для заголовка ISP. Если это так, вы можете подумать о приобретении адаптера ISP Pogo. Этот комплект позволяет вам временно установить хорошее соединение с контрольными точками, чтобы перепрограммировать вашу микросхему.
Адаптер SparkFun ISP Pogo
В наличии
КОМПЛЕКТ-11591
13,95 $
4
Избранное
Любимый
13
Список желаний
Примечание: Если у вас возникли проблемы с поиском контактов ICSP на конкретной плате Arduino, просто просмотрите файлы платы Eagle или графическое описание платы для разработки. В SparkFun мы создали несколько графических таблиц для некоторых плат, которые мы производим.
После того, как вы нашли шесть контактов ICSP на своей плате, пришло время подключить ваш программатор к плате. Вы можете использовать кабель для программирования, чтобы соединить их, или, если у вас нет кабеля, вы можете просто использовать несколько перемычек между мужчинами и женщинами.
Провода-перемычки Premium 6″ M/F Упаковка из 10 шт.
В наличии
ПРТ-09140
1
Избранное
Любимый
16
Список желаний
Кабель для программирования AVR
В наличии
CAB-09215
3
Избранное
Любимый
5
Список желаний
Подключение карманного программатора AVR к мишени
Если вы используете программатор, такой как карманный программатор AVR, ваша установка должна выглядеть примерно так, как показано ниже, со стрелкой (◄) кабеля для программирования AVR , подключенной к MISO . Если вы внимательно посмотрите на форму разъема 2×3, вы сможете заметить стрелку (◄) , указывающую на контакт 1 относительно положения стандартного разъема ICSP.
Нажмите, чтобы увеличить изображение.
Подключение Arduino в качестве интернет-провайдера к цели
Или, если вы используете Arduino в качестве программатора, это должно выглядеть как на изображении ниже. Обязательно включите Arduino в качестве интернет-провайдера, подключив его к компьютеру.
Нажмите, чтобы увеличить изображение.
Стол для подключения
⚡ Зарядите свою цель Arduino! Убедитесь, что ваша целевая плата Arduino включена. Иначе прошить .hex 9 не получится0102 к вашей цели.
Вот таблица, которая поможет понять, какие соединения куда идут. В зависимости от Arduino у вас может быть доступ к контактам ICSP только в заголовке 2×3 ICSP. Обязательно обратитесь к макету платы для получения дополнительной информации о SPI-соединениях Arduino.
Программатор AVR | Ардуино как интернет-провайдер | Заголовок ICSP 2×3 | ATmega328 | ATmega2560 | ATmega32U4 |
---|---|---|---|---|---|
5В | В пост. тока/5 В | Штифт 2 | Вкк | Вкк | Вкк |
Земля | ЗЕМЛЯ | Штифт 6 | ЗЕМЛЯ | ЗЕМЛЯ | ЗЕМЛЯ |
МОСИ | МОСИ/Д11 | Штифт 4 | Д11 | Д51 | Д16 |
МИСО | МИСО/Д12 | Штифт 1 | Д12 | Д50 | Д14 |
СКК | СКК/Д13 | Контакт 3 | Д13 | Д52 | Д15 |
Сброс | Д10 | Контакт 5 | Сброс | Сброс | Сброс |
Внимание! Соединение для 5V Arduino. Если вы подключаетесь к Arduino, использующему более низкое напряжение, убедитесь, что вы безопасно конвертируете логические уровни с помощью преобразователя между программатором и целевым Arduino.
Преобразователь логических уровней SparkFun — двунаправленный
В наличии
ЛПП-12009
119
Избранное
Любимый
147
Список желаний
Преобразователь уровня напряжения SparkFun — TXB0104
В наличии
БОБ-11771
8
Избранное
Любимый
28
Список желаний
Переводчик уровней SparkFun — PCA9306
В наличии
БОБ-15439
2
Избранное
Любимый
23
Список желаний
Для получения дополнительной информации ознакомьтесь с нашим руководством по логическим уровням.