Обзор программатора AVRISP-MKII
Попался ко мне в руки вот такой клон программатор AVRISP-MKII вот отсюда.

Что представляет из себя данный программатор? В целом это очередной клон программатора AVRISP-MKII, у которого есть необходимый максимальный набор функций для работы с микроконтроллерами AVR.
- Наличие питания 5В и 3.3В — выбирается перемычкой. Это значит что от программатора можно запитать наше программируемое устройство.
- Это высокоскоростной программатор. В целом из всех которые встречались, клон AVRISP-MKII оказался самым быстрым. 50 кило прошивки заливает за 3-4 сек.
- Поддержка интерфейса программирования TPI, который имеется в некоторых моделях Attiny.
- Поддержка интерфейса программирования PDI, который имеется в моделях Xmega.
- Поддержка интерфейса программирования SPI, который имеется в большинствах моделях Attiny и Atmega. Поддержка трех интерфейсов означает, что этим программатором можно прошить огромное количество микроконтроллеров имеющих на борту хотя бы один из данных интерфейсов.
- Данный программатор работает с программной средой AtmelStudio6.2 и ниже. Это значит что для использования данного программатора не требуется никаких сторонних утилит. AtmelStudio видит его как свою родную железку.
- Работает так же с утилитой AvrDude. Только для этого надо сменить прошивку в самом программаторе. Но это делается движением одной руки, так как в программаторе имеется стандартный атмеловский загрузчик. Это значит, что для замены прошивки не требуется еще один программатор. Программатор по умолчанию залит прошивкой для работы с AtmelStudio.
- Работает так же с программной средой Arduino. Это значит, что если в вашей любимой платке Arduino вдруг сдох или затерся загрузчик, то его можно восстановить этим же программатором прямо из среды программирования ArduinoIDE.
- Есть вывод CLK для воскрешения программируемого микроконтроллера, если в него неправильно записали FUSE биты.

Для того чтобы начать пользоваться этим программатором надо сделать некоторые, не сильно сложные телодвижения.
Если планируем пользовться программатором совместно с AtmelStudio, то ее и нужно установить. Скачать свежаковскую версию можно отсюда Atmel.com. Правда требуется регистрация. После установки AtmelStudio в «управлении» должна появиться следующая фишка.

Далее втыкаем программатор, если драйвера не установились, то вручную указываем путь туда, где стоит AtmelStudio. После установки драйверов в «управлении» появиться следующее:

Если это есть, то программатор готов к совместному использованию с AtmelStudio.
Для использования программатора нужен кабель, который есть на том же сайте, но я себе сделал несколько другой, вот такой:

По той причине что я давно уже отказался от использования стандартного разъема IDC (который на программаторе). В программируемую плату я втыкаю стандартный PLS разъем. Вот примерно так:

В итоге получается вот так:
С AtmelStudio разобрались. А если человеку хочется шить из под AVRDUDE? Тогда надо сменить прошивку. Для начала надо скачать прогу FLIP 3.4.7 for Windows (Java Runtime Environement included) и установить ее. Без этой проги смена прошивки невозможна. После установки проги втыкаем программатор и активируем загрузчик находящийся в программаторе. Чтобы активировать загрузчик, надо на программаторе закоротить перемычкой джампер J_HWB. Потом отверткой или пинцетом кратковременно закорачиваем джампер J_RST. При этом загрузчик активируется и Windows сразу будет пытаться установить драйвера. Но не сможет. Поэтому вручную указываем путь туда где установился FLIP. После установки драйвера в диспетчере устройств должно появиться это:

Вот теперь можно заливать другую прошивку. Для этого запустим программу FLIP.


И в выпавшем списке выберем

Далее нажимаем на Ctrl+U и в появившемся окне нажимаем Open. Появится вот такое окно:

В котором выбираем нашу прошивку клавишами Ctrl+L. И нажимаем RUN. Все прошивку сменили. Нажимаем на Start Application, что приводит к перезапуску программатора. Закрываем FLIP.
Теперь программатор готов к работе с AVRDUDE. Можно нырнуть сюда http://yourdevice.net/proekty/avrdude-prog и качнуть GUI для программатора.
Вот теперь все, да не совсем все. Для того чтоб начать пользоваться AVRDUDE вместе с какой нибудь GUI, надо снести Atmel USB драйвера. И установить другие драйвера libusb_driver для новой прошивки. Ибо драйвера от AtmelStudio для работы с AVRDUDE уже не попрут. Понятное дело что дергать туда сюда драйвера и постоянно перепрошивать программатор, в этом кайфа мало. Поэтому надо определиться в чем то одном. Либо работать с AtmelStudio либо с AVRDUDE. Соответственно для выбранного решения нужно настроить софт, прошивку, драйвера и этого придерживаться.
AVR. Учебный курс. Трактат о программаторах

Что же представляет из себя это устройство?
В простейшем случае программатор это девайс который связывает микроконтроллер и компьютер, позволяя с компа залить файл прошивки в память контроллера. Также нужна прошивающая программа, которая по специальному протоколу загонит данные в микроконтроллер.
Программаторы бывают разные под разные семейства контроллеров существуют свои программаторы. Впрочем, бывают и универсальные. Более того, даже ту же простейшую AVR’ку можно прошить несколькими способами:
Внутрисхемное программирование (ISP)
Самый популярный способ прошивать современные контроллеры. Внутрисхемным данный метод называется потому, что микроконтроллер в этот момент находится в схеме целевого устройства — он может быть даже наглухо туда впаян. Для нужд программатора в этом случае выделяется несколько выводов контроллера (обычно 3..5 в зависимости от контроллера).
К этим выводам подключается прошивающий шнур программатора и происходит заливка прошивки. После чего шнур отключается и контроллер начинает работу.
У AVR прошивка заливается по интерфейсу SPI и для работы программатора нужно четыре линии и питание (достаточно только земли, чтобы уравнять потенциалы земель программатора и устройства):
- MISO — данные идущие от контроллера (Master-Input/Slave-Output)
- MOSI — данные идущие в контроллер (Master-Output/Slave-Input)
- SCK — тактовые импульсы интерфейса SPI
- RESET — сигналом на RESET программатор вводит контроллер в режим программирования
- GND — земля
Сам же разъем внутрисхемного программирования представляет собой всего лишь несколько штырьков. Лишь бы на него было удобно надеть разъем. Конфигурация его может быть любой, как тебе удобней.
Однако все же есть один популярный стандарт:
Для внутрисхемной прошивки контроллеров AVR существует не один десяток разнообразных программаторов. Отличаются они в первую очередь по скорости работы и типу подключения к компьютеру (COM/LPT/USB). А также бывают безмозглыми или со своим управляющим контроллером.
Безмозглые программаторы, как правило, дешевые, очень простые в изготовлении и наладке. Но при этом обычно работают исключительно через архаичные COM или LPT порты. Которые найти в современном компьютере целая проблема. А еще требуют прямого доступа к портам, что уже в Windows XP может быть проблемой. Плюс бывает зависимость от тактовой частоты процессора компьютера.
Так что твой 3ГГЦ-овый десятиядерный монстр может пролететь, как фанера над Парижем.
Идеальный компьютер для работы с такими программаторами это какой-нибудь PIII-800Mhz с Windows98…XP.
Вот очень краткая подборка проверенных лично безмозглых программаторов:
- Программатор Громова.
Простейшая схема, работает через оболочку UniProf(удобнейшая вещь. ), но имеет ряд проблем. В частности тут COM порт используется нетрадиционно и на некоторых материнках может не заработать. А еще на быстрых компах часто не работает. Да, через адаптер USB-COM эта схема работать не будет. По причине извратности подхода 🙂 - STK200
Надежная и дубовая, как кувалда, схема. Работает через LPT порт. Поддерживается многими программами, например avrdude. Требует прямого доступа к порту со стороны операционной системы и наличие LPT порта. - FTBB-PROG.
Очень надежный и быстрый программатор работающий через USB, причем безо всяких извратов. C драйверами под разные операционные системы. И мощной оболочкой avrdude. Недостаток один — содержит редкую и дорогую микросхему FTDI, да в таком мелком корпусе, что запаять ее без меткого глаза, твердой руки и большого опыта пайки весьма сложно. Шаг выводов около 0.3мм. Данный программатор встроен в демоплаты Pinboard
![]() |
Программаторы с управляющим контроллером лишены многих проблем безмозглых. Они без особых проблем работают через USB. А если собраны на COM порт, то без извращенских методик работы с данными — как честный COM порт. Так что адаптеры COM-USB работают на ура. И детали подобрать можно покрупней, чтобы легче было паять. Но у этих программаторов есть другая проблема — для того чтобы сделать такой программатор нужен другой программатор, чтобы прошить ему управляющий контроллер. Проблема курицы и яйца. Широко получили распространение такие программаторы как:
Внутрисхемное программирование, несмотря на все его удобства, имеет ряд ограничений.
Микроконтроллер должен быть запущен, иначе он не сможет ответить на сигнал программатора. Поэтому если неправильно выставить биты конфигурации (FUSE), например, переключить на внешний кварцевый резонатор, а сам кварц не поставить. То контроллер не сможет запуститься и прошить его внутрисхемно будет уже нельзя. По крайней мере до тех пор пока МК не будет запущен.
Также в битах конфигурации можно отключить режим внутрисхемной прошивки или преваратить вывод RESET в обычный порт ввода-вывода (это справедливо для малых МК, у которых RESET совмещен с портом). Такое действо тоже обрубает программирование по ISP.
Параллельное высоковольтное программирование
Обычно применяется на поточном производстве при массовой (сотни штук) прошивке чипов в программаторе перед запайкой их в устройство.
Параллельное программирование во много раз быстрей последовательного (ISP), но требует подачи на RESET напряжения в 12 вольт. А также для параллельной зашивки требуется уже не 3 линии данных, а восемь + линии управления. Для программирования в этом режиме микроконтроллер вставляется в панельку программатора, а после прошивки переставляется в целевое устройство.
Для радиолюбительской практики он особо не нужен, т.к. ISP программатор решает 99% насущных задач, но тем не менее параллельный программатор может пригодиться. Например, если в результате ошибочных действий были неправильно выставлены FUSE биты и был отрублен режим ISP. Параллельному программатору на настройку FUSE плевать с высокой колокольни. Плюс некоторые старые модели микроконтроллеров могут прошиваться только высоковольтным программатором.
Из параллельных программаторов для AVR на ум приходит только:
- HVProg от ElmChan
- Paraprog
- DerHammer
А также есть универсальные вроде TurboProg 6, BeeProg, ChipProg++, Fiton которые могут прошивать огромное количество разных микроконтроллеров, но и стоят неслабо. Тысяч по 10-15. Нужны в основном только ремонтникам, т.к. когда не знаешь что тебе завтра притащат на ремонт надо быть готовым ко всему.
Прошивка через JTAG
Вообще JTAG это отладочный интерфейс. Он позволяет пошагово выполнять твою программу прям в кристалле. Но с его помощью можно и программу прошить, или FUSE биты вставить. К сожалению JTAG доступен далеко не во всех микроконтроллерах, только в старших моделях в 40ногих микроконтроллерах. Начиная с Atmega16.
Компания AVR продает фирменный комплект JTAG ICEII для работы с микроконтроллерами по JTAG, но стоит он (как и любой профессиональный инструмент) недешево. Около 10-15тыр. Также есть первая модель JTAG ICE. Ее можно легко изготовить самому, а еще она встроена в мою демоплату Pinboard.
![]() |
Прошивка через Bootloader
Многие микроконтроллеры AVR имеют режим самопрошивки. Т.е. в микроконтроллер изначально, любым указанным выше способом, зашивается спец программка — bootloader. Дальше для перешивки программатор не нужен. Достаточно выполнить сброс микроконтроллера и подать ему специальный сигнал. После чего он входит в режим программирования и через обычный последовательный интерфейс в него заливается прошивка. Подробней описано в статье посвященной бутлоадеру.
Достоинство этого метода еще и в том, что работая через бутлоадер очень сложно закосячить микроконтроллер настолько, что он не будет отвечать вообще. Т.к. настройки FUSE для бутлоадера недоступны.
Бутлоадер также прошит по умолчанию в главный контроллер демоплаты Pinboard чтобы облегчить и обезопасить первые шаги на пути освоения микроконтроллеров.
Pinboard II
Прошивка AVR с помощью демоплаты Pinboard II (для Pinboard 1.1 все похоже)
Спасибо. Вы потрясающие! Всего за месяц мы собрали нужную сумму в 500000 на хоккейную коробку для детского дома Аистенок. Из которых 125000+ было от вас, читателей EasyElectronics. Были даже переводы на 25000+ и просто поток платежей на 251 рубль. Это невероятно круто. Сейчас идет заключение договора и подготовка к строительству!
А я встрял на три года, как минимум, ежемесячной пахоты над статьями :)))))))))))) Спасибо вам за такой мощный пинок.
89 thoughts on “AVR. Учебный курс. Трактат о программаторах”
Stalker46 :
А что это делает в учебном курсе? чего не на главной странице?
Здарова, Артем, вот я и зашел, чего то не мог зайти долго…
DI HALT :
Я постепенно правлю и переписываю старые статьи, чтобы привести их в более стройный и завершенный вид.
Stalker46 :
А эта статья про что была?
DI HALT :
Эта ни про что. Она новая. Но ее явно тут не хватало. Если ты не заметил, я выбросил из учебного курса «шаг первый — программатор» Переименовав ее в «Программатор Громова» и вынес ее в Готовые устройства.
Stalker46 :
Да, заметил. Люблю изменения на этом сайте)))
Кстати, как сделать, чтобы мне на другое мыло пароль высылался, да и сообщение от сайта об оповещении, что, мол, «сообщение пришло, тебе ответили»)))?
DI HALT :
Напиши на почту какое тебе надо новое мыло и какой нужен пароль. я вручную поправлю.
TheZotant :
Привет всем, есть вопрос по всем этим программаторским делам.
Есть к примеру рабочий программатор AVR910 Protoss (он указан в статье).
Есть header плата с контроллером AT90CAN128 от фирмы OLIMEX. Так вот на ней кроме JTAG
разьема есть еще и резьем, который называется ICSP(In-Circut Serial Programming). Как
оказалось у этого рзьема немного другое подключение, а именно вместо стандартного ISP
подключения
Программатор Контроллер
VCC——————VCC
RES——————RESET
MISO—————-MISO
MOSI—————-MOSI
SCK——————SCK
GND——————GND
У него вот такое(ICSP подключение):
Программатор Контроллер
VCC——————VCC
RES——————RESET
MISO—————-TXDO
MOSI—————-RXDO
SCK——————SCK
GND——————GND
В инете не так много и нашел по ICSP,кроме того что это доработанная ISP. Так вот вопрос сможет ли программатор AVR910 Protoss или любой другой ISP программатор запрограммировать контроллер через разьем ICSP?
Буду благодарен за любые мысли по этому поводу. Спасибо.
DI HALT :
Все правильно. У Мега128 разьем программирования отличается по подключению от классического тем, что ноги идут не на выводы моси мисо на тхдо рхдо. Прошить сможешь.
всем привет. есть вопрос такой. работаю щас с 90S2313. пробовал на нем несколько программаторов: Громова, «пять проводков» и USB на FT232RL. USB-программатор никак не хочет с ним работать, при том, что с программатором Громова и «пятью проводками» работает на ура — и пишет и читает. avrdude.exe -p 2313 -c ftbb -P ft0 -U flash:w:2313.hex:a — это команда для avrdude. получаю: avrdude.exe: BitBang OK
avrdude.exe: pin assign miso 3 sck 5 mosi 6 reset 7
avrdude.exe: drain OK ft245r: bitclk 230400 -> ft baud 115200
avrdude.exe: ft245r_program_enable: failed
avrdude.exe: initialization failed, rc=-1
Double check connections and try again, or use -F to override
this check. avrdude.exe done. Thank you. Даю команду с -F:
avrdude.exe -p 2313 -c ftbb -P ft0 -F -U flash:w:2313.hex:a Получаю avrdude.exe: BitBang OK
avrdude.exe: pin assign miso 3 sck 5 mosi 6 reset 7
avrdude.exe: drain OK ft245r: bitclk 230400 -> ft baud 115200
avrdude.exe: ft245r_program_enable: failed
avrdude.exe: initialization failed, rc=-1
avrdude.exe: AVR device initialized and ready to accept instructions Reading |#######################################################| 100%
avrdude.exe: Device signature =0x000000
avrdude.exe: Invalid device signature
avrdude.exe: Expected signature for AT90S2313 is 1E 91 01
avrdude.exe: safemode: Verify error — unable to read fuse properly. Programmer may not be reliable. И Это при том, что я установил ключ -F, который должен отключать верификацию сигнатуры. И другие программаторы прекрасно работают с этим микроконтроллером. Добавлю, что он уже несколько раз был перепрограммирован, то есть не «с завода». У кого были такие проблемы и что с этим делать?
DI HALT :
Хм. А другие типы контроллеров шьет? Судя по логу у тебя дудка нашла программатор, но не смогла подключиться к контроллеру.
Удалось проверить седня еще один 2313. Такие же проблемы. А мегу16 вчера шил без проблем и читал тоже.
Но самое интересное, что другие то программаторы работают с этими 2313.
И интересно, почему ключ -F не отключает верификацию
мегу8 тоже шьет.
Видел в теме про USB-программатор у Antoniy тоже были проблемы с 2313. потом он купил новый 2313 и сразу же подключил его к USB-программатору и, судя по логу, он у него заработал, только он видимо при чтении формат выходного файла не указал. Так может быть дело в том, что мои 2313 уже залочены? и тогда вопрос: как их «разлочить»? ISP наверное не поможет.
Такой вопрос: «STK200
Надежная и дубовая, как кувалда, схема. Работает через LPT порт. Поддерживается многими программами, например avrdude. Требует прямого доступа к порту со стороны операционной системы и наличие LPT порта.» Прямой доступ к порту это какой режим LPT потра Normal, EEP или ECP?
ZPower :
не могу вкурить как правильно сделать,
ресет программатора напрямую запаивать на ресет контроллера: +———+
|tn2313 |
ISP_reset]———-[|reset |
+———+ или на резистор 10к, который подключен к ресету мк?
+———+
R 10k |tn2313 |
ISP_reset]———-[==]- [|reset |
+———+
DI HALT :
Напрямую, без резистора. А через резистор в 10к ресет подключается к +питания
SergeyB :
У меня сейчас 3 компа
1)коре i5 750 2.66 Ггц 4 ядра ,нет ни лпт ни ком
2)Атлон64 с частотой 2 Ггц
3)пеньтиум 2 400Мгц
Заработает ли какой либо програмаматор на первом компе?
особо интересует заработает ли STK200 или вариант Громова на атлоне
или мой единственный выход старый пентиум 2?
DI HALT :
Скорей да чем нет. Но точно сказать не могу, надо собрать и попробовать.
SergeyB :
т.е. скорее да чем нет это ответ на вопрос что stk200 или громов заработает на атлоне?
я соберу тогда громова для атлона и отпишусь сюда заработает или нет
Erfindhel :
Недавно собрал нечто похожее на классический stk200/300, на моём атлоне3500 с упоротой материнкой работает без проблем;)
Привет!
Поясни пожалуста: если я использую внутрисхемное программирование (ISP), то получается, что я отбираю 4 порта у МК? Если в схеме на этих ногах постоянно сидят входы или выходы логики, или просто светодиоды, то повлияет ли это на процесс прошивки? или повлияет ли процесс прошивки на перефирию (особенно если порт подключён к выходу логики)?
DI HALT :
Смотря как сделать. Выводы логики подключаются на этих выводах к МК через резисторы в 300ом. На работу логики этот резюк не повлияет. А выводы программатора подключаются к МК напрямую, до резюка на логику. Тогда логика не повлияет на прошивку. Но прошивка будет влиять на логику, ведь там уровни меняются. Поэтому логику, если это критично, на период прошивки надо выключать. Иначе она сойдет с ума и будет чудить во время прошивки. Или выключать исполнительное устройство, чтобы оно бед не наделало.
Выручай, комрад ДИ! Извиняй, если не в той теме пишу. Не получается завести мегу168 от внешнего тактового генератора. Уже не знаю, что не так делаю. Фузы CKSEL3..0 прошиты как «0000». Импульсы поступают на ногу XTAL1 меги с порта другого МК с частотой ок. 1 МГц. Есть ли какие-нибудь подводные камни во внешнем тактировании? Что я мог упустить? Заранее благодарен.
DI HALT :
По идее никаких подводных камней там нет. Разве что перепутал прямые фузы с инверсными 🙂
Шил через USBasp с граф. оболочкой. Галочки битов CKSEL3..0 были установлены. То есть, не перепутал. Ладно, спасибо за ответ. Буду проверять всё остальное.
Добрый день. Скажите пожалуйста, программатором можно воспользоваться для считывания ROM, EEPROM из МК? Какие программы нужны для этого? Что вообще нужно для того, чтобы после некоторого времени работы МК я смог подключить его к компу и считать EEPROM или ROM? Нужно ли в таком случае писать в МК код, срабатывающий по прерыванию и выдающий на MOSI\MISO данные?
Заранее спасибо
DI HALT :
Пожалуй любым. Любой AVR программатор умеет читать и епром и флеш. Никакой софт для МК писать не нужно. Правда и флеш и епром могут быть заблокированы автором прошивки изнутри (95% всех коммерческих девайсов). Тодга ты обломаешься.
Спасибо, автором прошивки собираюсь быть я: думаю, пару месяцев эмулирования МК мне достаточно, пора переходить на железо. То есть, обычным ПониПрог или АВРДуде можно не только загружать, но и считывать информацию с контроллера? Ни разу не прошивал МК, и даже не видел, как это делают, поэтому такие вопросы.
dima11221122 :
Здравствуйте. Начал изучать микроконтроллеры. Хочу приобрести программатор из набора мастер-кит NM9211. В описании написано, что он предназначен для программирования микроконтроллеров серии AT89S/AT90S. Можно ли его использовать для ATmega-16, ATmega-8, и если нет, то какие посоветуете программаторы «из той же оперы»? Заранее благодарю.
DI HALT :
Если покупать, то лучше искать клон AVRISP2 он актуальней сейчас.
NiSkNAme :
Скажите пожалуйста если подключать ISP програматор к ATtiny 2313 то вывод sck програматора нужно подключать к USCK или XCK.
ISP программатор ChipProg-ISP2
Универсальный ISP программатор ChipProg-ISP2 обеспечивает внутрисхемное программирование: микроконтроллеров, FLASH, EPROM, EEPROM, NVRAM.
Сегодня, — Универсальный ISP программатор ChipProg-ISP2 обеспечивает программирование 51 345 наименований микросхем.

Универсальный ISP программатор ChipProg-ISP2
- Общее описание ISP программатора;
- Аппаратура ChipProg-ISP2;
- ПО;
- Нагрузочная способность;
- Коммуникационные интерфейсы;
- Настройка и управление проектами;
- Подключение ISP программатора к программируемому устройству;
- Подключение к внешним устройствам управления и/или контроля;
- Источники питания;
- Области применения ISP программатора;
- Поддерживаемые микросхемы;
- Дополнительные возможности;
- ISP программатор — плюсы и минусы;
- Термины и сокращения.
Общее описание ISP программатора
- Очень высокая скорость программирования;
- Внутрисхемное, ISP программирование микроконтроллеров, флэш-памяти (EEPROM, NAND, NOR), программируемой логики (ПЛИС, PLD);
- Поддержка интерфейсов внутрисхемного программирования: JTAG, JTAG chain, SWD, SPI, SCI, I 2 C, UART, и др.;
- Все устройства программируются без дополнительных адаптеров, при посредстве 20-ти проводного кабеля (20 pin шлейфа) длиной до 5 м.;
- 2 режима работы:
— под управлением PC;
— автономный. - ISP программатор оптимизирован для работы в составе автоматизированных производственных систем ATE, ICT;
- Подключение к компьютеру:
— USB 2.0;
— 100 Мбит /с Ethernet;
- Мультипрограмматорный режим работы, до 72 ISP программаторов под управлением 1 компьютера;
- Имеет SD-карту для хранения до 256 проектов, обеспечивающих быстрое и простое переключение между проектами при работе в автономном режиме (без PC).
Характеристики аппаратуры ISP программатора
- Архитектура внутрисхемного программатор не накладывает ограничений на количество и тип ISP программируемых микросхем;
- Программируемый источник питания Vcc от 1.2В до 5.5В.;
- Программируемый источник питания Vpp от 1.6В до 15В.;
- Напряжение питания для платы пользователя регулируется от 1,2 до 5,5В & 350 мА.;
- Корпус ChipProg-ISP2 114 x 73 x 32 mm.;
- На корпус выведены:
- кнопка, запускающая выполнение любой выбранной операции или последовательности операций;
- 3 светодиода индицирующие состояние программатора;
- 4 разъема:
- стандартный mini USB для связи с PC;
- разъем для штатного блока питания 5V;
- 20-контактный разъем «TARGET» для подключения программатора к программируемому устройству;
- 20-контактный разъем «CONTROL» для подключения к средствам контроля и/или управления пользователя. К этому же разъему, при необходимости, крепится модуль CPI2-BB;
ПО ISP программатора ChipProg-ISP2
- ChipProg-ISP2 работает под управлением Windows XP/Vista/7/8/10 (Windows 32/64 бита);
- Дружественный, интуитивно понятный графический интерфейс пользователя;
- Возможность открывать и работать с неограниченным количеством буферов и окон. Буфера разбиваются на подслои, имеющие структуру адресного пространства микросхемы;
- Полноценный двоичный редактор. Работа с файлами в двоичном, Standard Extended Intel HEX, Motorola S-record, POF, JEDEC, PRG, Holtek OTP, ASCII HEX, ASCII OCTAL, Angstrem SAV форматах;
- Простой в использовании графический редактор для настройки параметров и опций программирования;
- Гибкая система инициализации необходимых действий программатора. Запуск выбранных процедур (последовательности процедур) через элементы интерфейса, по кнопке, автоматически, по командам из внешнего контура управления;
- Поддержка проектов;
- Режим записи серийного номера, подсчета контрольных сумм, записи сигнатуры пользователя;
- Режим мультипрограммирования;
- Встроенный Си подобный язык для создания сценариев работы, обеспечивающий доступ ко всем ресурсам программатора;
- Встроенные средства, поддерживающие внутрисхемное программирование (тиражирование) микросхем большими партиями. Режимы записи серийного номера, подсчета контрольных сумм, записи сигнатуры — в любую область памяти микросхемы;
- Несколько встроенных алгоритмов подсчета контрольной суммы;
- Ведение журнала сеансов программирования;
- Простая адаптация и интеграция с внешними системами управления и контроля (ATE);
- Настраиваемый упрощенный интерфейс для использования неквалифицированным персоналом;
- Интеграция с программным обеспечением National Instruments® LabVIEW™;
- Режим работы с утилитой OFControl;
- Интерфейс управления приложениями (DLL);
- Режим само диагностики.
Интерфейс программатора ChipProg-ISP2
Окно в интерфейсе программатора — можно задать дополнительные параметры и опции программирования.
Нагрузочная способность ChipProg-ISP2
- Программируемый источник питания Vcc от 1.2В до 5.5В нагрузочная способность до 100 мА при питании от USB канала, до 350 мА при использовании внешнего источника питания (поставляется отдельно);
- Программируемый источник питания Vpp от 1.2В до 5.5В нагрузочная способность до 80 мА.
Коммуникационные интерфейсы
- Высокоскоростной USB 2.0 (480Mbps).
- 100 Мбит/с Ethernet с гальванической развязкой.
Настройка и управление проектами
- ПО ISP программатора позволяет создавать и использовать (хранить, редактировать) неограниченное количество проектов. Внутренняя SD карта вмещает до 256 проектов пользователя. Файлы проекта надежно защищены от несанкционированного доступа и модификации.
- Целостность данных, которыми ISP программатор обменивается с SD картой, внешней системой АТЕ и компьютером, обеспечивается посредством использования CRC (циклический избыточный код).
- При работе ISP программатора в автономном режиме (с питанием от батарейки) пользователь может выбрать и запустить 1 из 4-х ранее созданных проектов.
Подключение программатора ChipProg-ISP2 к программируемому устройству
Подключение к программируемому устройству производится посредством плоского 20-ти жильного кабеля (AS-ISP-CC). Коммутационный кабель оснащается 20-контактными разъемами и входит в комплект поставки. Коммутация производится через разъем «TARGET».
Программатор поставляется со стандартным кабелем длиной 25 см, для некоторых микросхем длина может достигать 5м.
Маркировка выводов разъема «TARGET» представлена на схеме.
Сигналы, поступающие на разъем «TARGET», представлены в таблице ниже:
Вывод # Сигнал Описание сигналов, все сигналы двунаправленные 1 P1 Log 0/1, Vcc или GND 2 P11 Log 0/1, Vcc, Vpp или GND 3 P2 Log 0/1, Vcc или GND 4 GND Земля 5 P3 Log 0/1, Vcc или GND 6 GND Земля 7 P4 Log 0/1, Vcc или GND 8 GND Земля 9 P5 Log 0/1, Vcc или GND 10 GND Земля 11 P6 Log 0/1, Vcc или GND 12 GND Земля 13 P7 Log 0/1, Vcc или GND 14 GND Земля 15 P8 Log 0/1, Vcc или GND 16 GND Земля 17 P9 Log 0/1, Vcc или GND 18 GND Земля 19 P10 Log 0/1, Vcc или GND 20 P12 Log 0/1, Vcc, Vpp или GND P1 … P10 – логические сигналы, сформированные буферами программатора, могут принимать значения 0 или 1; Vcc или GND, в соответствии с выбранным типом программируемой микросхемы. Эти линии могут выводить Vcc с уровнями от 1,2 до 5.5V @ до 350мА. Буферы являются двунаправленными, по этим же линиям принимаются данные считываемые программатором.
Особенности подключения ChipProg-ISP2 при ISP программировании микросхем различных производителей можно посмотреть непосредственно в программной оболочке программатора (окно «Информация о микросхеме» или здесь), либо на нашем сайте. В общем случае, схема подключения зависит от типа программируемого устройства.
В режиме ожидания или после завершения любой операции программирования, выводы P1 . P12 переводятся в состояние высокого импеданса.
Подключение ChipProg-ISP2 к внешним устройствам управления и/или контроля
Подключение к внешним устройствам управления и/или контроля производится через разъем «CONTROL». К этому же разъему, при необходимости, подключается и дополнительный модуль CPI2-BB.
Для сопряжения с внешними устройствами используются сигналы TTL-уровня:
- сигнал запуска программатора;
- сигналы состояния программатора;
- сигналы для выбора одного из 64 предварительно загруженных проектов;
- при использовании модуля CPI2-BB, разъем обеспечивает питание для зарядки аккумулятора;
- использование модуля CPI2-ISO обеспечивает гальваническую развязку всех управляющих сигналов.
Маркировка выводов разъема «CONTROL» представлена на схеме.
Для сопряжения с внешними устройствами используются сигналы TTL уровня.
Так как ISP программатор может быть дополнительно оснащен модулем CPI2-ISO обеспечивающим гальванически развязанный интерфейс, существуют две различные схемы, приведенные ниже.
Вариант без установленного модуля CPI2-ISO
Вывод Сигнал Тип сигнала Описание 1 GND Земля 2 GND Земля 3 PROJ_SEL0 Входной Выбор проекта 0 4 START Входной Сигнал «Start» – активный логический 0 5 PROJ_SEL1 Входной Выбор проекта 1 6 5V_CHARGE Выходной +5V @ 500mA max line 7 PROJ_SEL2 Входной Выбор проекта 2 8 5V_IN Входной 5 V либо от внешнего источника, либо от модуля CPI2-BB 9 PROJ_SEL3 Входной Выбор проекта 3 10 5V_IN Входной 5 V либо от внешнего источника, либо от модуля CPI2-BB 11 PROJ_SEL4 Входной Выбор проекта 4 12 GND Земля 13 PROJ_SEL5 Входной Выбор проекта 5 14 GND Земля 15 ST_GOOD Выходной Сигнал «GOOD» – активный логический 0 16 GND Оптоизолированная линия земли 17 ST_BUSY Выходной Сигнал «BUSY» – активный логический 0 18 NC Нет соединения 19 ST_ERROR Выходной Сигнал «ERROR» – активный логический 0 20 NC Нет соединения - PROJ_SEL [5..0] — 6-разрядный селектор для выбора одного из 64 предустановленных проектов;
- ST_GOOD | ST_ERROR | ST_BUSY | — состояние программатора. Активный статус — логический 0;
- START — внешний сигнал запуска программатора. Активный статус — логический 0;
- 5V_CHARGE — + 5V @ 500mA напряжение для заряда батареи CPI2-BB. Может быть использовано в качестве источника питания для выбора проекта;
- 5V_IN — 5V — поставляется либо от внешнего адаптера питания, подключенного к программатору или из.
Вариант с установленным модулем CPI2-ISO
Вывод Сигнал Тип сигнала Описание 1 NC Нет соединения 2 NC Нет соединения 3 PROJ_SEL0 Входной Выбор проекта 0 4 START Входной Сигнал «Start» – активный логический 0 5 PROJ_SEL1 Входной Выбор проекта 1 6 V_ISO Выходной Оптоизолированная линия +5V @ 10mA max 7 PROJ_SEL2 Входной Выбор проекта 2 8 NC Нет соединения 9 PROJ_SEL3 Входной Выбор проекта 3 10 NC Нет соединения 11 PROJ_SEL4 Входной Выбор проекта 4 12 GND_ISO Оптоизолированная линия земли 13 PROJ_SEL5 Входной Выбор проекта 5 14 GND_ISO Оптоизолированная линия земли 15 ST_GOOD Выходной Сигнал «GOOD» – активный логический 0 16 GND_ISO Оптоизолированная линия земли 17 ST_BUSY Выходной Сигнал «BUSY» – активный логический 0 18 NC Нет соединения 19 ST_ERROR Выходной Сигнал «ERROR» – активный логический 0 20 NC Нет соединения - PROJ_SEL[5..0] – Оптоизолированный 6-битный селектор для выбора одного из 64 предустановленных проектов;
- ST_GOOD | ST_ERROR | ST_BUSY – Оптоизолированные линии передачи сигналов состояния программатора;
- S_START_ — Оптоизолированная линия передачи сигнала Start/Stop;
Источники питания
- USB порт компьютера;
- Внешний источник 5V @ 1A (опционально);
- Аккумуляторная батарея Li-Ion (опционально);
- Внешний источник питания.
При подключениии к источнику питания (5V @ 1A), программатор может обеспечить Vcc от 1,2 до 5.5V @ до 350мА и Vpp от 1.2 до 15В @ до 80mA.
Области применения ISP программатора
ChipProg-ISP2 может использоваться как:
- Универсальный внутрисхемный ISP программатор для центров разработки, обслуживания, ремонта микроэлектронной техники;
- Универсальный промышленный ISP программатор копировщик (одно и/или многоканальный) для промышленного тиражирования, в том числе в составе ATE (автоматическое тестовое оборудование) на производстве;
- Автономный универсальный ISP программатор с батарейным питанием для работы в полевых условиях.
Поддерживаемые микросхемы
- Количество программируемых микpocхем не имеет аппаратных ограничений;
- Номенклатура программируемых микpocxeм обновляется постоянно;
- Программатор обеспечивает быстрое внутрисхемное программирование микроконтроллеров, флэш-памяти (EEPROM, NAND, NOR), программируемой логики (ПЛИС, PLD);
- Программирование всех микросхем производится посредством штатного 20 pin шлейфа, без дополнительных адаптеров;
- Весь спектр микросхем, поддерживаемых программатором, разбит на 23 кластера. Для каждого кластера разработана соответствующая библиотека драйверов, которые обеспечивают поддержку микросхем данного кластера. Номенклатура библиотек драйверов, и соответствующие им кластеры поддерживаемых микросхем представлены в таблице;
- В базовой комплектации ChipProg-ISP2 поставляется с библиотекой драйверов начального уровня CPI2-D-BL;
- При необходимости, дополнительные библиотеки драйверов приобретаются опционально.
Дополнительные возможности ISP программатора
При необходимости, базовый комплект ChipProg-ISP2 может быть доукомплектован:
- CPI2-ISO – Дополнительный модуль, обеспечивающий гальваническую развязку сигналов разъема «CONTROL» (до 1 кВ).(поставляется/приобретается опционально);
- CPI2-ACI – Специализированный программный пакет. Данный пакет предназначен для управления программатором из других приложений, и обеспечивает полный программный контроль над процессом программирования устройства пользователя);
- CPI2-BB – Дополнительный модуль с батарейкой и органами управления. Данный модуль позволяет использовать изделие в автономном режиме;
- CPI2-USBH – Дополнительный 7-портовый USB 2.0 разветвитель/хаб.
ISP программатор — за и против.
Несомненным достоинством программатора использующего ISP протокол, является:
— Возможность объединения процесса программирования и тестирования, исключив отдельную фазу программирования микросхем перед окончательной сборкой устройства;
— Вне зависимости от типа корпуса обслуживаемой микросхемы, для подключения ISP программатора не требуется дополнительного адаптера.
Относительным недостатком можно считать:
— Скорость программирования по ISP протоколу как правило ниже;
— Не все микросхемы имеют данный интерфейс;
— Подключение ISP программатора к программируемому устройству требует от пользователя несколько большего внимания и квалификации.
Термины и сокращения
(ATE (automatic test equipment) — автоматическое тестовое оборудование.
ICT (In-Circuit Test) ICT разновидность ATE, особенно эффективна при тестировании печатных плат.
DUT (device under test) – тестируемое у-во/оборудование.)
ISP (In System Programming) ISP программатор — устройство реализующее процесс внутрисхемного программирования. В среде пользователей программаторов, наряду с аббревиатурой ISP, иногда используется и аббревиатура SPI (Serial Peripheral Interface) применительно к внутрисхемным программаторам.
— SPI программатор — программатор позволяющий работать с flash памятью через SPI интерфейс.
Все программаторы серии ChipProg поддерживают программирование по SPI протоколу.— Часто вместо терминов SPI программатор или SPI программирование, используются термины:
внутрисхемный программатор или внутрисхемное программирование;
внутрисистемный программатор или внутрисистемное программирование;
ISP программатор или ISP программирование;
последовательный программатор или последовательное программирование.125212, г. Москва, ул. Адмирала Макарова д.8, стр.1, подъезд 9, этаж 3
БЦ Адмирал
тел.: 8 (495) 780-9251 (многоканальный)Работа с голым камнем, ATtiny


Внимание! Данный урок опирается на информацию из предыдущего урока о программаторах. Обязательно изучите сначала его. В прошлом уроке я рассказывал о том, как загрузить прошивку в Ардуино, используя внешние устройства: USB-TTL преобразователь и ISP программатор. Как нетрудно догадаться, при помощи этих же инструментов можно загрузить прошивку и в голый чип, будь то ATmega328 или ATtiny85. МК серии ATtiny являются младшими братьями АТмег, у них меньше ног, меньше памяти, меньше интерфейсов и таймеров, но зато они дешевле и хорошо подходят для мелких проектов. Давайте сравним несколько популярных МК:
МК/spec ATmega328 ATtiny85 ATtiny13 Flash 32k 8k 1k SRAM 2k 512b 64b EEPROM 1k 512b 64b Цифр. Ног 23 6 6 Аналог. Ног 8 4 4 Таймеры 3 2 1 SPI + + – UART + – – I2C + + – Цена 95р 70р 20р Примечание: большинство функций объединены на одних и тех же пинах. Как вы можете видеть, чем дешевле МК, тем меньше у него возможностей. Полное подробное сравнение можно глянуть здесь.
UART и ISP
Для подключения прошиваторов к голому чипу нам нужно будет изучить распиновку (pinout) на нужный микроконтроллер. Распиновки бывают цветные и красивые (часто с ошибками), а бывают более серьёзные и правильные. Лучше всего открыть даташит на нужный МК и на второй же странице найти 100% правильную распиновку. Например для ATmega328, ATtiny85 и ATtiny13:


На данных “схемах” подписаны все функции пинов МК. Чтобы загрузить прошивку через USB-TTL, то есть при помощи “живущего в памяти” загрузчика (bootloader), МК должен иметь на борту аппаратный UART, то есть пины RX и TX. Если таких пинов нет – прошивку можно загрузить только через ISP программатор. Вы спросите, а как же Digispark? Там стоит МК ATtiny85, у которого нет UART, но прошивка загружается через USB! Верно, но там хитрые разработчики сделали не менее хитрый загрузчик, который имитирует USB, и прошивка на Digispark загружается при помощи специальной программы, которая запускается в фоне, когда вы нажимаете кнопку “Загрузить” в Arduino IDE. Резюмируя для общего случая:
- Если в МК прошит загрузчик (bootloader) и на борту имеется аппаратный UART (пины RX TX), прошивку можно загрузить через USB-TTL “загружатор”, также через него можно заниматься отладкой кода при помощи Serial.
- Если в МК нет пинов RX TX, значит прошивку можно загрузить только при помощи ISP программатора, да и о загрузчике в целом можно забыть, не нужен он. Отладкой всё ещё можно пользоваться, подключив USB-TTL и подняв на МК “программный” UART. Например в ядре для ATtiny85 (об этом ниже) уже идёт встроенный SoftwareSerial и можно им пользоваться.
Подключение программатора
Программатор, или Ардуину в качестве программатора, подключить очень просто. Смотрим распиновку и подключаем:
- Шину ISP: пины MOSI, MISO и SCK. Они есть на всех МК
- Сброс RST
- Землю GND. Любую из имеющихся, они соединены внутри МК
- Если МК не питается от своего источника, подключаем заодно VCC
Например ATmega328p подключаем к USB ASP (обсуждали в прошлом уроке) 6-пин вот так:
Примечание: да, другие компоненты не нужны. Новый (из магазина) МК тактируется от внутреннего генератора на 8 МГц и может без проблем прошиваться прямо так как на схеме выше. Тиньки к тому же USB ASP подключаются так:
Для удобства я использую макетку-дигиспарк, на которой разведены пины как раз под ISP 6-пин хэдер: втыкается выпирающим “ключом” в сторону МК. В плате выведены 8 пинов, нам нужны верхние 6 (на фото видно не запаянные пины ниже штекера). Купить можно тут.
Также можно прошивать МК через Arduino (Arduino as ISP, обсуждали в прошлом уроке). Схема для ATtiny85:
Примечание: конденсатор нужен обязательно! Подключили. Что дальше? Дальше мы уже можем работать с фьюзами через программу avrdudeprog (обсуждали в прошлом уроке), выбрав в списке соответствующий программатор и в списке МК – соответствующий МК. Также через эту программу можно загрузить скомпилированный “бинарник” – файл прошивки. Но нас всё-таки интересует работа через Arduino IDE.Ставим “ядро”
Для того, чтобы работать с Attiny через Arduino IDE, нам нужно установить так называемое ядро, или как оно называется в самой IDE – плату. Для ATmega328 у нас уже есть стандартное ядро, например плата Arduino NANO. Но тут есть нюанс: внутренние настройки “платы” NANO рассчитаны на работу с загрузчиком (bootloader) и с внешним тактированием 16 Мгц, то есть лучше не рисковать и установить ядро, которое поддерживает работу без загрузчика и с возможностью выбора частоты, чтобы иметь полный контроль над платой. Могу посоветовать вот эти:
- GyverCore – ядро для ATmega328, которое разработали мы с коллегой. Лёгкое и быстрое, возможность работы без загрузчика и широкий выбор вариантов тактирования. Ссылка для менеджера плат: https://alexgyver.github.io/package_GyverCore_index.json
- MiniCore – ядро для поддержки и расширенной настройки МК ATmega328, ATmega168, ATmega88, ATmega48 и ATmega8. Ссылка для менеджера плат: https://mcudude.github.io/MiniCore/package_MCUdude_MiniCore_index.json
- ATTinyCore – ядро для поддержки и расширенной настройки МК ATtiny 441/841, 44/84, 45/85, 461/861, 48/88, 828, 1634, 87, 167. Ссылка для менеджера плат: http://drazzy.com/package_drazzy.com_index.json
- MicroCore – ядро для поддержки и расширенной настройки МК ATtiny13, ATtiny13A и ATtiny13V. Ссылка для менеджера плат: https://mcudude.github.io/MicroCore/package_MCUdude_MicroCore_index.json
- megaTinyCore – ядро для поддержки и расширенной настройки МК ATtiny 3217, 1617, 817, 417, 3216, 1616, 816, 416, 1614, 814, 414, 214, 412, 212, 1607, 807, 1606, 806, 406, 1604, 804, 404, 204, 402, 202. Новые модели шьются по UPDI, по этой теме читайте отличную статью на русском языке. Можно сделать программатор из обычной Ардуины – читай тут. Данное ядро можно установить через менеджер плат, ищите по названию Arduino megaAVR board package, никаких ссылок вставлять не нужно.
- MightyCore – ядро для поддержки и расширенной настройки МК ATmega8535, ATmega16, ATmega32, ATmega164, ATmega324, ATmega644 и ATmega1284. Ссылка для менеджера плат: https://mcudude.github.io/MightyCore/package_MCUdude_MightyCore_index.json
- MegaCore – ядро для поддержки и расширенной настройки МК ATmega64, ATmega128, ATmega640, ATmega1280, ATmega1281, ATmega2560, ATmega2561, AT90CAN32, AT90CAN64 и AT90CAN128. Ссылка для менеджера плат: https://mcudude.github.io/MegaCore/package_MCUdude_MegaCore_index.json
Как установить ядро: идём в Файл/Настройки и вставляем ссылку в окно дополнительных ссылок для менеджера плат
Далее идём в Инструменты/Плата/Менеджер плат… и находим нужное ядро. Устанавливаем
После этого в списке плат появится новое семейство плат/МК на выбор. Я буду работать с ATtiny85
Нас интересует меню Clock – тактирование. ATtiny85 интересна тем, что может тактироваться от внутреннего источника на 8 МГц, но также может его “умножить” на 2 и получится 16 МГц, этот вариант называется 16 MHz (PLL). Это очень круто, потому что голый чип будет работать с почти максимальной скоростью, что делает его ничуть не хуже той же Arduino Nano. Выбираем программатор из списка (я буду прошивать при помощи USB ASP). Однократно выполним Инструменты/Записать загрузчик, чтобы применить настройки тактирования:
Про остальные менюшки и варианты можно догадаться из их названия, или почтить подробное описание на GitHub по ссылкам выше.Программирование
Итак, что же даёт нам ядро помимо выбора настроек МК? Можно программировать МК всё теми же командами, что и раньше! Мигать светодиодами через digitalWrite, измерять напряжение через analogRead и прочее прочее. Давайте напишем классический Blink:
void setup() < pinMode(PB3, OUTPUT); >void loop()
PB3 – это номер пина, прямо как на распиновке. Всё! Осталось загрузить прошивку. Для этого нажимаем Скетч/Загрузить через программатор:
Я подключил светодиод через резистор на 220 Ом и он мигает два раза в секунду, всё как написано.
Что следует помнить при работе с тиньками: у них мало памяти, а все вот эти Ардуино-функции являются кошмаром индуса и занимают очень много места в памяти. Если тини85 ещё как-то переживёт такие издевательства и сможет уместить в себе вполне интересный проект из Ардуино-функций, то в тини13 уже сложно уместить что-то серьёзное. Напомню: всего 64 байта оперативной памяти и 1 кб флэша!Важный момент по работе с ядрами для других МК, у которых больше 8 ног. Для сохранения удобства работы с IO функциями ядра (digital/analog/Read/Write) к пину можно обращаться как PIN_ + имя_ноги на распиновке, например подадим высокий сигнал на пин PC3: digitalWrite(PIN_PC3, HIGH); . Все остальные нюансы расписаны на странице ядер по ссылкам выше.
Я думаю вы поняли, что в целом работа с голыми МК не особо то и отличается от работы с обычной платой Arduino, и теперь можно переходить к сложным самоделкам на базе своей платы, в центре которой будет стоять микроконтроллер. Давайте поделюсь парой советов по минимальной обвязке.
“Загрузить через программатор”
Одноимённый пункт в меню “Скетч” в Arduino IDE загружает скетч через выбранный программатор, а также затирает загрузчик! Если в проекте было решено использовать загрузчик – не используйте загрузку через программатор после его прошивки!
Проект на голом МК
Зачем делать проект на своей плате и голом микроконтроллере?
- Конечно же размер, своя плата получится компактнее в большинстве случаев.
- Энергопотребление. Ни для кого не секрет, что всякие удобные штуки на плате ардуино потребляют огромный по меркам энергосбережения ток, и для автономного устройства лучше взять голый камушек.
- Работая с голым камнем мы можем выбрать микроконтроллер под свои задачи. Например для мелкого проекта необязательно брать 328 мегу, если с задачей справится аттини13, которая стоит 20 рублей.
- Возможная экономия. Ардуино нано стоит условно 170 рублей без доставки. Голая 328 мега на том же алиэкспресс – 100 рублей. Если брать десяток. В дорогущем российском чип и дип – 190 рублей. То есть если очень приспичит – можно и тут купить без особых потерь, потому что оригинальная нано стоит 3 тысячи рублей в том же ЧИДе.
- Удобство разводки платы. Микросхема в корпусе под поверхностный монтаж находится на одном слое и не мешает дорожкам на другом слое.
- Удобство монтажа. Даже если делать свою плату прототип лутом, то припаять на неё чип в 100 раз удобнее и быстрее, чем сверлить три десятка отверстий под ардуину, а потом их запаивать.
- Мелкосерийное производство готовых или почти готовых плат, для себя если нужно несколько или на продажу. На том же jlcpcb можно заказать изготовление плат с распайкой внимание smd компонентов. То есть ардуину вам никто не припаяет, а вот ту же 328 мегу припаяют за 100 рублей, тиньку 13ю – за 35 рублей, а чем больше партия – тем дешевле. К этому вопросу мы вернёмся ближе к концу этого урока.
Итак, я на личном опыте убедился, что МК способен работать вообще без какой-либо обвязки. Это был проект “Читалка файлов с SD карты” на базе ATmega328. Проект достаточно непростой: МК читал текстовые файлы с карты памяти microSD и выводил их на OLED дисплей. Никаких лишних компонентов на плате нет, МК тактируется от внутренних 8 МГц и всё работает отлично. Даже карта памяти подключена напрямую к МК =) Но в надёжных устройствах делать так не рекомендуется! Минимальная обвязка для МК и полезные советы:
Соединять все ноги питания (GND, VCC) максимально толстыми и короткими дорожками между собой:
- GND обычно делают полигоном на всю поверхность платы
- Я где то читал, что VCC рекомендуется соединять дорожками “внутри шелкографии”, то есть под МК. Оно и логично, так они получатся короче всего

Поставить керамический конденсатор ~100 нФ/nF (0.1 мкФ/uF) по питанию МК: между VCC и GND для сглаживания микропульсаций напряжения
- Располагать максимально близко к пинам питания МК
- Также параллельно ему можно поставить электролит (алюминиевый цилиндр) или танталовый конденсатор (компактный SMD чип) на 10-47 мкФ/uF, для сглаживания более серьёзных пульсаций напряжения. Особенно если МК питается от одного источника с другими потребителями, или используется некачественный источник питания.

Если нужна кнопка сброса (reset), подключаем её к RST и GND, т.е. кнопка должна подать на RST низкий сигнал. Внутри МК уже присутствует подтягивающий резистор на пин RST
- При наличии кнопки и дорожки от пина RST рекомендуется подтягивать пин к VCC резистором на 10 кОм, потому что внутренний подтягивающий резистор имеет довольно большое сопротивление и наведённые на дорожку помехи (она выступает в роли антенны) могут привести к сбросу МК

Если нужен внешний тактовый генератор – подключаем его между пинами XTAL1 и XTAL2 (см. распиновку своего МК), и оба пина подключаем к GND через керамические конденсаторы на 18-22 pF/пФ. Более точный номинал конденсатора можно узнать из даташита на генератор, но в 99% это 22 пФ
- Существуют генераторы со встроенными конденсаторами, например вот такие. На принципиальной схеме эти конденсаторы видно
- Не забываем в настройках платы или напрямую во фьюзах поставить внешнее тактирование. ВНИМАНИЕ! Если фьюзы настроены на внешнее тактирование и внешний генератор не подключен к пинам – вы не сможете прошить МК даже при помощи ISP программатора!

Если нужна удобная прошивка по ISP – выводим штекер для подключения. Вот тут можно открыть мой модуль такого штекера для EasyEDA

Если нужна прошивка по UART – выводим RX, TX, GND. Для автоматического сброса МК перед началом прошивки у USB-TTL преобразователя должен быть выведен пин DTR. Его подключаем к RST через конденсатор на 0.1 мкФ. Также подключаем, VCC если нужно запитать МК от UART преобразователя. Прошивать можно любым USB-TTL преобразователем с выходом DTR. В показанной схеме подключение к преобразователю будет RX->TX, TX->RX!

Я думаю теперь вы готовы к созданию проекта на своей плате!

Перенос МК с Arduino на свою плату
Напомню, что источник тактирования играет важную роль при загрузке прошивки. Микроконтроллер может быть настроен на тактирование от внутреннего генератора на 8 МГц, либо на тактирование от внешнего.
- При работе от внутреннего генератора МК запускается и работает просто при подаче напряжения, готов прошиваться как через UART (при наличии загрузчика), так и через ISP.
- При настройке на работу от внешнего генератора МК сможет работать и прошиваться только при подключении внешнего генератора. То есть если генератор физически не подключен к МК – его нельзя будет прошить даже через ISP.
Это же касается переноса микроконтроллера с платы Ардуино на свою плату: на Ардуино стоит кварц. Если на вашей плате есть кварц для МК – всё будет работать сразу. Если на вашей плате нет кварца – перепаянный с Ардуино МК не будет работать и прошиваться. Для переноса МК с платы Ардуино на свою плату (без кварца) нужно настроить МК на внутреннее тактирование, об этом мы говорили в прошлом уроке. Для этого нужно подключить к плате программатор (USB-ASP или Arduino as ISP) и прошить фьюзы
- Вручную через Avrdudeprog, выставив нужное во встроенном калькуляторе фьюзов.
- Вручную через Arduino IDE, сконфигурировав и выставив фьюз-байт вручную в boards.txt.
- Автоматически через конфигурацию ядра. Для Arduino Nano это может быть GyverCore или miniCore, там в меню платы есть пункт Clock -> Internal 8 MHz. В Arduino IDE жмём “Записать загрузчик” и прошиваются новые фьюзы, после чего можно выпаивать МК и запускать/прошивать его уже без кварца.
Видео
Полезные страницы
- Набор GyverKIT – большой стартовый набор Arduino моей разработки, продаётся в России
- Каталог ссылок на дешёвые Ардуины, датчики, модули и прочие железки с AliExpress у проверенных продавцов
- Подборка библиотек для Arduino, самых интересных и полезных, официальных и не очень
- Полная документация по языку Ардуино, все встроенные функции и макросы, все доступные типы данных
- Сборник полезных алгоритмов для написания скетчей: структура кода, таймеры, фильтры, парсинг данных
- Видео уроки по программированию Arduino с канала “Заметки Ардуинщика” – одни из самых подробных в рунете
- Поддержать автора за работу над уроками
- Обратная связь – сообщить об ошибке в уроке или предложить дополнение по тексту ([email protected])

