понедельник, 10 августа 2015 г.

Программатор AVR из Arduino Pro Mini

Обычно ардуинки с микроконтроллерами AVR программируются через USB-UART переходник. Он уже установлен на многих распространенных платках (Arduino Uno, Arduino Nano). Но это не единственный способ программирования микроконтроллеров AVR. Еще одним вариантом является использование программатора. В этой статье я расскажу как сделать программатор из Arduino Pro Mini.


Начну рассказ с ответов на общие вопросы. Зачем нужен программатор? Я уже сказал, что ардуино с микроконтроллерами AVR можно программировать через USB-UART переходник. Но прежде необходимо загрузить в микроконтроллер bootloader. Это делают производители ардуино. Однако bootloader можно повредить. Тогда без программатора не обойтись.

Также может возникнуть необходимость замены контроллера в Arduino Uno. Сделать это не сложно. Но не все микроконтроллеры ATmega328 продаются с предустановленным загрузчиком ардуино. Да и контроллер без bootloader может быть дешевле.

Сравнительно недавно я перешёл на windows 8.1. И эта операционная система отказалась узнавать Arduino Nano с USB-UART переходником на PL-2303HX. Некоторые Arduino Nano с USB-UART переходником на FT232RL постигла та же участь. С помощью программатора можно загружать скетчи в обход встроенного USB-UART переходника. Справедливости ради стоит отметить, что Ubuntu Linux оказался менее капризен.

Следующий вопрос. Зачем делать программатор из ардуино? Действительно. Можно купить готовый программатор. Лично у меня уже есть несколько программаторов для AVR. Вот только у используемых мной сейчас компьютеров нет ни LPT ни COM портов. И windows 8.1 отказалась работать с USBASP. Windows 8.1 можно заставить работать с USBASP, но мне не очень нравится это решение. В свете изложенного покупка еще одного программатора не кажется такой уж хорошей идеей.

Последний вопрос. Почему программатор делается из Arduino Pro Mini? Как ни странно, сделать программатор из этой платки проще всего.

С общими вопросами все. Теперь расскажу о том, что нужно для изготовления программатора.

Arduino Pro Mini


Я взял Arduino Pro Mini (3.3V, 8MHz, ATmega328). Впрочем, с другими Arduino Pro Mini также не должно быть никаких сложностей.

USB-UART переходник


Я использовал переходник на микросхеме CP2102. Они бывают разные. Обязательно должна быть доступна ножка DTR. Очень хорошо если на плате переходника будут светодиоды связанные с линиями TXD и RXD. По ним удобно наблюдать за процессом программирования.

Ещё потребуются соединительные проводочки


На обоих концах проводов установлены разъемы мама.

Соединяется USB-UART переходник с Arduino Pro Mini согласно изложенным ниже рекомендациям.

USB-UART --- Arduino Pro Mini

DTR --- DTR
RXD --- TXD
TXD --- RXD
+5V --- VCC
GND --- GND

По железу всё. Далее приводится пошаговое описание превращения этого устройства в программатор.

Прежде всего нужно подключить USB-UART переходник к компьютеру. Затем нужно запустить Arduino IDE. В Arduino IDE следует выбрать


Файл - Примеры - ArduinoISP

В новом окне нужно выбрать порт USB-UART переходника


У меня это COM5

Также нужно указать название платы


Arduino Pro Mini (3.3V, 8MHz, ATmega328)

Теперь загружаем программу в ардуино


Файл - Загрузить

После загрузки программы в Arduino Pro Mini нужно отключить ножку DTR Arduino Pro Mini от ножки DTR USB-UART переходника. Всё. Программатор готов.

Чтобы запрограммировать Arduino Nano через этот программатор нужно соединить Arduino Pro Mini с Arduino Nano в соответствии с изложенными ниже инструкциями.

Arduino Pro Mini --- Arduino Nano

GND --- GND
VCC --- VCC
D10 --- RST
D11 --- D11
D12 --- D12
D13 --- D13

В Arduino IDE следует выбрать


Сервис - Программатор - Arduino as ISP

Ещё нужно выбрать порт USB-UART переходника


У меня это COM5

Теперь необходимо указать название программируемой платы


У меня это Arduino Nano (ATmega168)

Для загрузки программы в Arduino Nano следует выбрать


Файл - Загрузить с помощью программатора

В заключении хочу рассказать о важных аспектах работы с этим программатором. После подключения программатора к компьютеру необходимо подождать секунд 10, прежде чем выполнять загрузку программы. Это связано с тем, что сразу после подачи питания на программатор управление на несколько секунд передается загрузчику Arduino Pro Mini. Если в это время попытаться прошить программируемую плату ардуино, то программа будет записана в программатор.

Эту проблему можно устранить загрузкой кода программатора в Arduino Pro Mini через программатор. При этом потеряется возможность прошивки Arduino Pro Mini через USB-UART переходник. Но в случае возникновения необходимости можно снова записать загрузчик в Arduino Pro Mini через программатор.

Также, при программировании, к ножкам программируемой ардуины соединенным с программатором не должно ничего подключатся, так как подключенная периферия может помешать загрузке программы.

Лучше вообще отключать все внешние модули и шилды от программируемой платы. Дело в том, что USB порт не может обеспечить значительный ток. Питания хватит на программатор и программируемую плату. Дополнительные потребители могут привести к сбоям.

И последнее. Драйвер для CP2102 лучше брать с официального сайта http://www.silabs.com/products/mcu/Pages/USBtoUARTBridgeVCPDrivers.aspx