Как прошить ардуино уно через usb кабель

Содержание
  1. Как прошить ардуино плату другой ардуиной Arduino ISP
  2. Что такое ISP? ISP (In-System Programming) расшифровывается как внутрисхемное программирование. Это технология, которая позволяет программировать микроконтроллер, установленный в устройство. До появления этой технологии микроконтроллеры программировались перед установкой в устройство, а для их перепрограммирования требовалось их извлечение из устройства. Существует 2 основных подхода внутрисхемного программирования: · С использованием программатора. В этом случае программатор работает напрямую с памятью микроконтроллера, самостоятельно размещая байты прошивки по нужным адресам. Микроконтроллер в этом процессе не участвует. · С использованием загрузчика. Загрузчик, он же бутлоадер (от английского bootloader) — это программа, записанная обычно в конце ПЗУ микроконтроллера, которая берет на себя функции программатора. При включении микроконтроллера управление сначала передается загрузчику. Он проверяет наличие определенных условий, сообщающих о необходимости перейти в режим программирования. Если условия не выполнены, то управление передается основной программе, в противном случае загрузчик принимает данные по заранее определенному интерфейсу и размещает их в ПЗУ. Таким образом микроконтроллер перепрограммирует сам себя. Одной из важнейших особенностей Ардуино является возможность программирования непосредственно через USB порт, без дополнительного программатора. Сразу после включения Ардуино запускается загрузчик, который работает несколько секунд. Если за это время загрузчик получает команду программирования от IDE по последовательному интерфейсу UART, то он принимает и загружает новую программу в память микроконтроллера. Использование загрузчика существенно упрощает процесс перепрограммирования микроконтроллера, что особенно полезно при отладке. Но за удобство приходится платить. Во-первых, загрузчик занимает часть ПЗУ и для программы пользователя остается меньший объем памяти. Во-вторых, загрузчик не может изменить Fuse-биты и Lock-биты (в отличие от программаторов). Ну и, конечно, не обойтись без программатора, если вы хотите обновить бутлоадер или загрузить его в чистый МК. Таким образом существует ряд задач, которые могут быть выполнены только с использованием программатора. Если же у вас нет аппаратного программатора, то вместо него можно воспользоваться Ардуино, о чем и будет рассказано дальше. Arduino as ISP. Прошивка загрузчика в Ардуино. Итак, мы решили превратить Ардуино в программатор. Для примера попробуем прошить загрузчик в целевую плату Ардуино. Сначала подготовим плату, которую будем использовать в качестве программатора. Для этого загрузим в нее скетч ArduinoISP, его можно найти в стандартных примерах:
  3. Как прошить arduino
  4. Настраиваем Arduino IDE
  5. Ошибка компиляции
  6. Ошибка загрузки
  7. Заливаем загрузчик для Arduino UNO с помощью другой UNO
  8. Введение
  9. Заливка загрузчика (он же Bootloader)
Читайте также:  Ктп 630 киоскового типа проходная кабель воздух

Как прошить ардуино плату другой ардуиной Arduino 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 разъем.

Источник

Как прошить arduino

В этой статье не будем рассказывать что такое ардуино, так как такой информации везде навалом в интернете.А перейдем к тому,как и чем ее прошить. Программа так же в этой статье.

1. Качаем и устанавливаем Arduino IDE* .

При установке Arduio IDE должны автоматически установиться драйвера, то есть при появлении окошка «согласиться ли на установку драйверов» нажать да.
* Это программа для написания скетчей и прошивки Arduino

2. Для китайской Arduino NANO скачать и установить драйвер CH341*, ссылка ниже, см.скриншот.


* На китайских НАНАХ стоят USB контроллеры CH340/CH341, для правильной работы нужен специальный драйвер. Это единственное отличие китайских Ардуин от оригинальных.

Подключить Arduino к компьютеру, подождать, пока Windows её распознает и запомнит (первое подключение).
P.S. Вылезет окошечко, сообщающее, что устройство опознано и подключено к COM порту с определённым номером (2, 3, 6, 9…)

Настраиваем Arduino IDE

Запустить Arduino IDE, выбрать плату (Инструменты\плата\»ваша плата»). См. первый скриншот.

Выбрать порт: инструменты\порт\«COM отличный от COM1, например COM3, COM5…» См. второй скриншот. Какой именно порт вы могли видеть при первом подключении Ардуино к компьютеру.
Примечание: если у вас только СОМ1 — значит либо не встали драйвера, либо сдохла плата.

ВНИМАНИЕ, СОВЕТ! КАК ТОЛЬКО ДОСТАНЕТЕ ARDUINO ИЗ ПАКЕТИКА, СРАЗУ ПРОШЕЙТЕ В НЕЁ СКЕТЧ С МИГАНИЕМ СВЕТОДИОДА (blink.ino)
Таким образом вы узнаете, что Ардуина изначально рабочая (на тот случай, когда после сборки/пайки она перестанет работать и прошиваться), то есть вы сами её сломали, а не она была изначально бракованная =)

Как установить библиотеку на Arduino

Допустим, скачали библиотеку. Её нужно разархивировать и положить в папку:

C:\Program Files (x86)\Arduino\libraries\ (Windows x64)

C:\Program Files\Arduino\libraries\ (Windows x86)

Как пример — библиотека для дисплея на чипе TM1637, смотрите скриншот

Ошибка компиляции

Возникает на этапе сборки и компиляции прошивки, ошибки компиляции вызваны проблемами в коде прошивки, то есть проблема сугубо софтварная. Слева от кнопки «загрузить» есть кнопка с галочкой — проверка. Во время проверки производится компиляция прошивки и выявляются ошибки, если таковые имеются. Ардуино в этом случае может быть вообще не подключена к компьютеру.

Ошибка загрузки

Возникает на этапе, когда прошивка скомпилирована, в ней критических ошибок, и производится загрузка в плату по кабелю. Ошибка может возникать как по причине неисправностей железа, так и из-за софта.

Источник

Заливаем загрузчик для Arduino UNO с помощью другой UNO

Введение

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

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

Ошибаться в программировании – дешево, в электронике – дорого. К сожалению.

К счастью, в Arduino UNO используется микроконтроллер Atmega328P-PU, который, в случае выхода из строя, можно вытащить и заменить. При этом сам микроконтроллер стоит около 100 рублей (при цене оригинального Ардуино – 2 000р, хорошего клона – 500 рублей.) Вот он:

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

К сожалению, нельзя взять нулевую Атмегу 328, вставить в ардуино и залить скетч – сначала нужно залить на неё загрузчик. По сути это означает, что некоторые перемычки внутри схемы должны быть установлены в нужные положения. Завод изначально этого не делает, т.к. загрузчик все-же занимает ценные байты памяти, и взрослые дяди во взрослых производствах не прошивают ардуины скетчами. Но нам то надо! Поэтому давайте разберемся, как подготовить микроконтроллер к работе с ардуино с помощью самодельного загрузчика.

Заливка загрузчика (он же Bootloader)

  1. Arduino UNO – 2 шт
  2. Atmega328P-PU с загрузчиком – 1 шт
  3. Atmega328P-PU новая – 1 и больше, по вкусу

В каждое Arduino (я не определился с полом этого устройства, так что мужской, женский и средний род в статье легко меняет друг-друга) можно заливать сценарии двумя способами – непосредственно напрямую и через другую ардуину.

Непосредственно напрямую заливать, вы, наверное, умеете, раз читаете эту статью – подключаем Arduino через USB, запускаем Arduino IDE, скачанное с официального сайта, пишем нужный скетч (или выбираем File – Примеры – Basics – Blink), нажимаем Скетч-Загрузка (или стрелку сверху), и вуаля – светодиод мигает.

Но наша цель – записать загрузчик на нулевую Атмегу, так что придется выполнить несколько действий.

  1. Возьмите заведомо рабочую Arduino UNO (с прошитой Атмегой на борту), подключите к компьютеру, проверьте, что всё работает. А именно – в Arduino IDE —
    1. Убедитесь, что в Инструменты — Плата написано «Arduino/Genuino UNO”
    2. Убедитесь, что в Инструменты – Порт указан порт с примечанием Arduino. Если это не так, выберите другой порт, проверьте, что светодиоды на плате моргают когда вы подключаете плату.
    3. Залейте любой тестовый скетч. Например File – Примеры – Basics – Blink, залейте и убедитесь, что светодиод на схеме мигает.
  2. Залейте на эту рабочую Arduino скетч Arduino ISP. Его можно найти в примерах в Arduino ISP:
  3. С этого момента эту плату можно использовать как программатор. Не переживайте – Arduino ISP это обычный скетч, вы можете прямо сейчас перезаписать его обратно на Blink и светодиод сможет мигать дальше. Ничего непоправимого не происходит. Отключим эту плату от компьютера, во избежание всяких замыканий в процессе подготовки.
  4. Теперь нам нужно подготовить вторую плату, в которую мы будем втыкать Атмеги и прошивать им загрузчики. Возьмем вторую плату и воткнем в неё новую Atmega. На микросхеме есть такой вдавленный полукружок, он должен быть обращен в сторону, противоположную штекеру питания, вот так:
  5. Теперь подключаем две платы друг к другу (напоминаю, питание сейчас подавать не нужно) по такой схеме:
    1. Порт 11 программатора соединяем с портом 11 жертвы.
    2. Порт 12 программатора соединяем с портом 12 жертвы.
    3. Порт 13 программатора соединяем с портом 13 жертвы.
    4. Порт 5V программатора соединяем с портом 5V жертвы.
    5. Порт GND программатора соединяем с портом GND жертвы.
    6. Порт 10 программатора соединяем с портом RESET жертвы.
    7. Фото (программатор – тот, куда USB-кабель воткнут):
  6. Теперь подключаем плату-программатор через USB (если всё правильно подключили, должны светодиоды загореться на двух платах) и в Arduino IDE устанавливаем программатор Arduino AS ISP:
  7. Плату и порт менять не нужно, т.к. в нашем случае и та, и другая платы – UNO, но если прошиваете что-то другое, то плату нужно изменить на плату жертвы.
  8. Даёте команду записать загрузчик – неважно, какой скетч у вас открыт:
  9. Плата-программатор мигает, загрузчик успешно прошивается в плату-жертву и вы видите такое в Arduino IDE – запись завершена и avrdude не пишет ни о каких ошибках:
  10. Ура. Теперь вы можете записывать на микроконтроллер любые скетчи! Отключите программатор и подключите плату-жертву напрямую через USB, запишите Blink, проверьте (не забудьте в Arduino IDE сменить порт и, возможно, программатор на AVRISP mkll). Так же можете вытащить микроконтроллер из платы-жертвы и воткнуть его в плату-программатор. Ничего менять в IDE не придется, просто прошейте нужный вам скетч.

В случае, если загрузчик не установлен, при попытке заливки скетча вы можете увидеть сообщения вида « avrdude: stk500_getsync() attempt 1 of 10: not in sync: resp 0xe0 ». В таком случае советую пройти все шаги по установке загрузчика заново.

Так же, при попытке заливки загрузчика вы можете увидеть ошибки вида:

avrdude: Device signature = 0x000000

avrdude: Yikes! Invalid device signature

В редких случаях это может означать, что загрузчик уже установлен (и вы можете это проверить, попробовав залить скетч напрямую), либо что Атмега, увы, мертвая. Ну, или вторая плата UNO работает как-то не так, что вряд-ли, но тоже можно проверить.

Кстати говоря, у меня есть такая UNO – я не могу заливать через неё скетчи напрямую, получаю ошибку stk500_getsync, на ней не работают прошитые скетчем атмеги, она вообще практически не пашет, но зато её можно использовать как жертву для программатора – вот такие дела)

Надеюсь, информация оказалась для вас полезной, для обсуждения/дополнения и просто так добро пожаловать в комментарии!

Источник