Эта инструкция объясняет, как использовать будь какую плату Arduino в качестве ISP (внутрисистемного программатора). Что позволит вам использовать любую плату как UART переходник для загрузки скетча в контроллеры AVR, такие как ATmega168 или ATmega328, устанавливаемые на Arduino. Способ, описанный в этом примере, основан на программном обеспечении mega-isp от Randall Bohn.
Инструкция
Чтобы использовать свою Arduino плату в качестве загрузчика в AVR контроллер другой платы, вам нужно следовать нескольким простым пунктам.
Подготовка в программном обеспечении Arduino IDE.
- Откройте программную утилиту Arduino ISP, что находится в Файл > Примеры (Образцы).
- Заметьте, для Arduino IDE версии 1.0 нужно сделать небольшое изменение в коде Arduino ISP. Найти строчку в функции heartbeat(), в которой есть запись «delay(40);» и заменить её на «delay(20);».
- Во вкладке Инструмены > Плата и Серийный порт, выберите соответствующую плату, которую вы используете в качестве программатора (не ту плату, которую нужно перепрошить).
Загрузка скетча через Arduino ISP.
- Соедините Arduino платы, как показано на схеме подключений внизу.
Примечание: для платы-программатора Arduino типа Uno, и других, нужно добавлять конденсатор на 10 мкФ между сбросом Reset и землей GND, чтобы не возникало никаких ошибок «not in sync». - Во вкладке Инструмены > Платы, теперь уже выберите соответствующую плату, в которую вы будете загружать прошивку (не ту плату, которую используете как программатор). Почитайте о работе с программным обеспечением Arduino Software IDE, чтобы узнать больше.
- Во вкладке Инструмены > Программатор укажите тип программатора Arduino as ISP (Arduino как внутрисистемный программатор).
- Выбрав скетч прошивки, воспользуйтесь командой Файл > Загрузить с помощью программатора. Кнопку на плате нажимать не нужно.
Схема подключений
Arduino Uno, Duemilanove или Diecimila
Примечание: приведенная схема подключений работает с платами, у которых снимается сигнал RST с указанных пинов. Что касается плат, для которых это невыполнимо (платы с контроллером ATmega32U4, такие как Leonardo или YUN), то сигнал сброса RST должен быть взят с разъема ICSP (внутрисхемного программирования) согласно распиновке, приведенной внизу.
Замкнув на ICSP разъеме пины RST и GND, можно любую плату Arduino сделать программатором вне зависимости от зашитого в ней кода.
Одна плата Arduino служит программатором IPS для ATmega на другой плате.
Не забудьте для Arduino Uno, Duemilanove, Diecimila или любой другой подсоединить конденсатор на 10 мкФ между сбросом Reset и землей GND, после того, как сделаете эту плату программатором (после загрузки скетча Arduino ISP).
Схема подключений
Arduino NG или более старой платы
На платах Arduino NG или более старых выход Reset разъема не активен, поэтому вам понадобиться найти его на микроконтроллере.
На Arduino NG или более старой прошиваемой плате нужно подключиться проводом Reset к 1 пину ATmega, как показано на схеме.
Схемы подключений
на макетной плате к контроллерам AVR
Использование платы Arduino для программирования ATmega без кварцевого резонатора.
Поскольку внешний источник тактовых импульсов не подключен, то ATmega должен быть настроен на использование внутреннего таймера.
Использование платы Arduino для программирования ATmega, с внешним кварцевым резонатором.
Сглаживающие конденсаторы следует выбрать по 18 или 22 пФ.
Если всё было собранно верно и не забыли поставить фильтрующий конденсатор на 10 мкФ, то выбранный ATmega прошьется с первого раза.
Автор: Виталий Петрович. Украина, Лисичанск.
Для начала рекомендую собрать схему тестера на макетной плате для заливки прошивки и проверки работоспособности.