Site Loader

Делаем LPT программатор для AVR микроконтроллеров. — GetChip.net

Одним из самых простых программаторов AVR является программатор для LPT порта. Это обусловлено тем, что уровни сигналов LPT порта совместимы с уровнями сигналов необходимыми для программирования АВР. Поэтому сигналы с LPT порта можно напрямую подать на микроконтроллер (резисторы нужны лиш для защиты порта от случайных замыканий). Такой программатор можно собрать из подручных материалов буквально за 5 минут!

Как Вы видите схема LPT программатора для AVR предельно проста:

Для изготовления LPT программатора нам понадобится:

Резисторы можно использовать любые, какие найдете в пределах от 100 до 150 Ом. Можно программатор собрать вообще без резисторов, но тогда спалить порт станет еще легче. В качестве шлейфа можно заюзать IDE шлейф. При подключении шлейфа, для более устойчивой работы программатора, каждый «сигнальный» провод должен чередоваться с «земляным» проводом. Это позволит уменьшить уровень помех наводимых в линиях и за счет этого увеличить длину программирующего провода. Длина шлейфа должна быть в пределах 50 см. Еще нужен разъем для подключения к программируемому устройству.

Для внутрисхемного программирования Atmel рекомендует стандартные разъемы:


Если Вы планируете серьезно заняться микроконтроллерами, сделайте разъемы стандартными. Для разового программирования устройства я рекомендую использовать разъемы BLS «мамы» на программаторе (такими разъемами к материнской плате подключаются кнопки и светодиоды корпуса компьютера) и штырьки PLS «папы» на плате. Это позволяет максимально упростить разводку платы устройства, так как штырьки для программатора устанавливаются в непосредственной близости возле ножек микроконтроллера. Ножки MOSI, MISO, SCK у микроконтроллеров AVR всегда расположены вместе, поэтому для них можно применить строенный разъем. Отдельно делаем подключение для «земли»-GND и «сброса»-Reset.

Сборка LPT программатора за 5 шагов:

Перемычки между ножками разъема 2-12 и 3-11 нужны для того, чтобы наш программатор был виден для программ как программатор STK200/300 (STK200/300 своего рода стандарт и поэтому наш программатор станет виден для многих программами).

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

Общие рекомендации:
— LPT порт довольно нежен — его очень легко «пальнуть», поэтому при работе с портом будьте аккуратны.
— Отдельное подключение для «земли» я бы рекомендовал делать во всех программаторах. Это нужно для того, чтобы «землю» можно было подключить первой и уравнять потенциалы «земли» программируемого устройства и компьютера. (Для тех кто не знает — если у Вас компьютер включен в обычную розетку без заземляющего контакта, то в виду особенности фильтра блока питания компьютера, на корпусе компьютера всегда присутствует потенциал в 110В. При «удачном» подключении программатора этого вполне достаточно для того чтобы сжечь микроконтроллер или LPT порт компьютера.

Заключение:
-Если Вы надумали собрать свой первый программатор и у Вашего компьютера есть LPT порт, то программатор «5 проводков» лучший вариант! Он предельно прост и его повторить не составит труда. Кроме того, программатор совместим с классическими программаторами STK200/300, а значит, он будет поддерживаться многими программами для программирования AVR.
-Если Вы планируете программировать довольно часто, с целью обезопасить LPT порт, рекомендую собрать LPT программатор с буферными элементами (неплохой вариант LPT программатора можно посмотреть на изиэлектроникс) или собрать такой же простой COM программатор (COM порт гораздо выносливей и сжечь его трудней).

(Visited 70 724 times, 17 visits today)

LPT программатор для AVR / Habr

Если вы задумали собрать какое-нибудь устройство на AVR микроконтроллерах Atmel (да хоть свою homemade Arduino), Вам просто не обойтись без программатора. Программатор позволит прошить микроконтроллер нужной программой или, в случае с Arduino, записать в память микроконтроллера подходящий bootloader.

Вообще-говоря, существует превеликое множество программаторов, различающихся сложностью сборки, скоростью прошивки и надежностью работы. Самым простым из них является вариант, называемый в народе «Пять проводков». Но надежность его оставляет желать лучшего, так как убить им LPT порт легче легкого=) Более надежным является программатор STK200, который содержит буферную микросхему и гарантирует нормальную работу с портом.

Но из-за наличия микросхемы он становится гораздо сложнее в изготовлении для начинающего (то есть для меня).

Как с этим бороться?

Для защиты от замыканий добавляем резисторы по 150 Ом, для совместимости с STK200 (это позволит работать с большинством прошивающих программ) соединим выводы 2 с 12 и 3 с 11 в LPT. Как видите, схема совсем не усложнилась и в то же время появилась дополнительная защита.

Начинаем сборку!

На LPT разъеме типа папа (его можно взять от древнего кабеля к принтеру) необходимо соединить ножки от 18 до 25 — это выходы земли. Для защиты от статики между землей и корпусом LPT-разъема можно дополнительно впаять резистор на 1 КОм.

Затем нужно соединить выход 3 с выходом 11 и выход 2 с выходом 12 (отличительный признак STK200)

К ножкам 6, 7, 9, 10 припаиваются резисторы номиналом от 100 до 150 Ом. Это будут наши 4 сигнальных выхода.

Шлейф можно взять от IDE, длину лучше выбирать без фанатизма, сантиметров 20-30 должно хватить=) Чем короче, тем надежнее в итоге будет программатор. Хорошим тоном будет чередовать каждый сигнальный провод с землей (как это сделано, к примеру, в том же IDE шлейфе) для защиты от возможных помех.

Разъемы для внутрисхемного программирования…

Вот здесь можно дать фантазии разгуляться=) Можно отколоть группу 2×3 от IDE шлейфа, можно воспользоваться разъемы BLS типа «мама» (ими подключается передняя панель корпуса к материнской плате). Я отрезал две полоски по 3 пина от 40-пиновой линейки. Получилось не хуже=)

После спайки всего этого добра закрываем LPT-разъем и любуемся на творение рук своих.

Программатор STK200/300 для микроконтроллеров AVR

DI HALT:
Признаюсь, что я этот программатор никогда не собирал, т.к. у меня с первого раза заработала и никогда не подводила схема Громова. Однако, судя по многочисленным комментариям, эта схема работает далеко не у всех и тут не все гладко. Даже если есть COM порт, то не факт что он захочет правильно работать в таком режиме. Многое зависит и от операционки, и от тактовой частоты проца. В общем, грабель там закопано много. Но есть еще варианты относительно простой прошивки микроконтроллеров AVR — это программатор на LPT, аналог STK500/300. В своей простейшей модификации «пять проводков» не требует вообще ничего, даже резисторов. Соединяешь все напрямую и шьешь. Правда пожечь LPT порт тут проще простого. C токоограничитльными резисторами все безопасней, однако и это не спасает. Помогает установка буфферной микросхемы 74HC244.

И получаем STK200! Достоинства этой схемы в том, что это классика жанра. Ее поддерживают по моему вообще все прошивающие программы и оболочки. В том числе и разные среды разработки вроде CVAVR. Надежная и простая, как кувалда, схема. Недостаток один — нужен LPT порт, который ныне редкость.
Но что мешает под свои радиоопыты завести древнюю машинку уровня PIII-500 которую можно собрать из хлама за пиво? И работать будет все отлично и пожечь не жалко. Ну, а вдоволь наигравшись с STK и поняв премудрости процесса прошивки в деталях, можно собрать и USB программатор. А тут Михаил (Code007) написал отличную статью по сборке этого девайса. Грех не выложить.

В настоящее время микроконтроллеры AVR фирмы ATMEL получили весьма широкое распространение. Это обусловлено небольшой стоимостью, развитой периферией, доступностью и удобством средств разработки. Несомненным достоинством процессоров этой серии является возможность внутрисхемного программирования с использованием интерфейса SPI.
Для начала работы с этими микроконтроллерами необходимо обзавестись какими либо средствами осуществляющими внутрисхемное программирование. Существует достаточно большое количество различных конструкций программаторов, но на первоначальном этапе вполне подойдет адаптер

STK200/300. В данной статье я попытаюсь подробно описать процесс сборки этого адаптера. Причем настоятельно рекомендую повторить конструкцию именно так, как описано, а не на куске макетной платы. Рекомендация вытекает из шести летнего использования адаптера собранного на чем попало.
Адаптер получил свое название от комплектующихся им отладочных плат фирмы ATMEL для быстрого начала работы с микроконтроллерами AT90S8515 и ATmega103 соответственно. На самом деле приведенная схема соответствует одновременно обоим адаптерам, в ней присутствуют перемычки для определения наличия как адаптера STK200 (выводы 2-12 разъема X1), так и STK300 (выводы 3-11).

Рисунок 1. Электрическая принципиальная схема адаптера STK200/300


Для изготовления адаптера нам потребуется разъем DB25М (LPT-папа) с пластиковым корпусом, десятижильный плоский кабель длиной около 2 метров, разъем IDC-10, стеклотекстолит, детали по схеме и немного терпения.

Рисунок 2. Основные комплектующие (разъем IDC-10 обжат на кабеле)

Все детали монтируются на односторонней печатной плате. Разводка платы осуществлена не на 100%, поэтому часть проводников выполнена навесным монтажом. Такое решение было принято в связи с тем, что изготовление двухсторонней платы более трудоемко и в данной ситуации не имеет особого смысла. Плата изготавливается по всем известной лазерно-утюжной технологии.

Коротко напомню ее основные шаги.
На глянцевой бумаге с помощью лазерного принтера печатается чертеж печатной платы. В качестве бумаги подойдут листы из рекламного буклета или чего то подобного. Я использовал рекламную книгу о средствах автоматизации фирмы Siemens. Поверхность медной фольги текстолита зачищается мелкой наждачной бумагой и протирается ватным тампоном, при этом надо проследить что бы на поверхности не осталось волокон ваты. После чего следует приглаживание рисунка утюгом к фольге. Вот здесь добавлю свои замечания по этой важной процедуре. Для увеличения качества изготавливаемых плат и снижения количества брака, а также облегчения работы я использую не хитрое приспособление показанное на рисунке. Пояснять конструкцию думаю нет необходимости.

Рисунок 3. Приспособление для переноса рисунка печатной платы — зажим.

Заготовка печатной платы вместе с распечатанным чертежом проводников зажимается между двумя металлическими пластинами через дополнительные прокладки из мягкого термостойкого материала ( я использую ткань сложенную в несколько слоев). На получившийся пакет ставим утюг и включаем в сеть. Ждем минут пять и снимаем утюг. После чего даем пакету остыть. Вынимаем заготовку платы с уже “мертво” прилипшей распечаткой чертежа и опускаем в теплую воду для дальнейшего удаления бумаги. Удалив бумагу и протравив фольгу у вас должно получиться нечто подобное тому, что показано на рисунке.

Рисунок 4. Плата после травления

Далее необходимо удалить тонер. Я обычно для этого использую ацетон. Берем ватный тампон, смачиваем ацетоном и стираем тонер. Результат показан на рисунке. В принципе можно остановиться на этом, но мы будем лудить.

Рисунок 5. Тонер смыт

Для лужения используется следующий метод. Берем небольшую кастрюльку, наливаем немного воды, растворяем в воде лимонную кислоту ( сильно много сыпать не надо, так что бы была кислой) и кипятим. Когда вода закипит опускаем печатную плату, если лимонной кислоты было достаточно, то медь немного изменит цвет. Бросаем кусочек сплава Розе и ждем пока он расплавиться, после чего держа пинцетом ватный тампон равномерно наносим сплав по поверхности платы. Эта операция естественно проводится в кипящей воде. Должно получиться как на рисунке.

Рисунок 6. После лужения сплавом Розе

Далее вооружившись ножницами по металлу обрезаем лишнее по контуру и дорабатываем напильником.

Рисунок 7. Печатная плата готова

Подробности технологии лазерно утюжного метода (ЛУТ) можно найти в разделе «Радиолюбительские технологии» в статьях:
Создание печатной платы методом лазерного утюга
и
Изготовление печатной платы от и до. Видео урок.

Все, можно брать в руки паяльник и распаивать детали в соответствии с монтажной схемой.

Рисунок 8. После распайки пассивных компонентов (светодиоды и микросхема не установлены)

Далее припаиваются светодиоды и дорабатывается верхняя крышка разъема. Суть доработки заключается в сверлении двух отверстий под светодиоды. Как должно получиться можно посмотреть на рисунке.

Рисунок 9. Доработка верхней крышки разъема

Поле этого можно припаивать микросхему 74HC244. С помощью многожильного или одножильного монтажного провода не большого сечения ( я использовал провод во фторопластовой изоляции — МГТФ) припаиваем перемычки в соответствии с принципиальной схемой. Не забываем припаять перемычку с любого контакта из диапазона 18-25 на корпус разъема и с корпуса на общий проводник печатной платы, но уже со стороны монтажа. Для пояснения и наглядности привожу рисунок того, что должно получиться.

Рисунок 10. Монтаж печатной платы завершен

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

Рисунок 11. Распайка сигнальных цепей шлейфа

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

Рисунок 12. Распайка общего провода шлейфа

Установив собранную плату в верхнюю часть корпуса разъема проверяем не забыли ли припаять перемычку с контакта разъема на его корпус (о том как это сделать говорилось выше).

Рисунок 13. Распайка перемычки общего провода

Окончательно собираем корпус разъема. Распечатываем этикетку, обклеиваем ее с лицевой стороны скотчем и закрепляем на корпусе в предусмотренном для этого углублении на нем.

Рисунок 14. Собираем корпус и клеем этикетку

Ну вот и все. Адаптер для внутрисхемного программирования готов! Что получилось у меня показано на рисунке. У вас должно получиться то же самое, если вы следовали моим указания.

Рисунок 15. Адаптер готов

Можно проводить испытания. Подключаем к макетной плате с установленным микроконтроллером, запускаем программу для внутрисхемной прошивки с поддержкой STK200/300 ( например CodeVisionAVR Programmer) и наслаждаемся.

Рисунок 16. Проверяем работу

В заключение хотелось сказать пару слов о длине кабеля. В большинстве источников говорится что длина кабеля не должна превышать нескольких десятков сантиметров для обеспечения надежной работы адаптера. Однако практика использования адаптера с двух метровым кабелем, изготовленного по выше описанной технологии, не выявила никаких проблем. Кабель такой длины позволяет удобно располагать программируемое устройство на рабочем столе и отказаться от использования удлинителя параллельного порта компьютера. В последствии приходилось общаться с людьми утверждавшими что успешно использовали подобную конструкцию с кабелем длиной около десяти метров для внутрисхемного программирования по интерфейсу SPI.
Надеюсь, что мои рекомендации окажутся полезными для тех кто решится начать свою работу с микроконтроллерами AVR со сборки адаптера STK200/300.

Файлы к статье:

Кунавин Михаил
г. Волгоград

LPT и USB Программатор AVR микроконтроллеров

Первым шагом по освоению микроконтроллера для каждого наверняка является сборка программатора. Купить программатор тоже можно, но за совсем неразумные деньги, как по мне. Рассмотрим работоспособный программатор для AVR’ок, которым я пользуюсь вот уже 4-й год. В свое время PonyProg 2000 показал отец, программа мне очень понравилась, и было решено делать под нее программатор. Порывшись на сайте программы, обнаружил простую схему программатора LPT порта (COM порты я не рассматриваю по причине легкости их горения от статики):


Ее повторение не займет более часа, но гарантирует целостность вашего LPT порта и совместную работу с Pony Prog 2000. Микросхема 74HC244 – буфер. Резистор 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’ки.

Выбор среды для написания программ:
Теперь осталось выбрать, в какой среде писать программы и на каком языке. Рекомендую писать на С, если не критичен размер и скорость выполнения программы.

Его освоение намного легче ассемблера, но знание ассемблера незаменимо для написания коротких и быстрых программ, понимания работы микроконтроллера. Я пишу свои программы в связке бесплатных программ AVR Studio 4 и WinAVR и очень доволен результатом, но здесь на вкус и цвет товарищей нет, выбор за вами.

Миниатюрный USB программатор для AVR микроконтроллеров / Habr

Как театр начинается с вешалки, так программирование микроконтроллеров начинается с выбора хорошего программатора. Так как начинаю осваивать микроконтроллеры фирмы ATMEL, то досконально пришлось ознакомится с тем что предлагают производители. Предлагают они много всего интересного и вкусного, только совсем по заоблачным ценам. К примеру, платка с одним двадцатиногим микроконтроллером с парой резисторов и диодов в качестве обвязки, стоит как «самолет». Поэтому остро встал вопрос о самостоятельной сборке программатора. После долгого изучения наработок радиолюбителей со стажем, было решено собрать хорошо зарекомендовавший себя программатор USBASP, мозгом которого служит микроконтроллер Atmega8 (так же есть варианты прошивки под atmega88 и atmega48). Минимальная обвязка микроконтроллера позволяет собрать достаточно миниатюрный программатор, который всегда можно взять с собой, как флэшку.

Автором данного программатора является немец Thomas Fichl, страничка его разработки со схемами, файлами печатных плат и драйверами.
Раз решено было собрать миниатюрный программатор, то перерисовал схему под микроконтроллер Atmega8 в корпусе TQFP32 (распиновка микроконтроллера отличается от распиновки в корпусе DIP):

Перемычка J1 применяется, в случае если необходимо прошить микроконтроллер с тактовой частотой ниже 1,5МГц. Кстати, эту перемычку вообще можно исключить, посадив 25 ногу МК на землю. Тогда программатор будет всегда работать на пониженной частоте. Лично для себя отметил, что программирование на пониженной скорости на доли секунды дольше, и поэтому теперь перемычку не дёргаю, а постоянно шью с ней.
Стабилитроны D1 и D2 служат для согласования уровней между программатором и USB шиной, без них работать будет, но далеко не на всех компьютерах.
Светодиод blue показывает наличие готовности к программированию схемы, red загорается во время программирования. Контакты для программирования выведены на разъем IDC-06, распиновка соответствует стандарту ATMEL для 6-ти пинового ISP разъема:

На этот разъем выведены контакты для питания программируемых устройств, здесь оно берется напрямую с USB порта компьютера, поэтому нужно быть внимательным и не допускать кз. Этот же разъем применяется и для программирования управляющего микроконтроллера, для этого достаточно соединить выводы Reset на разъеме и на мк (см. красный пунктир на схеме). В авторской схеме это делается джампером, но я не стал загромождать плату и убрал его. Для единичной прошивки хватит и простой проволочной перемычки. Плата получилась двухсторонняя, размерами 45х18 мм.

Разъем для программирования и перемычка для снижения скорости работы программатора вынесены на торец устройства, это очень удобно

Прошивка управляющего микроконтроллера

Итак, после сборки устройства осталось самое важное — прошить управляющий микроконтроллер. Для этих целей хорошо подходят друзья у которых остались компьютеры с LPT портом 🙂 Простейший программатор на пяти проводках для AVR
Микроконтроллер можно прошивать с разъема программирования, соединив выводы Reset микроконтроллера (29 нога) и разъема. Прошивка существует для моделей Atmega48, Atmega8 и Atmega88. Желательно использовать один из двух последних камней, так как поддержка версии под Atmega48 прекращена и последняя версия прошивки датируется 2009 годом. А версии под 8-й и 88-й камни постоянно обновляются, и автор вроде как планирует добавить в функционал внутрисхемный отладчик. Прошивку берем на странице немца. Для заливки управляющей программы в микроконтроллер я использовал программу PonyProg. При программировании необходимо завести кристалл на работу от внешнего источника тактирования на 12 МГц. Скрин программы с настройками fuse перемычек в PonyProg:

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

Установка драйвера

Установка велась на машину с системой Windows 7 и никаких проблем не возникло. При первом подключении к компьютеру выйдет сообщение об обнаружении нового устройства, с предложением установки драйвера. Выбираем установку из указанного места:

Выбираем папку где лежат дрова и жмем Далее

Мигом появится окно с предупреждением о том, что устанавливаемый драйвер не имеет цифровой подписи у мелкомягких:

Забиваем на предупреждение и продолжаем установку, после небольшой паузы появится окно, сообщающее об успешном окончании операции установки драйвера

Все, теперь программатор готов к работе.

Khazama AVR Programmer

Для работы c программатором я выбрал прошивальщик Khazama AVR Programmer. Замечательная программка, с минималистичным интерфейсом.

Она работает со всеми ходовыми микроконтроллерами AVR, позволяет прошивать flash и eeprom, смотреть содержимое памяти, стирать чип, а также менять конфигурацию фьюз-битов. В общем, вполне стандартный набор. Настройка фьюзов осуществляется выбором источника тактирования из выпадающего списка, таким образом, вероятность залочить кристалл по ошибке резко снижается. Фьюзы можно менять и расстановкой галок в нижнем поле, при этом нельзя расставить галки на несуществующую конфигурацию, и это тоже большой плюс в плане безопасности.

Запись фьюзов в память мк, как можно догадаться, осуществляется при нажатии кнопки Write All. Кнопка Save сохраняет текущую конфигурацию, а Load возвращает сохраненную. Правда я так и не смог придумать практического применения этих кнопок. Кнопка Default предназначена для записи стандартной конфигурации фьюзов, такой, с какой микроконтроллеры идут с завода (обычно это 1МГц от внутреннего RC).
В общем, за все время пользования этим программатором, он показал себя с наилучшей стороны в плане стабильности и скорости работы. Он без проблем заработал как на древнем стационарном пк так и на новом ноутбуке.

Скачать файл печатной платы в SprintLayout можно по этой ссылке

Ну вроде все, если возникнут вопросы, постараюсь ответить.

Делаем LPT программатор для AVR микроконтроллеров. — GetChip.net

Одним из самых простых программаторов AVR является программатор для LPT порта. Это обусловлено тем, что уровни сигналов LPT порта совместимы с уровнями сигналов необходимыми для программирования АВР. Поэтому сигналы с LPT порта можно напрямую подать на микроконтроллер (резисторы нужны лиш для защиты порта от случайных замыканий). Такой программатор можно собрать из подручных материалов буквально за 5 минут!

Как Вы видите схема LPT программатора для AVR предельно проста:

Для изготовления LPT программатора нам понадобится:

Резисторы можно использовать любые, какие найдете в пределах от 100 до 150 Ом. Можно программатор собрать вообще без резисторов, но тогда спалить порт станет еще легче. В качестве шлейфа можно заюзать IDE шлейф. При подключении шлейфа, для более устойчивой работы программатора, каждый «сигнальный» провод должен чередоваться с «земляным» проводом. Это позволит уменьшить уровень помех наводимых в линиях и за счет этого увеличить длину программирующего провода. Длина шлейфа должна быть в пределах 50 см. Еще нужен разъем для подключения к программируемому устройству.
Для внутрисхемного программирования Atmel рекомендует стандартные разъемы:


Если Вы планируете серьезно заняться микроконтроллерами, сделайте разъемы стандартными. Для разового программирования устройства я рекомендую использовать разъемы BLS «мамы» на программаторе (такими разъемами к материнской плате подключаются кнопки и светодиоды корпуса компьютера) и штырьки PLS «папы» на плате. Это позволяет максимально упростить разводку платы устройства, так как штырьки для программатора устанавливаются в непосредственной близости возле ножек микроконтроллера. Ножки MOSI, MISO, SCK у микроконтроллеров AVR всегда расположены вместе, поэтому для них можно применить строенный разъем. Отдельно делаем подключение для «земли»-GND и «сброса»-Reset.

Сборка LPT программатора за 5 шагов:

Перемычки между ножками разъема 2-12 и 3-11 нужны для того, чтобы наш программатор был виден для программ как программатор STK200/300 (STK200/300 своего рода стандарт и поэтому наш программатор станет виден для многих программами).

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

Общие рекомендации:
— LPT порт довольно нежен — его очень легко «пальнуть», поэтому при работе с портом будьте аккуратны.
— Отдельное подключение для «земли» я бы рекомендовал делать во всех программаторах. Это нужно для того, чтобы «землю» можно было подключить первой и уравнять потенциалы «земли» программируемого устройства и компьютера. (Для тех кто не знает — если у Вас компьютер включен в обычную розетку без заземляющего контакта, то в виду особенности фильтра блока питания компьютера, на корпусе компьютера всегда присутствует потенциал в 110В. При «удачном» подключении программатора этого вполне достаточно для того чтобы сжечь микроконтроллер или LPT порт компьютера.

Заключение:
-Если Вы надумали собрать свой первый программатор и у Вашего компьютера есть LPT порт, то программатор «5 проводков» лучший вариант! Он предельно прост и его повторить не составит труда. Кроме того, программатор совместим с классическими программаторами STK200/300, а значит, он будет поддерживаться многими программами для программирования AVR.
-Если Вы планируете программировать довольно часто, с целью обезопасить LPT порт, рекомендую собрать LPT программатор с буферными элементами (неплохой вариант LPT программатора можно посмотреть на изиэлектроникс) или собрать такой же простой COM программатор (COM порт гораздо выносливей и сжечь его трудней).

(Visited 70 724 times, 17 visits today)

Программатор Громова | Электроника для всех

Самый простой вариант программатора для AVR это пять проводков, припаиваемых к порту контроллера и втыкаемых в LPT порт. Не спорю, можно и так. Но я все же не рекомендую этот способ. Даже схему подключения давать не буду — если надо будет сам найдешь. Так как данный метод не очень стабилен, возможны сбои при прошивке, длина проводков ограничена двадцатью сантиметрами (если больше, то будет глючить), поэтому придется шариться в комповой заднице. Да и LPT порт спалить проще простого. В общем не рулез.

Шарясь по инету, я нашел отличный программатор, работающий через RS232 он же COM порт. А также удобную программу для прошивки контроллера UniProf от Николаева. Схему программатора придумал Громов, создатель Algorithm Builder.

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

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

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

Для сборки программатора потребуется:

  • Три диода, любых из маломощных. Например 1N4148.
  • Семь резисторов на 1кОм. У меня резисторы типоразмера 1206
  • Если будешь делать по моей печатной плате, то можешь еще купить 3 резистора на 0 ом — перемычки, они же пофигисторы.

Печатная плата либо рисуется маркером, либо, как у меня, делается методом лазерного утюга.

Спаянную платку я запихал в корпусок, а провод подключил к компьютеру. Длина провода у меня составила метра полтора-два, а от программатора до контроллера стараюсь провод делать покороче.

Разьем DB9, что на фотке, я поставил для удобства. У меня туда подключаются разные прошивающие шнуры либо вот такой вот адаптер:

Программатор запаян, контроллер к нему подключен. Пора убедиться в том, что все сделано верно.

Запускай UniProf.exe и выбирай номер СОМ порта к которому у тебя подключен программатор. Сразу же должен определиться тип контроллера и высветиться над левым окном кода.

Не получилось? Тут три варианта:

  • Программатор спаян криво.
  • Дохлый контроллер.
  • Неправильно припаял проводки к микроконтроллеру.

Еще раз все досконально проверяешь и пробуешь снова. Должно получиться.

Дальше, если до этого ты никогда не работал с контроллерами, тебе возможно потребуется тестовая программа. Она не будет делать ничего полезного, зато позволит тебе точно быть уверенным, что все что ты сделал до этого ты сделал правильно.

Скачиваешь Atmel AVR Studio — это официальная среда для разработки программ под микроконтроллеры AVR. Студия поддерживает все микроконтроллеры семейства Atmel AVR. Найти ее последнюю версию можно на сайте Atmel.com

Далее создавай новый проект, в качестве языка программирования выбирай Assembler и укажи папку и имя где будет располагаться твой проект. В качестве отладчика бери AVR SIMULATOR и укажи с каким именно контроллером ты будешь работать. После чего забивай в текстстовое окно простейшую программу.

Вот ее примерный текст:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
.INCLUDE "m16def.inc"
; это подключается список макроопределений 
; без него компилятор не будет знать под какой 
; именно процессор мы собираем программу
; если у тебя другой контроллер, то подставь 
; соответствующий инклюдник. Они находятся в
; папке AVR Studio по адресу 
; "AVR Tools\AvrAssembler\Appnotes\"
 
 
.MACRO outi 
LDI R16,@1 
OUT @0,R16 
.ENDMACRO 
; задаем весьма удобный макрос, позволяющий 
; записать произвольное заданное число в любой
; регистров за одну строку кода. 
.CSEG
.ORG 0x0000
RJMP RESET
 
.ORG 0x0030
; Директива начала кода с адреса 0х0030
; адрес взят с большим запасом, потому как
; у разных AVR разных размеров таблица 
; прерываний. Так что уж чтобы наверняка!
 
 
RESET:
; стартовая метка
 
OUTI DDRA,0xFF
OUTI DDRB,0xFF
OUTI DDRC,0xFF
OUTI DDRD,0xFF
; Конфигурируем направления портов на выход
; Если данный контроллер не имет, например, порта
; С, то эту строчку надо закомментировать.
 
OUTI PORTA,0xAA
OUTI PORTB,0xAA
OUTI PORTC,0xAA
OUTI PORTD,0xAA
; Выдаем на выходы 10101010, чтобы получить
; четкую картину того, что на портах произошли
; изменения. После выполнения программы
; на выходах микроконтроллера в шахматном порядке
; будут либо напряжение питания, либо земля. Что 
; легко проверяется либо вольтметром, либо простейшим
; пробником на светодиоде.
 
RJMP RESET
; Зацикливаем программу.

.INCLUDE «m16def.inc» ; это подключается список макроопределений ; без него компилятор не будет знать под какой ; именно процессор мы собираем программу ; если у тебя другой контроллер, то подставь ; соответствующий инклюдник. Они находятся в ; папке AVR Studio по адресу ; «AVR Tools\AvrAssembler\Appnotes\» .MACRO outi LDI R16,@1 OUT @0,R16 .ENDMACRO ; задаем весьма удобный макрос, позволяющий ; записать произвольное заданное число в любой ; регистров за одну строку кода. .CSEG .ORG 0x0000 RJMP RESET .ORG 0x0030 ; Директива начала кода с адреса 0х0030 ; адрес взят с большим запасом, потому как ; у разных AVR разных размеров таблица ; прерываний. Так что уж чтобы наверняка! RESET: ; стартовая метка OUTI DDRA,0xFF OUTI DDRB,0xFF OUTI DDRC,0xFF OUTI DDRD,0xFF ; Конфигурируем направления портов на выход ; Если данный контроллер не имет, например, порта ; С, то эту строчку надо закомментировать. OUTI PORTA,0xAA OUTI PORTB,0xAA OUTI PORTC,0xAA OUTI PORTD,0xAA ; Выдаем на выходы 10101010, чтобы получить ; четкую картину того, что на портах произошли ; изменения. После выполнения программы ; на выходах микроконтроллера в шахматном порядке ; будут либо напряжение питания, либо земля. Что ; легко проверяется либо вольтметром, либо простейшим ; пробником на светодиоде. RJMP RESET ; Зацикливаем программу.

А лучше не копипасти, а сразу скачай файл проекта.

Далее жми на кнопку компиляции (или F7) и лезь в папку своего проекта. Там тебя уже должен поджидать ****.hex файл с прошивкой.
Запускай UniProf.exe, жми на кнопочку с открытой папкой и надписью HEX. Выбирай свой свежескомпиленный проект и жми ок.
Вторым окном UniProf попросит тебя ввести данные EEPROM, у нас EEPROM не используется, поэтому нажимай отмену.
Все, теперь можно прошивать. Жми на красную стрелку с надписью Prog и жди. По окончании можешь нажать чтение и поглядеть что записалось в твой контроллер — должно показать то же самое, что и было уже загружено в окно.

Теперь тебе остается подать питание на свой микроконтроллер и посмотреть что появилось на портах. Увидел «гребенку» из высоких и низких уровней напряжения? Отлично! Ты прошил свой первый в жизни контроллер! Теперь ты можешь с головой занырнуть в изучение микроконтроллеров AVR.

Если не заработало, то вот возможные грабли и пути решения.

  • Современные компьютеры, с гигагерцовыми процессорами, новомодными Вистами и Семерками очень плохо дружат с этим программатором. Мало того, что у вас может банально не обнаружиться COM порта, а если и будет так еще не факт что все заработает как надо. Рекомендую собрать себе для радиотехнических опытов из подручного хлама что то вроде PIII 800/Windows’98. Бесплатно нарыть такое чудо проблем не составит и сжечь не жалко, если что не так
  • Данная схема не работает через переходники USB-COM или работает, но ОЧЕНЬ медленно. Скажем прошивка одного микроконтроллера может длиться часа полтора.
  • Питание, на первый раз, лучше всего брать с блока компа. Меньше вероятность что либо сжечь или ошибиться
  • Проверяте схему по 3-4 раза! Т.к., судя по комментам, большая часть проблем из-за кривого монтажа.
  • Перед запуском программы в МК НУЖНО ОТКЛЮЧИТЬ ПРОГРАММАТОР и подать на вход RESET +5 вольт через резистор в 1..10кОм. С подключенным программатором ничего работать не будет, т.к. он прижимает RESET и не дает кристаллу стартовать.
  • Если UniProf не определяет МК, возможно у вас слишком быстрый компьютер. Для компенсации этого «недостатка» нужно включить галочку «Тормоз» Она показывается если отключить снятием галки EEPROM панель отображения данных EEPROM.
  • Если галка Тормоз не помогла, то пробуйте на другом компе. Т.к. тут СОМ порт обрабатывается в нештатном режиме, а значит не факт, что ваш СОМ порт поймет все правильно.
  • На худой конец, если ничего не помогает, попробуйте программатор из 5 проводков или другую прошивающую программу, например avrdude. Провода делайте как можно короче! 10-15 сантиметров это МАКСИМУМ!
  • Читайте комменты к записи. Там многие косяки уже были разобраны. Возможно и ваш окажется среди них.

Дополнение от Outsider:
1. Если сзади у компа нет разъема COM-порта, то это не на 100% означает, что такого порта нет на материнской плате в принципе. Пока еще на матерях встречаются разъемчики с 9 штырьками в два ряда — подробнее нужно смотреть документацию к материнской плате. Я на своей ASUS P5K SE нашел и успешно заюзал.

2. Да, +5 и GND это не земля и контакт из COM-порта, а именно внешнее питание. Проще всего его добыть в компе — +5 есть в красном проводе на любом из разъемов, питающих жесткие диски. А GND — на корпусе самого компа. Или на черном проводе того же разъема.

3. Если с UniProf что-то не срастается, то можно попробовать avrdude. Чтобы это сделать, нужно прописать в avrdude.conf следующее:

programmer
id = «nikolaew»;
desc = «serial port banging, reset=dtr sck=rts mosi=txd miso=cts»;
type = serbb;
reset = 4;
sck = 7;
mosi = 3;
miso = 8;
;

А затем запустить avrdude со следующими параметрами:

avrdude -n -c nikolaew -P com1 -p m16

где «com1» нужно заменить на твой порт (если, конечно, используется другой), а «m16» на нужный тип микроконтроллера. Список поддерживаемых программой контроллеров можно найти здесь:http://www.nongnu.org/avrdude/user-manual/avrdude_4.html

Если все в порядке, то программа скажет:
avrdude: AVR device initialized and ready to accept instructions

Дополнение от Riko
Эксприменатально было выяснено, что для правильной работы этого программатора напряжение питания МК должно быть не ниже 5 вольт (но не выше 5.5!!!). То есть если МК подключен к трем пальчиковым батарейкам, то вы обламываетесь, так как там 4.5 вольта! Запитывайте от компа!!!

Дополнение от SLY_DEr
Не работало. Сменил резисторы с 3к (не было на 1к) на 460ом’ные — заработало, но с ошибками.
Решил чисто ради спортивного интереса снизить скорость ком-порта в диспечере устроиств и о, чудо, все заработало как надо. Скорость порта снизил с 9600к до 4800к и плюс убавил буфер приема и передачи (там же) до значений 4 и 6 соответственно.

Если что непонятно, то не стесняйся спрашивать у меня в комментах.

З.Ы.
Если не получается ну никак, то может быть ваша материнска плата не поддерживает столь нестандартное обращение с COM портом и стоит попробовать другие программаторы? Например, STK200 или FTBB. Они хоть и сложней, но зато работают более корректно, без извратов.

alexxlab

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *