В этой статье я покажу, как просто сделать AVR-программатор из Arduino Nano. Способ не новый и не оригинальный – это штатная возможность Arduino IDE.
В свое время первым программатором для AVR, обычно, становился программатор «5-проводков» который подключался к LPT или COM — порту. Он же выступал программатором для единичных устройств, когда нужно было раз прошить МК и больше к этому не возвращаться. Сейчас подобные нужды (первый программатор или программатор для одного устройства) не перестали быть актуальны. Проблема в том, что LPT и COM — порта становятся редкостью (а в ноутбуках их уже давно нет). Сейчас для программатора нужно использовать USB-порт, но есть проблема — сборка программатора под USB для начинающего довольно сложная задача. Выход есть — купить недорогой программатор типа USBasp. В случае если USBasp (или другой) Вам достать не получилось, то есть вариант собрать программатор из Arduino Nano – получится не хуже.
Arduino ISP
Этот программатор (вернее скетч для него) включен в официальную Arduino IDE (пример под названием «Arduino ISP»).
Все очень просто. Нужно Arduino Nano, несколько проводков и несколько резисторов.
*для Arduino ISP цепи DBG (включая и резистор 10 кОм) не нужны – об этом дальше.
Обвязку можно спаять прямо на Ардуине, как это сделал я. Или собрать на макетке для одного раза, а потом использовать Ардуину для чего-то еще.
После того, как схема собрана, нужно записать в МК прошивку программатора. Это можно сделать 2-мя способами – либо из Arduino IDE либо из моего gcManager. В последнем случае не придется делать каких либо правок по настройке проекта, кроме того я подготовил варианты на разные скорости (19200 и 115200 бод).
После того как прошивка записана – Вы становитесь счастливым обладателем 😉 программатора «Atmel AVR ISP». Это имя нужно будет выбирать в программах для программирования. Например, в avrdudess это выглядит так:
Algorithm Builder USB adapter
Кроме стандартного Atmel AVR ISP, в эту конструкцию можно записать прошивку нестандартного USB адаптера для Algorithm Builder. В этом случае и понадобится ранее не нужная цепочка DBG (это для однопроводной отладки программы в кристалле).
Не вижу смысла что-то писать об этом адаптере – те, кто пользуются Билдером и так знают что это такое. Прошивку можно записать прямо из gcManager (там-же есть и исходник – стандартный из установки, но подправленный для ATmega328p).
Перепроверил в своем исходнике — он деактивирован.
Привет!
CKDIV8 должен быть деактивирован (то есть не активный), что в ардуиновских родных фьюзах, что в прошивке программатора.
Доброго времени суток. Уважаемый автор, для проверки своих наблюдений , могу просить вас проверить меня? Я тут сравним фьюзы которые были на ардуино нано и Вашей прошивкой в АБ, и обнаружил что в ардуино запрограмирован CKDIV8, я не буду описывать его назначение, но в нём была вся загвоздка неверной работы программы.
Я себе точно прошивал родным загрузчиком ардуины — все работало.
Правда вариантов ардуин существует вагон и маленькая тележка — может что не так было во фьюзах…
Тут ситуация с фьюзами. Те которые были ардуиновские не шли, перепрошить на фьюзы которые в Вашем коде билдера, заработало. Пробовал на uno, mini, с фьюзами ардуины, не хочет работать. Не могу понять в чем причина. Разница от ардуиновских и тех которые Вы установил в билдера, на мой взгляд не критична, может только что-то с настройками кварца.
Вся идея в том чтобы сделать программатор без другого программатора — поэтому фьюзы не менялись — они остаются родными ардуиновскими (отсюда и проблема с первым запуском загрузчика).
Но если делать плату на постоянную работу, то да — можно отключить фьзами запуск загрузчика.
В программе пришлось сделать немного изменений (не только порта). Исправленный исходник есть в папке проекта.
Да ещё вопрос, Вы в коде что меняли или просто сменили только порта ?
С открытием порта не пробовал, галку работы через адаптер ставил. Адаптер начинает видить , а кристал нет.
Может фюзы перепрошить чтоб стартовал не с загрузчика ?
На attyni работает, только вот плату собырать нехочется. На nanо всё есть.
Привет!
В настройках билдера поставили галочку — работать через адаптер?
Кроме того, нужно оставить галку — держать порт открытым. Это нужно для того что при открытии порта сбрасывается ардуина и загрузчик не дает работать коду программатора. Соответственно, первый старт программатора будет неудачным, дальше все работает как нужно, без сбоев.
Отладку проверял — все работает отлично.
Прошил сегодня ардуино мини, тоже самое не работает. Сможете проверить что не так?
У Вас отладка хорошо работала ? Все даные с кристала получали ?
Доброго временисуток. Немного работаю в среде AlgoritmBuilder , решил сделать програматор с вашего примера, только среда AlgoritmBuilder не видет нано адаптера. Прошивку заливал с gcManager под ардуиновским загрузчиком. Что может быть не так ?
Исходник под AlgoritmBuilder находится в папке проекта (соответственно исходник под AlgoritmBuilder )
хм… А где сам скетч? …под AlgoritmBuilder ?
Скетч использует 3790 байт (92%) памяти устройства. Всего доступно 4096 байт.
Глобальные переменные используют 393 байт (153%) динамической памяти, оставляя -137 байт для локальных переменных. Максимум: 256 байт.
Это переписывать надо, отлаживать, обрезать. Проще другой программатор собрать на Arduino Nano как у Вас. Есть ещё прошивка USBTinyISP, она точно подойдёт. Но то же самое, заморочек много. Я надеялся как-то малой кровью этот девайс использовать. Сам по себе он не плохой FTDI, гальваническая развязка. Думал у него может какая-то близкая прошивка или схема к чему-то. Но, похоже, проще выбросить и не тратить время.
В среде Arduino IDE в примерах есть ArduinoISP — это программатор. Если скомпилировать проект под тини2313, переназначив при этом ноги для программирования, то должно получится. Правда тут будет несколько проблемных мест — нужно IDE научить компилировать под тини2313 и нужен другой программатор чтоб залить потом хекс в тини2313
Ну т.е. наоборот, можно в этот программатор для Билдера записать прошивку от Atmel AVR ISP или какого-то другого программатора чтобы его можно было использовать как программатор из среды Ардуино?
Не-не-не. Ардуина мне из него не нужна. Мне программатор нужен. Только чтобы он из под среды ардуино работал.
Привет!
Насколько я помню, там стоит тини2313?
Если так. то ардуина получится из такого программатора так себе…
Ну а теоретически можно залить какой нибудь кастомный загрузчик ардуиновский и работать из под ардуино IDE (при этом свободной памяти под проекты будет килобайта 2).
В общем, не стоит оно того.
Здравствуйте!
А вот у меня обратная ситуация. Есть программатор для Билдера. Можно в него что-то залить чтобы пользоваться стандартными средствами типа Ардуино?
Привет!
Да.
Я его для билдера и делал. В том числе работает и отладка, если что.
Добрый день!
Будет ли данный программатор для Билдера работать на плате НАНО 3?