Контакти

Робимо програматор для avr мікроконтролерів. Мініатюрний USB-програматор для AVR мікроконтролерів. Пристрої з аналоговими адаптерами

06-01-2011

Опис

Цей простий AVR програматор дозволить вам безболісно завантажувати програми у форматі hex у більшість AVR мікроконтролерів від ATMEL, не жертвуючи своїм бюджетом та часом. Він надійніший, ніж більшість інших простих доступних AVR програматорів, і на його складання піде набагато менше часу.

AVR програматор складається з внутрішньосхемного послідовного програматора (з роз'ємом) та маленької друкованої плати з DIP панелькою, в яку ви можете помістити свій мікроконтролер та швидко його запрограмувати.

Ви також можете використовувати цей програматор тільки як внутрішньосхемний, за допомогою якого можна легко програмувати мікроконтроллер AVR, не виймаючи його з пристрою.

Весь AVR програматор збирається з поширених компонентів і вміщується в корпусі роз'єму COM порту. Друкована плата з DIP панелькою дозволяє вставляти в неї 28-вивідний AVR мікроконтролер ATmega8 у корпусі DIP, але ви можете виготовити друковані плати для мікроконтролерів у будь-яких інших корпусах. Цей програматор сумісний з популярним програмним забезпеченням PonyProg, яке показує вам хід процесу прошивки у вигляді шкального індикатора статусу.

Внутрішньосхемний послідовний програматор AVR

Плата з панелькою для AVR

Плата має мінімальну кількість компонентів і використовується для програмування мікроконтролерів поза цільовим пристроєм.


Плата включає 28 вивідну DIP панельку, кварцовий резонатор на 4 МГц або резонатор з двома конденсаторами по 22 пФ, і два роз'єми. Двоконтактний роз'єм служить для підключення до AVR мікроконтролера живлення +5 В, а 6-контактний - для підключення програматора.

Живлення мікроконтролера від зовнішнього джерела напруги, а не безпосередньо від послідовного порту, гарантує, що контролер отримає саме 5 В і забезпечить надійну та безпомилкову прошивку.

ПЗ PonyProg

Щоб мати можливість завантажувати hex файли з комп'ютера в мікроконтролер, вам потрібно завантажити та встановити програмне забезпечення . Після встановлення, перше, що потрібно зробити, це налаштувати PonyProg для роботи з AVR програматором. Для того, щоб зробити це, увійдіть в меню Setup і виберіть пункт Interface Setup. Нижче на малюнку підсвічені ті опції, які вам слід вибрати.

Наступним кроком виберіть «AVR micro» та тип мікроконтролера, який хочете запрограмувати (наприклад, ATmega8).

Тепер конфігурування PonyProg завершено, і ми можемо відкрити hex файл із програмою, яка буде зашита у мікроконтролер. Перейдіть в меню "File", виберіть "Open Program (FLASH) File ..." і вкажіть на hex файл, який треба зашити. Ви повинні побачити шістнадцяткові значення, приблизно такі, як показано на малюнку нижче. Якщо ви все ще не підключили програматор до послідовного порту комп'ютера, то зараз саме час це зробити. Переконайтеся, що ваш програматор фізично підключений до мікроконтролера AVR через плату з панелькою або 6 контактний роз'єм ICSP. Нарешті, клацніть на підсвіченій іконці Write Program Memory (FLASH) або йдіть в меню Command і виберіть Write Program (FLASH).

Клацніть на кнопці Yes, щоб підтвердити запис.

Тепер сядьте зручніше, розслабтеся і спостерігайте процес програмування по індикатору стану. PonyProg прошить AVR мікроконтролер і перевірить, чи завантажився hex файл без помилок. Цей процес зазвичай займає від 10 до 30 секунд, залежно від розміру програми, яку ви зашиватимете в мікроконтролер.

Після програмування з'явиться вікно Write successful, що показує, що AVR мікроконтроллер був запрограмований і тепер готовий до використання.

  • Перевіряйте монтаж та підключення до цільового мікроконтролера.
  • ну в цій схемі немає нічого військового і виготовляти її не треба а ввімкнув ком порт лоніка в комп і вперед, правда в моєму ще по кому порту варто буфер щоб випадково не спалити. -про фьюзи.адже неправильно встановиш і мікросхема залочиться
  • кому порт застарів. якщо є тільки usb то роботу з контролерами можна вважати закінченою навіть не почавши???? usb-com ні хто в мережі не пропонує. А якщо і пропонують то в схемі стоїть контролер. якщо вже збирати самому з нуля. а не так як зараз багато хто робить, замовив конструктор, напхав у дірки елементів, запаяв, і все. таких геніїв на службі вистачає. а підійдеш до такого з питанням він і до пуття знати не знає. адже хочеться знати докладно.
  • Ну звичайно ніхто (пишеться разом!) Не пропонує. Оскільки купа готових мікросхем є у типовому включенні - мостів USB-COM на 5В та 3.3В живлення. Але дуже грамотні громадяни природно про це не знають. Про AVR910-аналог від Проттоса теж не знають, в якому МК USB віртуальний COM-порт зображує і програмує ISP. Наприклад. У буржуїв теж купа аналогічних конструкцій. І докладних описів звичайно немає - це ж шукати треба. А хочеться відразу готовенького - натиснув на одну кнопку і все-все на блюдечку з блакитною облямівкою. А може, краще уроки вчити?
  • багато шанований SergeBS цей форум не для орфографічних помилок і тим більше не для повчань про те, що воно є. Тут допомоги і поради просять у людей, які знають і стикалися з тією чи іншою проблемою. а те, що є готове і можна купити і не напружуватися це звичайно круто. P.S проте спасибі ВАМ за участь у проблеммі. І ВІДДІЛЬНЕ ЗА ДУЖЕ ПРИГОДИЛИ ПОВНЕННЯ. буржуям привіт, а то що в них до?рена чого є цього те я і знати не міг. куди нам селянам
  • Угу. Типу "круті", які як хочуть так і пишуть. Причому проблему і сформулювати не можуть. Соплі типу: "хочу чавою-то знати, а чаво - ня знаю самм" - не береться до уваги.:)
  • Ви ще не знаєте з чого все це робиться... На китайській барахолці деталі для ваших схем продають на вагу кілограмами і ніякі стандарти якості до таких деталей не стосуються. Купуйте лише фірмові товари у відповідних фірмах.
  • Замовляю в Інтернет-магазинах (російських). Поки що (тьху * 3) на шлюб/халтуру тощо. не налітав.
  • Вітаю! Всіх з наступаючим Новим роком! :) Зібрав програматор для AVR за вказаною схемою (перевіряв 3 рази усі). Але поніпрог 2000 відмовляється бачити та програмувати контролер ATMega168-20PU - видає помилку device missing or unknown device (-24). Використовував стабілітрони КС407Г, транзистор КТ3102АМ та діод КД522Б. Кварц мав на 4.032 МГц. Живлення від L7805. Перед виникненням помилки встигають прийти сервісні повідомлення, які я моніторю за допомогою Advanced Serial Port Monitor, але там лише включення та вимкнення Break у процесі запису. Жодні дані не йдуть. Налаштовував ПоніПрог2000 все за інструкцією. Крок за кроком. Із чим ця помилка може бути пов'язана? Чи потрібно під'єднувати 22 ніжки до землі та 20 до живлення (аналогові земля та харчування)? Чому не використовується чіп-селект (SS ніжка 16 контролера)? Спасибі за допомогу!
  • Я зібрав цей програматор і використав: Резистори - вказаних номіналів Транзистор - KT3102ГМ Діод H48 це аналог 1N4148 Стабілітрони - BZX55C 5.1 вольта Також кварц на 4Мгц і 2 керамічних конденсатора на 22 пФ, але я не думаю. використання кварцу внутрішній/зовнішній ми встановлюємо програмованими бітами, із заводу мікрухи запрограмовані використовувати внутрішній кварц(якщо я не помилився) Зовнішнє живлення від +5В обов'язково.Я підключив від БП того ж ПК з якого заливав прошивку. Діод H48 (таке маркування присутнє на корпусі цього діода) на просторах інтернету кажуть що це аналог 1N4148. У мене все працює, ПоніПрог 2000 успішно залила прошивку в ATmega8. Фото http://i.imgur.com/34GhDcN.jpg http://i.imgur.com/gCzAuzA.jpg
  • Пораджу один із проектів avr mk ii clone, на базі ліби та прикладу від lufa. Контролер at90usb168 зазвичай йде з бутлоадером, що дозволяє після збирання залити прошивку через usb без зовнішнього програматора. Підтримує всі нинішні avr, включаючи xmega та нові тіньки, pdi/tpi протокол. Працює з avrstudio та dude, різні прошивки для них. Вихідники відкриті, шишки відпрацьовані. Наприклад, для нових студій достатньо інкрементувати версію fw у налаштуваннях прошивки. Збирається прошивка під winavr. Мій варіант у цій темі, від 12 років. Із фоточкою. http://m.radiokot.ru/forum/viewtopic...rt=700&t=26417
  • Здрастуйте. зібрав цей прогроматор для прошивки ATtiny 2313 все працює прог.читаем МК без проблем але ось така проблема атор схеми для якої я прошиваю МК написав що перший раз можна прошивати без зовнішнього кварцу, але при цьому спочатку заливати прошивку МК, а потім міняти Fuse коротше я залив прошивку, встала нормально, потім поміняв Fuse і натиснув Write але після того як я натиснув Write вилізла ось це
  • це назад я підкажіть будь ласка спробував прошити ATtiny 2313 із зовнішнім кварцом і поставив 2 конденсатори, кварц на 8 МГц, підк. прогром.он прочитав МК відкрив прошивку в поні виставив Fuse які треба ось це заводські а ось такі треба прошити http://i.imgur.com/gc4yyxA.gif але ще що я помітив у заводських стоїть одна галочка яку не можна прибрати називатися SPIEN ,а які треба прошити там немає цієї галочки ну добре далі продовжу свою проблему після того як я відкрию прошивку і виставив Fuse як на другій картинці я натиснув READ DEVICE пошол процес прошивки і на завершення вийшло ось це http://i.imgur.com/UpR5qhE.jpg потім я закрив поні і відкрив знову і натиснув прочитати МК і отримав ось це Device missing or unknown device (-24) таке ж що я прошивав без зовнішнього кварцу, вище описане,і після цього цей МК більше не читався хто може сказати в чому справа,що я зробив не так Просто вже 3 МК вбив велике спасибі прото я в цьому новачок
  • У мене ця помилка вилазила тільки коли я зовнішнє харчування не підключав, ну природно у тебе в схемі можуть бути ошбки, може ти не на ту мікропу поні прог налаштував (але малоймовірно адже прошивка залилася я сам новачок.) SPIEN - фьюз, який дозволяє роботу МК за інтерфейсом SPI. Усі мікроконтролери випускаються з встановленим бітом SPIEN. Вважається небезпечним ф'юзом.
  • Fuse-біт SPIEN встановлений за умовчанням у мікроконтролерах AVR (режим внутрішньосхемного програмування) і за допомогою PonyProg його прибрати не вдасться. Та й взагалі його краще не чіпати... Встановивши та запрограмувавши Fuse-біти як на останній картинці, ви налаштували мк на роботу від зовнішнього кварцу 8 МГц, відключили внутрішній дільник тактової частоти на 8 та включили Brown-Out Detector (модуль контролю живлення) з рівнем 2.7 В. І після цього програматор мікроконтролер не побачив, тому логічно було б подати на мікроконтролер зовнішнє живлення (не від PonyProg) та спробувати прочитати його знову. PS: Звичайно, якщо спочатку все було зроблено коректно (тип мікроконтролера в програматорі рі програмуванні було обрано правильно і Fuse-біти були правильно встановлені)
  • дякую за відповідь просто я прошив на 3 МК немає прошивку і тепер прогром.не бачить їх і мені треба їх перешити і я завжди подавав зовнішні живлення при прошивки але поні все одно його не бачить,але МК працює,я вставляв її на прилад для якого я її прошивав всі три робітники,але мені треба туди інші залити Я запитав у автора схеми для якої я їх прошивав як їх перешити він мені сказав що якщо із зовнішнім кварцем невизначається то треба ще зовнішній генератор тактової частоти робити і подавати сигнал на МК XTAL 1 тоді прогрім. побачить МК якщо хто може не складну схемку зовнішній генератор тактової частоти скільки гуглил не чого чот не знайшов або може хто інший спосіб а Fuse мені обов'язково треба було пам'ятати як на другій картинці тому що з заводськими працювати не буде спасибки за допомогу
  • Дякую за статтю! Чудовий адаптер. Працює спритно, без помилок. Я насамперед під LPT порт спаяв, не було під рукою COM штекера. Дак LPT порт згорів на першій заливці. Довелося бігти за COM штекером у магаз. Також рекомендую спаяти ф'юз лікаря - дуже корисна штука. Я перший-таки кристал так відф'юзіл, здавалося що він випустив свою душу (синій димок), а нннет! – Дохдур фьюз його миттєво повернув до життя. Ось і виходить: цей адаптер + док фьюз = повноцінний паралельний програматор.
  • Після "синього серпанку" жоден лікар його б до життя не повернув. А "Доктор фьюз" - так, напевно, іноді може бути корисним. Але майже завжди вдається обійтися і без нього, потрібно лише затактувати МК не від кварцу, а від зовнішнього генератора.
  • А ось мені пощастило, при першому конфігуруванні ф'юзів, зачинити так, що жоден генератор не врятує. Я не знав, що бувають 2 варіанти відображення ф'юзів: Прямий (історичний, канонічний) та інвертований (інтуїтивно зручний). Ось я й виставив у канонічній галки з фото інвертованого. До речі, PonyProg оперує ф'юзами в інвертованому представленні.
  • Читати всім:

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

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

Для складання програматора потрібно:

  • Три діоди, будь-яких з малопотужних. Наприклад, 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

Якщо все гаразд, то програма скаже:
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 портом і варто спробувати інші програматори? Наприклад, або . Вони хоч і складніші, зате працюють коректніше, без хитрощів.

На сьогодні існує безліч програматорів AVR мікроконтролерів подібного типу, але що мені не подобається, занадто багато "розсипухи" (дискретних елементів), в той час, коли існують спеціалізовані мікросхеми, у яких все вже є всередині.

Вибір мій упав на мікросхему GD75232, частина елементів якої, при відповідному включенні я задіяв для даного програматора. Обов'язково 10-та і 11 ніжки мікросхеми повинні з'єднуватися з землею.

Ця мікросхема стоїть на материнських платах, її роль - саме узгодження сигналів зовнішніх пристроїв із COM портом. На ілюстрації з даташита видно, які елементи як приєднані, (не розписуватиму, що як і навіщо, про це можна прочитати в описі мікросхеми). Я її спеціально не купував, а зняв із "убитої" душички.

Друковану плату не наводжу, тому що відрізав ножицями по металу шматок плати разом з мікросхемою, в результаті розміри плати вийшли 20х30 мм, провідники припаяли до 3-х роз'ємів

1- харчування +5в

2-роз'єм com порту

3-роз'єм ISP для програмування

Використовувати програматор можна з відомою програмою Pony Prog, в установках вибрати інтерфейс (Serial, COM1) для COM-порту та будь-який з 3-х видів інтерфейсів, які там перераховуються, без різниці, працює з усіма (JDM API, SI Prog I/0 , Si Prog API), картинки це пояснюють. Інші налаштування порту залишаються в програмі за промовчанням.

Програматор настільки простий, що не містить ні резисторів ні конденсаторів, тільки одна єдина мікросхема. Чіпляєте живлення +5в, підключаєте до панелі, в яку вставлений мікроконтролер AVR, приготовлений для програмування і програмуєте, як завжди в режимі ISP.

Схема перевірена та випробувана.

Буферизація

Прості програматори ефективні поки що йдеться про програмуванні мікроконтролерів або в DIP корпусі (зручно, коли можна мікросхему вийняти з панельки на робочій платі і встромити в панельку на програматорі, а потім, запрограмувавши, поставити на місце), або коли на робочій платі висновки мікроконтролерів не сильно навантажені зовнішніми елементами схеми.

Є відпрацьовані хороші схеми простих програматорів із буферизованими шинами типу STK200/300, зібрані на мікросхемах серії 244, 245, але вони призначені для підключення до LPT порту, який останнім часом вже є рідкістю на сучасних материнських платах. Тепер частіше зустрічаються лише USB і COM порти, а програматори USB більш складні для радіоаматорів-початківців у повторенні.

У більшості відомих простих програматорів, що працюють з COM портом, є загальний недолік: не у всіх достатня здатність навантаження.

Останнім часом все частіше застосовуються компоненти SMD, і мікроконтролери застосовують вже в корпусах типу SOIC і впаює безпосередньо в плату, без панелек. В цьому випадку для повторного перепрограмування треба вже або програмувати його прямо на платі, або випоювати чіп, а в деяких випадках доводиться попередньо відключати навантаження на його висновках у схемі, якщо виходить, що зовнішні елементи «саджають» імпульси програматора, якщо його шини не були буферизовані (уміщені струмом для роботи з підвищеним навантаженням).

З особистого досвіду скажу, що на ці недоліки страждають багато широко відомих простих програматорів, наприклад на 5-ти резисторах, або відома схема на транзисторі, резисторах і стабілітронах: при підвищеному навантаженні на шинах програматора починаються проблеми. Для того, щоб не робити новий програматор, є простий шлях покращити навантажувальні характеристики програматора - це буферизувати вже наявні шини для сигналів, лише додавши ще одну мікросхему.

В даному випадку я взяв, що у мене було під руками – мікросхему 561ПУ4 (чи можна її західний аналог CD4050). У складі цієї мікросхеми міститься шість буферних неінвертуючих елементів, які повторюють вхідний сигнал на виході, не вносячи до нього змін. Кожен такий елемент має певну здатність навантаження, з ілюстрації, взятої в датасіті, видно структуру тих дискретних елементів, що містяться всередині буфера.

Під'єднавши до нашого програматора таке доповнення між висновками програматора і роз'ємом для програмування, ми отримаємо пристрій з підвищеною здатністю навантаження. У нас три сигнали з порту СОМ працюють на прийом, і один сигнал (MISO) працює на передачу. Припаявши до вже наявної схеми за допомогою коротких проводків ще одну мікросхему буфера, я протестував роботу нової схеми і порівнявши з тим, що було раніше, переконався, що ефект є. На тих платах, де я стикався з подібною проблемою при програмуванні, мені доводилося від'єднувати навантаження на час програмування, а тепер з новою схемою цього робити вже не потрібно.

Рекомендую всім власникам простих програматорів доопрацювати схему, що є у вас, таким же чином, якщо при програмуванні ви стикалися з подібними проблемами, додавши мікросхему буфера, не обов'язково цю, можна використовувати й інші подібні за функціональними властивостями мікросхеми типу 74HC125, 74HC126на базі цих мікросхем, можна переводити виходи програматора взагалі у високоімпедансний стан, що дозволить не відключати роз'єм ICSP від ​​плати, особливо це зручно при роботі з макетною платою, варіацій застосування мого програматора як базовий модуль дуже багато, це і програмування мікросхем типу 24Схх 93Схх а також для програмування PIC контролерів, але цю тему я можливо розвину трохи пізніше в цій статті.

Z – стан шин на виході

Найкраще - ворог хорошому (с).

Все як працює, але варто додати в схему, що чи ще, як вона з маленької перетворюється на "монстра", а що робити? Іноді в процесі налагодження доводиться йти на це заради комфорту в роботі, адже іноді по кілька десятків разів треба встромляти роз'єм. ICSPповторно перепрограмуючи мікроконтролер, так це заняття набридає часом, а якщо залишити програматор постійно підключеним, до схеми, то схема програматора буде впливати на роботу пристрою, але є рішення про яке я згадував вище, це перевести стан шин у високоімпедансне - Zстан, тоді схема програматора може бути підключена скільки завгодно довго і не буде тепер шунтувати шини мікроконтролера, заради такого випадку знайшов цю мікросхему і використовував її як буфер. , програмування приєднуючи його сигнали до схеми. На момент програмування, треба кнопку утримувати в натиснутому стані, а після того, як процедура програмування пройде успішно, відпустити. Z

З даташиту 74HC125, За схемою та таблицею істинності видно, що якщо подати на висновки А"одиницю" схема переводить виходи у високоімпедансний стан (фактично взагалі відключається від навантаження) і до того ж у цієї мікросхеми ще більша здатність навантаження, ніж у мікросхеми, яку я вибрав як буфер у попередній схемі.

загалом на ваш суд викладаю чергову схему і супроводжуючі картинки до неї.

Володимир Науменко

м. Калінінград.

Дізнаємося що таке 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 інтерфейсі:

  1. VCC – плюс харчування, як правило +5В;
  2. GND – мінус харчування, земля (Ground);
  3. MOSI – вхід даних (Master Out Slave In);
  4. MISO – вихід даних (Master In Slave Out);
  5. SCK – тактовий сигнал (Serial Clock);
  6. 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 мікроконтролерів до програматора, дізнаємось де брати інформацію про розпинування мікроконтролерів.

У сучасних електронних схемах дедалі частіше застосовуються мікроконтролери. Та що там говорити, якщо сьогодні не знайти навіть звичайну ялинкову гірлянду без мікроконтролера всередині – він задає різні програми ілюмінації.

Я вперше зіткнувся з мікроконтролерами, коли збирав свій перший. Ось тоді і з'ясувалося, що контролер без прошивки - це просто шматок пластмаси з ніжками.

А щоб залити потрібну прошивку в АТМЕГ, ніяк не обійтися без програматора. Далі ми розглянемо дві найпростіші та перевірені часом схеми програматорів.

Схема перша

За допомогою цього програматора можна прошивати практично будь-який AVR-контролер від ATMEL, треба тільки звіритися з розпинування мікросхеми.

СОМ-роз'єм на схемі – це "мама".

Про всяк випадок наводжу розведення друкованої плати для атмеги8 (), хоча таку примітивну схему простіше намалювати від руки. Плату перед печаткою потрібно віддзеркалити.

Файл друкованої плати відкривати за допомогою популярної програми Sprint Layout (якщо вона у вас ще не встановлена, то краще відразу).

Як відомо зі схеми, для складання програматора знадобиться дуже мало деталей:

Замість КТ315 я встромив SMD-транзистор BFR93A, які у мене залишилися після складання.

А ось весь програматор у зборі:

Живлення (+5В) я вирішив брати з USB-порту.

Якщо у вас новий мікроконтролер (і раніше ніхто не намагався його прошивати), то кварц із супутніми конденсаторами можна не ставити. Робота без кварцового резонатора можлива завдяки тому, що камінь із заводу йде з бітом на вбудований генератор та схема, відповідно, тактується від нього.

Якщо ваша мікросхема б/у-шна, то без зовнішнього кварцу вона може і не запуститися. Тоді краще ставте кварц на 4 МГц, а конденсатор краще на 33 пФ.

Як бачите, я кварц із конденсаторами не ставив, але про всяк випадок передбачив під них місця на платі.

Заливати прошивку найкраще за допомогою програми PonyProg (завантажити).

Прошивка за допомогою PonyProg

Заходимо в меню Setup->Calibration->Yes. Повинно з'явитися віконце "Calibration OK".

Тепер встромляємо мікроконтролер в панельку програматора, і подаємо живлення 5 вольт (можна, наприклад, від окремого джерела живлення або порту ЮСБ). Потім тиснемо Command -> Read All.

Після читання з'являється вікно "Read successful". Якщо все ок, то вибираємо файл із потрібною прошивкою для заливки: File -> Open Device File. Тиснемо "Відкрити".

Тепер тиснемо Command -> Security and Configuration Bits та виставляємо фьюзи, які потрібно.

Ось і все, МК прошитий та готовий до використання!

Майте на увазі, що при прошивці за допомогою інших програм (не PonyProg) біти можуть бути інверсними! Тоді їх треба виставляти з точністю навпаки. Визначити це можна, вважаючи фьюзи та подивившись на галку "SPIEN".

Схема друга

Ще одна версія програматора, за допомогою якого можна залити прошивку в мікроконтролер АТМЕГ (так званий програматор Геннадія Громова). Схема складається лише з 10 дітей:
Діоди можна взяти будь-які імпульсні (наприклад наші КД510, КД522). Роз'єм - "мама". Живлення на МК (+5В) потрібно подавати окремо, наприклад, від того самого комп'ютера з виходу USB.

Все це можна зібрати навісним монтажем прямо на роз'ємі, але якщо ви крутий паяльник і знаєте, що таке smd-монтаж, то можете зробити гарно:

Алгоритм прошивки за допомогою програматора Громова

Програматор із встановленою мікросхемою підключаємо до СОМ-порту комп'ютера, потім запускаємо Uniprof, потім подаємо живлення мікроконтролер. І насамперед перевіряємо, чи читаються фьюз-біти.

Якщо все ок, вибираємо файл з потрібною прошивкою і тиснемо запис.

Будьте гранично уважні та обережні, тому що якщо глюкане при записі ф'юзів, то МК або на викид, або паяти схему лікаря (а вона складна). Якщо зміните біт SPIEN на протилежний - результат буде той самий (до лікаря).




Сподобалася стаття? Поділіться їй