Arduino - In System Programmer (ISP).

Тема, на мой взгляд, интересная и позволяет мотивировать покупку нескольких Ардуино ;-) Жаль что обобщенной информации по ней не много. Есть разные заметки, в том числе на рфициальном сайте и форуме. Попытка обобщить их предпринята мной. И представлена это будет в основном в  виде комментариев к линкам на оригинльные статьи (знакомство с которыми в любм случае имхо не лишнее) ...

http://arduino.cc/en/Tutorial/ArduinoISP - Использование Arduino как программатора AVR ISP (Using an Arduino as an AVR ISP) - далее мой вольный перевод этой статьи, курсивом мои дополнения ...

"
Это руководство рассказывает как использовать ардуину в качестве программатора AVR ISP (in-system programmer). Что дает возможность прошивки загрузчика (bootloader) в контроллер AVR (например ATmega168 or ATmega328 для дальнейшего их использавания как Ардуино). Код прошивки ардуины, используемой в качестве программатора базируется на исходниках от Randall Bohn.

Замечание: На текущий момент невозожно использовать Arduino Uno в качестве программатора ISP потомучто прошитый в ее контроллер загрузчик (optiboot bootloader) не поддерживает скетч, превращающий ардуину в программатор. Но это пока ... работы в направлении фикса ведутся ...

Инструкция:

Для использования Ардуино-платы для прошивки загрузчика (bootloader) в чистый AVR контроллер нужно выполнить следующие шаги.

  1.     Загрузить в рабочую ардуину скетч (идет в комплекте с Arduino IDE), превращающий ее в программатор. Называется он "ArduinoISP" и находится в корне раздела "Examples".
  2.     Подключить "Ардуино-программатор" к целевому контроллеру по схемам приведенным ниже (со схемами можно ознакомиться в оригинальной статье по ссылке выше). Правда, к сожалению, наглядными и понятными их не назовешь и "кто-кому-чего дает" там с первого, да и со второго взгляда не совсем ясно. Идея тех рисунков в общем такая: нижняя по картинке ардуина выполняет роль программатора, верхняя - роль "панельки" для чистого (прошиваемого) контроллера (и не более). Также не понятно почему бы не использовать для подключения разъем ISP на плате ардуины - да электрически разницы никакой (на него выведены часть ног с торцов платы) - но с точки зрения организационной так вроде как правильнее ;-) К подключению вернемся еще чуть позже ...
  3.     Выберите через меню Tools > Board модеь платы, в которой будет работать прошиваемый котроллер - т.е. фактически тип зашиваемого загрузчика (т.е. выбрать нужно не тип ардуины, используемой в качестве программатора!). См. описание плат Ардуино (так рекомендовано в оригинале).
  4.     Выберите Burn Bootloader > Arduino as ISP command.

"

Чуть подробнее о подключени контроллера к "Ардуино-программатору".

Разъем ISP на плате урдуины имеет следующую распиновку (рисунок слева).

Контакты MOSI, MISO и SCK вы ведены на пины "DIGITAL" 11,12 и 13 соответственно. Контакт RESET прикручен к соответствующей ноге контроллера на плате ардуины, поэтому чтобы его "подергать" с платы "Ардуино-программатора" используется "цифровой пин" 10 на плате программатора (согласно скетчу ArduinoISP). Также скетчем предусмотрена установка информирующих светодиодов (не является обязательной) на ноги 7, 8 и 9 (Programming, Error и HeartBeat).

http://www.arduino.cc/playground/Code/Programmer2 - Описание и скетч, превращающий ардуину в программатор AVR совместимый с avrusb500 (скетч старинный, но вроде как с него началась идея Ардуино-программатора).

http://arduino.cc/playground/Code/MegaISP - До сих пор развивающийся скетч Ардуино-программатора от Randall Bohn.

Пока немного и сумбурно ... со временем откорректирую и дополню ...

MiGeRA (январь 2012)