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

Плата Ардуино

MOSI

MISO

SCK

Уровень

Uno, Duemilanove

11 или ICSP-4

12 или ICSP-1

13 или ICSP-3

Nano

11 или ICSP-4

12 или ICSP-1

13 или ICSP-3

Pro Mini

11

12

13

3.3В или 5В

Mega1280, Mega2560

51 или ICSP-4

50 или ICSP-1

52 или ICSP-3

Leonardo

ICSP-4

ICSP-1

ICSP-3 

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В




Обратите внимание на нумерацию выводов ICSP платы Nano: она начинается с правого нижнего угла. Поэтому на приведенной схеме Arduino Nano перевернута.


Теперь необходимо вернуться в Arduino IDE и изменить в ней параметры:

1.            В меню Инструменты > Плата выбираем вариант, соответствующий нашей целевой плате.

2.            В меню Инструменты > Программатор выбираем 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 ISP

Похожие статьи

Arduino - что это такое? Популярно для начинающих

Arduino - что это такое? Популярно для начинающих

Arduino это недорогая, доступная в смысле покупки электронная плата с микроконтроллером и выводами входов-выходов. Arduino выпускаются в различных версиях, но поддерживают один и тот же, простой язык программирования. Огромный успех Ардуино, с уважением к другим микроконтроллерам, связан с тем, что аппаратное и программное обеспечение были опубликованы в открытом бесплатном для общего пользования виде: вы можете читать, изучать и даже расширять его возможности как в плане программного обеспечения, так и с точки зрения аппаратных средств. Вся информация об Ардуино доступна под лицензией "Creative Commons Attribution-ShareAlike 3.0 License".

Простейший трекер для домашней солнечной электростанции

Простейший трекер для домашней солнечной электростанции

Трекер повышает КПД солнечных панелей

Как известно, солнечные панели имеют максимальный КПД в том случае, когда они расположены перпендикулярно падающим на них солнечным лучам. Но солнце перемещается по небосводу и стационарно установленные панели из-за этого теряют часть своей эффективности. Чтобы повысить их эффективность, используют трекеры — специальные устройства, которые поворачивают панели «вслед» за солнцем:

 Подключение OLED I2C дисплея с размером экрана 0,96″ и разрешением 128*64 точек к плате Arduino UNO.

Подключение OLED I2C дисплея с размером экрана 0,96″ и разрешением 128*64 точек к плате Arduino UNO.

Сегодня мы рассмотрим подключение OLED I2C дисплея с размером экрана 0,96″ и разрешением 128*64 точек к плате Arduino UNO.

Рекомендуемые товары

ARDUINO starter kit набор ардуино для новичков в пластиковом боксе!

ARDUINO starter kit набор ардуино для новичков в пластиковом боксе!

Данный комплект поможет вам на практике ознакомиться с основными принципами использования Ардуи..

350грн.

Теги: Как прошить ардуино, другой ардуиной, Arduino ISP, прошивка ардуино без программатора, прошивка ардуино isp, прошить ардуино, прошить arduino платой ардуино, ардуино, прошить isp, DenisGeek, Denis_geek, Club_arduino