Перед начинающими вопрос “а чем мы будем прошивать свой контроллер?” встает практически сразу. Эта проблема решается двумя путями - покупаем серийный программатор или собираем свой собственный. Естественно нецелесообразноприобретать какой либо из серийных программаторов на начальном этапе знакомства с микроконтроллерами. Самым простым решением будет так называемый программатор «пять проводков». Это вариант вполне подойдет для разового применения, но существует большая опасность, что рано или поздно ваш LPT - порт в компьютере сгорит. В качестве бюджетного и безопасного варианта программатора для параллельного порта мы используем более совершенную схему.
Представляем простой и безопасный программатор для параллельного порта. Схема программатора достаточно распространена в различных вариациях и основана на использовании микросхемы-буфера 74HC 244N . Буфер сохраняет ваш порт принтера в целости и сохранности. Дополнительно в схему включен резистор, задачей которого является защита от статического электричества.
Программатор совместим с Атмеловскими STK 200/300 и поддерживается многими популярными компиляторами. Весь небольшой набор деталей для его сборки достаточно распространен и не вызовет трудностей с приобретением. Печатная плата выполнена в одностороннем варианте с несколькими перемычками.
Для подключения программатора к компьютеру удобно использовать кабель - удлинитель LPT -порта.
Схема в формате sPlan 6.0 и разводка платы в формате Sprint Layout 4.0 под ЛУТ вы можете скачать ниже.
Узнаем что такое ISP-интерфейс, разберемся с недорогим и удобным программатором USB ISP. Рассмотрим принципиальные схемы простейших программаторов для AVR микроконтроллеров с использованием COM и LPT портов компьютера. Данной информации вполне хватит чтобы прошить большинство моделей AVR микроконтроллеров не только в Linux, но и в других ОС.
Интерфейс внутрисистемного программирования ISP
Для того чтобы записать программу в AVR микроконтроллер вам понадобится программатор.
Программатор - это небольшая электронная схема, которая позволяет подключить микроконтроллер к одному из портов компьютера (COM, LPT, USB) для последующего считывания и записи прошивки (программирования).
Существует достаточно много разнообразных конструкций программаторов для AVR микроконтроллеров, которые подключаются к разным портам компьютера.
Наиболее надежный и удобный вариант - это программатор что подключается к USB-порту, поскольку в новых настольных компьютерах и ноутбуках уже не устанавливают COM и LPT порты.
В готовых устройствах программатор подключается к микроконтроллеру посредством интерфейса ISP (In System Programming) - интерфейс внутрисистемного программирования. ISP интерфейс представляет собою несколько проводников по которым поступает тактовый сигнал и данные для связки программатора с микроконтроллером.
Как правило ISP интерфейс размещают на платах в виде десяти или шести штырьков, к которым посредством подходящего коннектора через шлейф подключается программатор.
Рис. 4. ISP интерфейс на плате.
Назначение пинов в ISP интерфейсе:
- VCC - плюс питания, как правило +5В;
- GND - минус питания, земля (Ground);
- MOSI - вход данных (Master Out Slave In);
- MISO - выход данных (Master In Slave Out);
- SCK - тактовый сигнал (Serial Clock);
- RST - дла подачи сигнала сброса (Reset).
Для внутрисхемного программирования микроконтроллера достаточно всего 4 пина, поскольку питание микроконтроллера может осуществляться от самой схемы где он установлен.
Как подключить программатор к микросхеме-микроконтроллеру AVR если он не впаян в схему? - очень просто, используя те же пины ISP интерфейса, при необходимости запитав при этом микроконтроллер от источника питания.
Программатор USB ISP ASP
Для работы с AVR чипами я приобрел недорогой USB ISP программатор по цене примерно 10$. Такое устройство есть сейчас в продаже во многих отечественных и зарубежных интернет-магазинах, так что с покупкой проблем не должно возникнуть.
Рис. 5. USB ISP - программатор со шлейфом для внутрисхемного программирования AVR микроконтроллеров фирмы ATMEL.
Данный программатор безопасен в использовании, имеет небольшие размеры и поддерживается большинством программ для прошивки микроконтроллеров AVR. USB ISP работает под операционными системами Linux, Mac OS X и Windows. Для Linux никаких драйверов устанавливать не нужно, после подключения программатора к USB порту устройство сразу же определится и будет готово к использованию.
Ниже приведу распиновку коннекторов программатора USB ISP - она нам потом пригодится при подключении к микроконтроллеру.
Рис. 6. Расположение пинов на разъеме USB ISP (распиновка).
Рис. 7. Расположение контактов в гнездах коннектора подключенного к программатору USB ISP.
Что делать если нет возможности купить программатор USB ISP ? - можно программировать микроконтроллеры используя несложные самодельные программаторы что подключаются к COM или LPT порту, но лучше самому изготовить USB ISP при этом один раз запрограммировав микросхему-микроконтроллер для него простым самодельным программатором через COM или LPT порт.
Рис. 8. Принципиальная схема самодельного программатора USB ASP ISP.
Подробную информацию по изготовлению USB ASP, а также печатные платы, драйвера и прошивку для микроконтроллера можно найти на официальном сайте: http://www.fischl.de/usbasp/
К тому же в интернете достаточно много ресурсов по данному свободному программатору, есть много готовых разводок печатных плат, в том числе и в программе SprintLayout, поэтому подробно в данной статье останавливаться на этом не будем.
Программатор с использованием COM-порта
Этот программатор еще называют "программатором Громова", в честь того кто придумал эту схему, создателя программы Algorithm Builder (графическая среда для программирования AVR под Windows используя алгоритмический язык) - Г.Л. Громова.
Данный программатор позволяет программировать AVR чипы используя COM порт компьютера - интерфейс RS232. Для сборки такого программатора потребуется минимум деталей - 3 диода, 7 резисторов, разъем DB-9 или DB-25(в зависимости от того какой ответный разъем установлен у вас в компьютере) и коннектор ISP для подключения к микроконтроллеру (или же просто несколько проводников к чипу). Диоды в схеме можно использовать любые маломощные.
Рис. 9. Принципиальная схема программатора AVR микроконтроллеров через COM порт компьютера.
Для полноты информации ниже приведу распиновку портов RS-232 для вариантов DB-9 и DB-25.
Рис. 10. RS232 - COM Port, DB-9 расположение выводов.
Рис. 11. RS232 COM Port DB-25 - расположение выводов на разъемах.
Программатор с использованием LPT-порта
Как мы знаем, LPT порт компьютера предназначен для подключения локального принтера (Local Printer Port), но тем не менее его часто используют для подключения различных устройств и самоделок. В данном случаем мы можем его использовать для программирования AVR микроконтроллеров, собрав для данной цели очень простую схему что приведена ниже.
Рис. 12. Принципиальная схема программатора для AVR микроконтроллеров с использованием LPT порта компьютера.
Как видим, схема еще проще чем в варианте с , здесь нам нужны всего лишь 4 маломощных резистора и разъем (папа, со штырьками) для подключения к LPT порту компьютера.
Рис. 13. Расположение пинов для разъемов LPT-порта.
Все детали и соединения можно разместить в корпусе LPT-разъема, а для подключения к микроконтроллеру вывести шлейф с коннектором под ISP-интерфейс или же просто необходимые проводники для подключения к микро-чипу.
Программное обеспечение и заметки
Подключив COM или LPT программатор к микроконтроллеру нужно не забыть подать питание на сам микрочип. В качестве источника питания микроконтроллера можно использовать батарейки или блок питания со стабилизатором, это будет наиболее безопасно как для порта компьютера, так и для чипа. О том как использовать мы уже рассматривали.
Под Linux есть очень мощная программа которая умеет работать с USB ASP, COM и LPT программаторами - это программа AVRDUDE , о ней будет идти речь в следующих разделах.
Для прошивки AVR чипов под Windows с использованием данных COM и LPT программаторов нужна программа UniРrof от Николаева, которая представляет собою универсальный программатор для AVR (avr.nikolaew.org).
ВНИМАНИЕ! Будьте предельно внимательны и осторожны при сборке и использовании программаторов с использованием COM или LPT порта компьютера, простой ошибкой можно запросто
подпалить эти порты. Для нормальной работы таких программаторов нужно стараться использовать по возможности максимально короткие проводники от разъема к схеме программатора и микроконтроллеру. Микропроцессор компьютера желательно чтобы имел частоту не более
1-2 ГГц, а в качестве ОС для программирования чипов желательно использовать Win2000 или WinXP.
Также важно знать что переходники USB-RS232 (USB-COM Port) скорее всего не будут работать с программатором Громова, заработают возможно только те у которых стоят более новые микросхемы, так что лучше искать машину с родным COM-портом.
Заключение
Программаторы что рассмотрены в статье - это всего лишь несколько наиболее доступных и простых решений из большого списка программаторов для AVR: USBTinyISP, AVR-Doper, AVR vusbtiny, AVRISP-MkII, программаторы на FTDI и другие.
Теперь в любом случае вы сможете собрать доступный вам программатор и прошить хотя бы одну микросхему, на основе которой можно собрать другой более удобный программатор или же какое-то устройство.
В следующей статье мы разберемся как подключить разные модели AVR микроконтроллеров к программатору, узнаем где брать информацию о распиновке микроконтроллеров.
Довольно часто многие встречают на просторах интернета интересную конструкцию но сдерживает одно - она выполнена с применением контроллера. А это так сложно...
На самом деле всё намного проще. Если есть возможность приобрести контроллер, пол дела уже сделано. Останется "отутюжить" плату, протравить и запаять её деталями.. И вот доходит дело до контроллера. Как же его "оживить"? Как "прошить"? Начинаются мучительные поиски схемы и программы программатора. Схема найдена, но вот незадача - на задней стенке компьютера аж 8 разъемов USB, порт для принтера и ни одного порта СОМ для которого была найдена схема.
Есть и другой вариант развития событий. СОМ порт в компьютере есть. Но программатор почему то отказывается "шить" контроллер - постоянно выскакивает ошибка. А дело в том, что часто на современных материнских платах (и особенно в ноутбуках) СОМ порты делаются очень слабыми по току. Из-за этого процесс программирования заканчивается не начавшись. Во всех вышеприведенных случаях Вам поможет эта несложная схема.
Это программатор для порта LPT. При всей кажущейся сложности схема довольно проста и начинает работать сразу, не требуя никакой настройки. Детали доступные и стоят буквально копейки. Зато возможности... Этим устройством Вам без труда можно будет прошить контроллер не только в панельке, но и внутрисхемно (это касается устройств у которых плата разведена под SMD корпус контроллера, а покупать панельку за 20 долларов под него ну никак не хочется).
Собранная она выглядит вот так:
Этот программатор с мелкими отличиями кочует по интернету уже лет 20. Он известен как Clasic Tait Programer, ProPIC2, meProg. До сих пор выпускается некоторыми фирмами и успешно продается.
Последние версии программного обеспечения можно скачать отсюда:
- http://www.winpic800.com/
- http://melabs.com/support/progsoft.htm
- http://members.aon.at/electronics/pic/picpgm/
Вот настройки для WinPIC800:
А вот адаптер для прошивки 8-14-18-20 выводных контроллеров.
C этой схемой также часто просматривают: |
Первым шагом по освоению микроконтроллера для каждого наверняка является сборка программатора. Купить программатор тоже можно, но за совсем неразумные деньги, как по мне. Рассмотрим работоспособный программатор для AVR’ок, которым я пользуюсь вот уже 4-й год. В свое время показал отец, программа мне очень понравилась, и было решено делать под нее программатор. Порывшись на сайте программы, обнаружил простую схему программатора (COM порты я не рассматриваю по причине легкости их горения от статики):
Ее повторение не займет более часа, но гарантирует целостность вашего LPT
порта и совместную работу с Pony Prog 2000
. Микросхема – буфер. Резистор R1
– 100k, конденсатор C1
– 0.1мкФ. Диод D1
– любой кремниевый. LPT
разъем типа «папа». Теперь разберемся с ISP
разъемом, который будет использоваться для программирования. Выводы MISO
, MOSI
, SCK
, RESET
– управляющие, вывод LED
– к нему подключается светодиод, который сигнализирует чтение/запись прошивки в микроконтроллер, VDD
и GND
соответственно +5В и земля.
Для подсоединения микроконтроллера удобно использовать шлейф на 10 проводов и соответствующий IDC
, но это дело вкуса и каждый сам решает, как ему нравиться, главное не делать его слишком длинным, во избежание наводок. У меня получилось вот так:
Для тех, у кого по тем или иным причинам нету LPT порта и лень бегать к соседу зашить прошивку могу посоветовать толковый USB программатор (сайт проекта prottoss.com). Достаточно просто повторить схему и правильно прошить управляющий контроллер (для этого, как ни крути понадобиться LPT
или COM
порт). Вот такой USB
программатор собрал себе:
Перейдем к программной части. В начале говорилось, что программировать мы будет с помощью Pony Prog 2000
.
Первое включение и калибровка:
При первом использовании программатора не забываем корректно его настроить: Setup->Interface setup, в появившемся окне выбирай LPT
порт, к которому подключен программатор, выбираем AVR ISP API
в выпадающем списке, а флажки Polarity of control lines не трогаем, оставляем пустыми. Далее калибруем все это дело Setup->Calibration. Все, теперь мы можем с помощью нашей макетной платы программировать AVR"ки.
Выбор среды для написания программ:
Теперь осталось выбрать, в какой среде писать программы и на каком языке. Рекомендую писать на С, если не критичен размер и скорость выполнения программы.
Его освоение намного легче ассемблера, но знание ассемблера незаменимо для написания коротких и быстрых программ, понимания работы микроконтроллера. Я пишу свои программы в связке бесплатных программ и и очень доволен результатом, но здесь на вкус и цвет товарищей нет, выбор за вами.
Почти успех =) => =(
Спаял вроде все как на схеме)
Тоесть не вроде а так и есть)
Только вместо D1 поставил ИК диод незнаю скажется ли как то другово под рукой не было)
Первая проблема когда пытался прошить с настройкой AVR ISP API (LPT2 другово немог выбрать)
выбивало 16 ошибку, типа нет порта
После того как поменял настройки на AVR ISP I/O LPT1 выбило ошибку -24 типа я незнаком с вашим девайсом)
И пытается прошивать. . . пока без результатно(((
подскажите в чем проблема?
Слышал вроже нужно менять какие то настройке в биос?
так вот какие?7?
поздравьте с приобретением!
купил нечто миниатюрное, на usb, без корпуса и без всяких bells&whistles, в инструкции сказано что это аналог stk500, может определяться как avr910, но у меня определился как avr doper.
пока никуда не подключал - при попытке чтения фьюзов программа пишет programmer is not responding.
подозреваю, что так и должно быть.
теперь собственно вопрос. на самой плате есть разъемы на 6 и на 10 штырьков, но кабель - только на 10. для прошивки микроконтроллера мне надо только ножки к штырькам mosi, vcc, rst, miso и ground подключить? остальные могут пины микроконтроллера могут висеть свободными?
Для программирования МК
Для программирования МК требуется подключить к программатору MOSI, MISO, SCK, RESET и подать питание. Остальные можно не трогать. Смотри доку на программатор, какие из тех пинов нужно вывести.
тыкс
он отказывался у меня работать как avr910, как stk500, как stk500v1, зато прочитал фьюзы как stk2, и прошил флешку за пару секунд. попробую дособирать свой дивайс и запустить его))
микруха прошита!
первый раз, первый программатор, боюсь что-либо спалить)
Доброго времени суток всем!
Подскажите пожалуйста, а Выводы MISO, MOSI, SCK, RESET – управляющие, нужно напрямую подсоединять к МК или как здесь
Я имею ввиду через резисторы выводы MISO, MOSI, SCK, RESET подтягивать к питанию и земле надо?
Дело в том, что у меня мега16, там вывод RESET инверсный, сброс по нулю будет по идее, мне R3 на землю бросить?
Спасибо если кто откликнется!
p.s. Диплом с МК попался, а я не шарю:) Хочу разобраться, но тонкостей очень много...
Перед начинающими вопрос “а чем мы будем прошивать свой контроллер?” встает практически сразу. Эта проблема решается двумя путями - покупаем серийный программатор или собираем свой собственный. Естественно нецелесообразноприобретать какой либо из серийных программаторов на начальном этапе знакомства с микроконтроллерами. Самым простым решением будет так называемый программатор «пять проводков». Это вариант вполне подойдет для разового применения, но существует большая опасность, что рано или поздно ваш LPT - порт в компьютере сгорит. В качестве бюджетного и безопасного варианта программатора для параллельного порта мы используем более совершенную схему.
Представляем простой и безопасный программатор для параллельного порта. Схема программатора достаточно распространена в различных вариациях и основана на использовании микросхемы-буфера 74HC 244N . Буфер сохраняет ваш порт принтера в целости и сохранности. Дополнительно в схему включен резистор, задачей которого является защита от статического электричества.
Программатор совместим с Атмеловскими STK 200/300 и поддерживается многими популярными компиляторами. Весь небольшой набор деталей для его сборки достаточно распространен и не вызовет трудностей с приобретением. Печатная плата выполнена в одностороннем варианте с несколькими перемычками.
Для подключения программатора к компьютеру удобно использовать кабель - удлинитель LPT -порта.
Схема в формате sPlan 6.0 и разводка платы в формате Sprint Layout 4.0 под ЛУТ вы можете скачать ниже.