Мініатюрний USB-програматор для AVR мікроконтролерів. Програматор USB ISP для AVR: Ще один крок у бік від ардуінонізації Программатори на мікроконтролері atmega8 зробити usb

Мініатюрний USB-програматор для AVR мікроконтролерів. Програматор USB ISP для AVR: Ще один крок у бік від ардуінонізації Программатори на мікроконтролері atmega8 зробити usb

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

відкриває великі перспективи перед радіотехніком. Мікроконтролери випускаються лише кількома фірмами, лідерами з яких є MicrochipTechnology, ATMEL, ARMLimited. Головною особливістю подібних приладівє необхідність їх програмної прошивки. Для цього й потрібні програматори. На сьогоднішній день існує величезний вибір різних типівПрограматорів, щоправда, ціна таких виробів дуже висока, і не кожен радіоаматор зможе дозволити собі придбати такий пристрій.

У цій статті ми розглянемо USB-програматор (AVR) на базі керуючого мікроконтролера Atmega 8. Цей виріб досить простий, щоб радіоаматор зміг зібрати його самостійно і не витрачав великі гроші на фірмовий виріб. Вибраний нами USB-програматор (AVR) має мінімальну обв'язку мікроконтролера, що дозволяє зібрати мініатюрний прилад. Такий виріб не займе багато місця, він має звичайні флешки. USB-програматор (AVR) у своїй схемі містить мікроконтролер тип корпусу - TQFP 32 (не слід плутати з типом корпусу DIP, тому що у них різні розпинки). Схему такого пристрою наведено на фото.

Почнемо опис схеми приладу. Перемичка J1 використовується у тому випадку, коли виникає необхідність прошивки мікроконтролера, що має тактову частоту нижче 1,5 МГц. За бажання ця перемичка легко виключається зі схеми, для цього 25-й висновок контролера сідає на «землю». У такому випадку AVR-USB-програматор завжди функціонуватиме на зниженій частоті. Слід врахувати, що програмування займає більше часу, але вирішувати, звичайно ж, вам. Стабілітрони D1, D2 застосовуються для узгодження рівня між USB-шиною та програматором. Блакитний світлодіод сигналізує про готовність пристрою до програмування мікроконтролера, червоний діод горить у процесі програмування. Схема має IDC-06 роз'єм, який виведені контакти, розпинування яких відповідає типу ATMEL 6-пінового роз'єму ISP. На вказаний роз'єм виводяться контакти живлення мікроконтролерів, воно береться з USB-порту персонального комп'ютера, отже, необхідно бути уважним, щоб не допустити За допомогою цього ж роз'єму відбувається програмування і контролера, що управляє, для цього необхідно з'єднати контакти Reset на контролері і на роз'ємі (на схемі показано червоним пунктиром).

Перемичка зниження швидкості програматора та роз'єм підключення мікроконтролера розташовані на торці пристрою. Ось що є USB-програматор (AVR), як бачите, все просто.

Після збирання пристрою необхідно прошити керуючий мікроконтролер, для цього рекомендую використовувати програму PonyProg. При програмуванні заводимо кристал на функціонування від зовнішнього джерела тактуючого на 12 МГц.

Описаний у цій статті USB-програматор для AVR працює з усіма мікроконтролерами типу AVR, дозволяє їх прошивати, дивитися записаний вміст пристрою, прати чіпи, змінювати конфігурацію.

Дізнаємося що таке 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 мікроконтролерів до програматора, дізнаємось де брати інформацію про розпинування мікроконтролерів.

У цій статті ми опишемо крок за кроком етапи виготовлення USBasp програматора для мікроконтролерів AVR. В окремих статтях наведемо опис встановлення драйверів для операційних систем Windows XP та Windows 7 (x64/x86). Наприкінці посту розміщено посилання з необхідною документацією виготовлення програматора USBasp своїми руками.

Програматор USBasp, завдяки своїй простоті у виготовленні та використанні недорогих та широкодоступних елементів, став дуже популярним серед радіоаматорів. Його параметри роботи не поступаються професійним та дорогим програматорам мікроконтролерів AVR.

Основні характеристики програматора USBasp

  • Працює з кількома операційними системами – Linux, Mac OS X та Windows – включаючи Windows 8!
  • Не потребує зовнішнього живлення.
  • Вміє програмувати зі швидкістю до 5kB/s
  • Є варіант (Switch 2) зниження швидкості програмування – для процесорів із кварцом менше 1,5 МГц
  • Забезпечує напругу для програмування (Switch 1) 5 вольт
  • Вказівка ​​роботи програматора за допомогою світлодіоду

Перед початком роботи варто ознайомитися з послідовністю всіх виконуваних дій, а саме:

  1. Вибір схеми/малюнку друкованої плати
  2. Перенесення малюнка друкованої плати на фольгований склотекстоліт
  3. Травлення друкованої плати у розчині хлорного заліза
  4. Свердління отворів
  5. Монтаж елементів (пайка)
  6. Програмування Atmaga8 програматора
  7. Підключення програматора до комп'ютера
  8. Інсталяція драйверів – Windows XP, Windows 7
  9. Вибір програми з підтримкою USBasp

Існує багато версій USBasp програматора, але всі вони ґрунтуються на головній схемі, автором якої є Thomas Fischl. Прошивка мікроконтролера програматора також його авторством.

Оригінальна схема програматора:

В даному випадку за основу було обрано оригінальну схему. Оскільки використання перемичок у оригінальної схемине зовсім зручно, було вирішено використовувати DIP перемикачі. Також було змінено деякі значення резисторів.
Більше того, в оригінальній схемі лінії TxD та RxD виведені на роз'єм ISP, хоча це не потрібно (точніше не використовуються на практиці).

Нижче наведена схема із внесеними змінами:

Будівництво USBasp програматора

Існує багато версій друкованої плати цього програматора, деякі можна знайти на офіційному сайті USBasp. Однак, була зроблена своя на основі вище представленої схеми.

На жаль, через застосування DIP перемикачів, малюнок плати став трохи складнішим, що призвело до застосування 2 коротких перемичок, з метою щоб друкована плата була односторонньою.

Нижче наведено результат друкованої плати:

Як бачимо на малюнку, в програматорі не застосовувалися SMD елементи. Порожній простір на платі „залитий” полем маси, головним чином для того, щоб не витравлювати велику кількість міді, а також знизити вплив перешкод на програматор.

Список елементів, що використовуються в USBasp програматорі:

  • R1: 10к
  • R2: 180
  • R3: 100
  • R5, R6: 68
  • R7: 2к2
  • C1, C2: 22п
  • C3: 10мк
  • C4: 100н
  • LED1: Червоний світлодіод на 20мА
  • LED2: Зелений світлодіод на 20мА
  • D2, D3: стабілітрони на 3,6В
  • X1: USB-роз'єм, тип B
  • SV1: Гніздо під роз'єм IDC-10
  • Q1: Кварц 12МГц, корпус HC49-S
  • SW1: Dip перемикач трипозиційний
  • IC1: Atmega8 ( ПРИМІТКА: Не слід використовувати мікроконтролер Atmega8 - PU через його обмеження максимальною тактовою частотою до 8 МГц!)

Перенесення малюнка друкованої плати USBasp програматора на склотекстоліт виконано з допомогою методу ЛУТ (). Як це робити описувати не будемо, оскільки цієї інформації в мережі багато.

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

Наступний етап – витравлення плати у розчині хлорного заліза. Під час травлення бажано підтримувати температуру розчину не нижче 40 °C, тому банку з розчином занурюємо у гарячу воду:


Після завершення процесу травлення необхідно видалити тонер ацетоном.

Залишається тепер лише просвердлити отвори. Після завершення процесу виготовлення плати можна приступати до паяння елементів USBasp програматора, починаючи з перемичок.

Готові до друку (у форматі PDF) малюнок друкованої плати знаходиться наприкінці статті. Ви також можете знайти кілька варіантів на офіційному сайті проекту.

Перший запуск USBasp програматора

Тепер, коли всі деталі спаяні, залишається лише «прошити» мікроконтролер Atmegę8 самого програматора. Для цього потрібен окремий програматор, це може бути, наприклад, STK 200 (LPT порт), STK500 і т.д. LPT програматор підключається до USBasp через роз'єм IDC-10.

Зверніть увагу, що розподіл пінів у роз'ємі оригінального програматора (USBasp) знаходиться праворуч, у той час як у версії, що описується в цій статті – зліва:

Розподіл, показаний на малюнку праворуч, відповідає тим, які застосовує компанія Atmel у оригінальних програматорах. Такий розподіл зменшує ризик виникнення перешкод під час програмування у разі застосування довгих дротів від програматора до контролера, оскільки кожна сигнальна лінія екранована масою, крім MOSI.

На час програмування увімкніть режим SELF шляхом перемикання DIP перемикача № 3 у положення ON. Завдяки цьому з'являється можливість запрограмувати Atmega8. Після завершення програмування положення перемикача (3) має бути переведене в стані OFF.

Останню версію прошивки можна завантажити з офіційного сайту. Рекомендуємо версію Atmega8, яка знаходиться в архіві: usbasp.2011-05-28.tar.gz.

Зверніть увагу, щоб перед програмуванням Atmega8 необхідно виставити ф'юзи, які мають наступні значення:

  • # для Atmega8: HFUSE=0xC9 LFUSE=0xEF
  • # для Atmega48: HFUSE=0xDD LFUSE=0xFF

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

Встановлення драйверів USBasp програматора

Спосіб встановлення драйверів програматора описаний в окремих статтях, там є і самі драйвера. Нижче наведено прямі посилання на ці статті:

  • Встановлення драйверів для програмного забезпечення USBasp під Windows XP
  • Встановлення драйверів для USBasp Windows 7 x64/x86

Програми для роботи програматора USBasp

Самої популярною програмою, що підтримує програматор USBasp, це консольна програма AVRdude. Також існує безліч похідних програм, використання яких набагато зручніше. Вони представлені у статті Порівняння програм підтримки програматора USBasp.

У моєму випадку це абсолютний рекордсмен за швидкістю доставки - близько 5 місяців безтурботного блукання незрозуміло де. Незважаючи на жахливу затримку за часом, пакет я все-таки отримав, чому радий, незважаючи на недоліки, про які розповім нижче. Оскільки в мене дуже погана пам'ять, то треба було об'єднати знайдену корисну інформацію десь в одному місці у вигляді пам'ятки, збирати її по крихтах у різних закутках мережі виявилося нетривіальним, тому оформлю все це окремим постом.
USB ISP - найдешевший програматор контролерів AVR, що можна знайти у продажу, брався для розширення кругозору та більш поглибленого вивчення AVR.
Огляд включає: опис програматора, як його підключити до чіпа, налаштування його роботи в програмах AvrDude Prog, Khazama, Atmel Studio 7, і не тільки це.

Звичайно замість нього можна використовувати Arduino UNO з прошитим у нього скетчем ArduinoISP, але це не зручно, метушня з проводами, особливо якщо UNO всього одна, відбиває ентузіазм. Простіше було отримати окремо такий програматор, точніше два. З двох причин:
1) Ще перед покупкою вже з відгуків було зрозуміло, що якість паяння цих пристроїв страждає, а деяким ще з розколотими стабілітронами вони приходили. Вирішено було підстрахуватися, замовивши два.
2) Один програматор також можна шити іншим, переставивши перемичку на веденому пристрої.

Технічні характеристики

Підтримувані ОС: Windows, MacOS, Linux
Процесор: Atmega8A
Інтерфейс підключення до ПК: USB
Інтерфейс програмування: ISP (внутрішньосхемне)
Напруга програмування: 5В або 3.3В (залежно від положення перемички JP2)
Частота програмування: 375кГц (за замовчуванням) та 8кГц (при замкнутій перемичці JP3)
Підтримувані контролери:всі AVR з інтерфейсом SPI
Опис:

Список підтримуваних мікроконтролерів

ATmega серія

ATmega8 ATmega48 ATmega88 ATmega168 ATmega328
ATmega103 ATmega128 ATmega1280 ATmega1281 ATmega16
ATmega161 ATmega162 ATmega163 ATmega164 ATmega169
ATmega2560 ATmega2561 ATmega32 ATmega324 ATmega329
ATmega3290 ATmega640 ATmega644 ATMEGA64 ATmega649
ATmega6490 ATmega8515 ATmega8535

Tiny серія

ATtiny12 ATtiny13 ATtiny15 ATtiny26 ATTINY25
ATtiny45 ATtiny85 ATtiny2313

Серія Classic

AT90S1200 AT90S2313 AT90S2333 AT90S2343 AT90S4414
AT90S4433 AT90S4434 AT90S8515
AT90S8535

CAN серія

AT90CAN128

PWM серія

AT90PWM2 AT90PWM3

Зовнішній вигляд

Комплект поставки мінімальний – програматор + шлейф без гумки. У моєму випадку у подвоєній кількості.

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















Деякі отвори не повністю заповнені припоєм



SMD-елементи теж криво припаяні



Гребінці трохи пізніше вирівняв, аж надто неприємно на таку розкосу дивитися, елементи пропаяв, а плату потім відмив



Розміри плати дещо більші за USB-TTL-конвертер на CP2102



Довжина шлейфу близько 30см, існує думка, що чим коротший шлейф, тим краще. Деякі його спеціально вкорочують. Якщо замовити оригінальний USBASP – там комплектний шлейф вже 50см.



Органи управління на платі

На платі є три перемички, що задають різні режими роботи програматора:
JP1 -замикається у разі оновлення прошивки самого програматора
JP2 -потрійна перемичка, тут вибирається, яка напруга буде подаватися на мікроконтролер, що прошивається, або 5В (ліве положення) і 3.3В (праве положення)
JP3 -якщо її замкнути, то програмування контролера відбуватиметься зі зниженою частотою, проте китайці не стали сюди впаювати гребінці, т.к. на даній прошивці вона не потрібна
Програматор, як можна побачити, побудований з урахуванням Atmega8 з кварцом на 12МГц. Найправіший верхній елемент, підписаний F1, з перевернутою цифрою 4 - запобіжник, що самовідновлюється, захищає USB-порт ПК/ноутбука, якщо на прошиваній платі раптом сталося коротке замикання. Під перемичкою JP2знаходиться LDO-стабілізатор 662К, що знижує напругу з 5В до 3.3В, якщо перемичка встановлена ​​у праве положення.

Встановлення драйверів

Щоб почати користуватися програматором, потрібно спочатку поставити драйвера. Вставляю будь-який програматор у USB-порт ПК, звучить сигнал про нове обладнання, на самому девайсі горить світлодіод, але автоматичного пошукудрайверів немає.
Примітка.перед встановленням драйвера необхідно вимкнути перевірку цифрового підпису у Windows
1) Завантажити, розпакувати у зручне місце.
2) Зайти в диспетчер пристроїв, наприклад, навести курсор на головну кнопку (Win10), натиснути ПКМ і вибрати пункт диспетчер пристроїв.

3) У гілці «Інші пристрої» можна побачити невідомий пристрій USBASP з помаранчевим трикутником - > навести курсор, натиснути ПКМ -> «Оновити драйвери...»

4) Вказати шлях до розпакованої папки з драйверами - «libusb_1.2.4.0», натиснути «ОК»

5) «Все одно встановити цей драйвер»

6) Готово, тепер помаранчевий трикутник пропав, драйвера поставлені



Прошивка побратима

Мені вже було відомо до того, що китайці продають ці програматори з не найсвіжішою прошивкою. Вирішив спершу оновити прошивку на одному з них, а потім заради інтересу порівняти обидва програматори в роботі. Для цього з'єдную шлейфом обидва пристрої, на ведучому (який вставляю в USB-порт) ніякі перемички не чіпаються, а на веденому програматорі (на якому будемо оновлювати прошивку) я переставив перемичку з JP2на JP1:



Заходжу в програму Khazama AVR Programmer, вибираю зі списку ATmega8 і спочатку вважаю Flash-пам'ять через пункт меню «Command» -> «Read FLASH to Buffer», щоб зберегти китайську заводську прошивку у себе. На всякий випадок.

При цьому періодично випадатиме така помилка, закривши вікно, програма продовжить роботу.

Йде зчитування, яке завершується спливаючою вікном про успішне зчитування FLASH-пам'яті в буфер

Тепер потрібно зберегти вміст буфера: "File" -> "Save FLASH Buffer As...". Вибрати зручне місце, куди стара прошивказбережеться, дати ім'я (я, наприклад, її назвав firmware_1) і дописати розширення *.hex - якщо його не писати, то вона збережеться як просто файл без розширення.


Завантажую прошивку для програматора зі сторінки, архів usbasp.2011-05-28.tar.gz(В цьому ж архіві є драйвера для Windows, розпаковую вміст у зручне місце.
Тим часом у Khazama завантажу завантажену прошивку в буфер. "File" -> "Load FLASH File to Buffer". Вибираю прошивку, де в назві написано atmega8, оскільки програматор, що прошивається, на цьому чіпі.

Як видно, тут три прошивки – для Atmega8, 48 та 88. У нашому випадку Atmega 8 – її і вибираю.

Прошиваю. "Command" -> "Write FLASH File to Buffer". Знову виникає помилка, але потім йде процес, що завершується успіхом.



Оскільки в звичайному розумінні «запрограмувати» означає виставити 1, то при роботі з фьюз все рівно навпаки, від чого виникає плутанина і в цьому випадку можна по необережності заблокувати контролер і прошити потім його буде вже не можна. Програма Khazama AVR Programmer зручна для перегляду ф'юз-бітів - там наочно видно і розписаноякі з них встановлені, а які ні.

Знаходяться вони шляхом «Command» -> «Fuses and Lock Bits...», відкриється вікно:

Де після натискання кнопки «Read All» вважаються ф'юз- та лок-біти, а горезвісна помилка встигне вилізти аж 5 разів поспіль. Помилки сипляться саме на заводській китайській прошивці. Але якщо вставити в USB-порт нещодавно прошитий програматор, прошивкою завантаженим за посиланням вище, то цих помилок вилазити вже не буде, проте баги вилізуть в іншому місці, але про них пізніше.

Зв'язок із платою Pro Mini (Atmega 168, 3.3V/8MHz)

У цьому випадку висновки програматора поєднуються з висновками плати Pro Mini, як показано на схематичному малюнку нижче. Перемички не переставляються, тобто. залишається у положенні 5В.
Незважаючи на те що плата Pro Mini підписана як 3.3В, на 168 Атмегу можна подавати і 5В. Стабілізатор AMS1117 на 3.3В до речі взагалі випаяний із плати.



AVRDUDE PROG 3.3
Консольна програма для прошивки мікросхем, свого графічного інтерфейсуне має, у стоку працює з командного рядкаАле ентузіастами було написано чимало оболонок на неї, для зручності роботи з нею. Одна з таких оболонок називається AVRDUDE PROG, створена російськомовними розробниками. Ця оболонка, на мій погляд, зручна якраз для Flash-перепрошивки МК. Після її запуску вибирається контролер, у разі Atmega168 і тип програматора - USBasp. Після цього можна займатися записом/зчитуванням пам'яті. Що на заводській прошивці, що на новій – в обох випадках жодних проблем зі спілкуванням з Atmega168 не виникло. Прошив заради інтересу стандартний ардуїновський blink-скетч, експортований в бінарний HEX-файл. Все гладко.




Khazama AVR Programmer
Тут достатньо вибрати мікроконтролер зі списку, що випадає, і можна вже працювати з пам'яттю/бітами.
Однак якщо на самому програматорі встановлена ​​заводська прошивка, періодично сипатимуться помилки, про що вище вже було згадано, на новій прошивці- Даних помилок вже немає.


Зв'язок з контролером ATtiny13A у корпусі SOIC8

З'єднання згідно зі схемою нижче. Але тут все трохи цікавіше.

Оскільки голий чіп у SMD-корпусі SOIC8, в даному випадку я помістив його в перехідник SOIC8-DIP8 для зручності з'єднання з програматором надалі. Огляд на цей перехідник можна почитати.

AVRDUDE PROG 3.3
Тут вибирається зі списку однойменний контролер, програматор USBasp і, якщо програматор прошить заводський китайською прошивкою, всі операції проходять рівно і гладко. Однак варто замінити програматор на інший, з оновленою прошивкою, то за будь-якої операції виникає помилка.

З'являється вона через те, що ні програма, ні програматор не можуть автоматично перейти в режим повільного програмування, необхідний ATtiny13. Але є як мінімум два виходи:
1) Залізний: замкнути перемичку JP3

2) Програмний: відредагувати файл "programm.ini" у папці з програмою AVRDUDE PROG 3.3


Внести туди чотири рядки коду та зберегти. (взято)
progisp=jtag2pdiportprog=COM1portenabled=1 progisp=Usbasp -B 3 portprog=usb portenabled=0

Примітка.Тут застосований ключ "-B", який займається перекладом програматора на знижену частоту програмування. Значення «3» – час у мікросекундах

Після цього знову запустити AVRDUDE PROG 3.3 і у списку програматорів вибрати UsbaspSpeed. Тепер робота з ATtiny13 на програматорі з новою прошивкою буде вже без помилок, а перемичку JP3 замикати більше не потрібно буде.

Khazama AVR Programmer
Вибирається контролер зі списку та майже та сама ситуація.

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

Але варто замкнути перемичку JP3, і можна спокійно працювати


Або просто задати частоту роботи з списку, що випадає, по дорозі «Command» -> «Programm Options», я виставив частоту 187.5кГц.

Примітка.Частота програмування має бути меншою тактової частотимікросхеми, що прошивається, не менше, ніж у 4 рази. Але якщо подивитися на лічені з ATtiny13 фьюзи, то на останньому рядку Int.Rc.Osc. вказано 9.6МГц.
Як мінімум, у новачка виникне питання – чому на виставлених у KHazame 1.5МГц – з'являється та ж помилка? А також чому, якщо AtmelStudio написати наприклад код миготіння світлодіода з частотою раз на секунду і в макросі прописати:
#define f_cpu 9600000 завантаживши код на Attiny13, світлодіод буде блимати дуже повільно?
- подивимося на передостанній рядок, де Divide Clock by 8 Internally- це включений предделитель частоти, який ділить ці 9.6МГц на 8, і тому реальна частота чіпа тут – 1.2МГц. Тому при виборі частоти 187.5кГц або менше помилки зникають і можна працювати нормально з контролером.

Примітка 2.Спосіб з вибором частоти в KHazame за швидкістю роботи в кілька разів виграє у методу з фізичним замиканням перемички JP3, тому що в останньому випадку частота знижується до 8кГц.

Інтеграція програматора в Atmel Studio 7

Atmel Studio - середовище розробки від фірми Atmel, але безпосередньо працювати з USBASP, тим більше китайським, воно не може. Однак завдяки тій же програмі AVRDUDE, що входить до складу пакету AVRDUDE PROG 3.3, яка гратиме тут роль посередника, можна спорудити «милицю», а вже в середовищі потім додати можливість прошивати МК, підключений через USBASP.

Спочатку потрібно запустити середу, передбачається, що якийсь код у нас вже написаний і зібраний. У моєму прикладі це проста мигалкасвітлодіодом – Blink.

На верхній панелі інструментів вибрати "Tools" - "External Tools..."

Відкриється маленьке вікно, натиснути «Add»

У верхньому полі «Title:»ввести будь-яку зручну назву, я написав Atmega168, т.к. та конфігурація, що наведу трохи нижче відноситься саме до цього контролера, і для будь-якого іншого контролера вона налаштовується індивідуально.
У великому полі нагорі назва інструменту буде автоматично продубльована.

Другий рядок, поле "Command:"- тут потрібно вказати шлях до файлу avrdude.exe, який знаходиться в папці з вищерозглянутою програмою

Третій рядок, поле «Arguments:»Необхідно ввести саму конфігурацію

Конфігурація для Atmega168

P m168 -c usbasp -P usb -U flash:w:$(ProjectDir)Debug\$(TargetName).hex:a
-p - найменування контролера
-с - який програматор
-P - порт, через який заливатиметься прошивка
-U - яка операція з якою пам'яттю буде проводиться (у разі запис у Flash)
Якщо потрібно налаштувати для іншого МК, параметр «m168» потрібно змінити на відповідний контролер, який буде прошиватися. Наприклад, «m8» для Atmega8 або «m328p», якщо Atmega328p. Параметри для інших МК дивіться – також там знайдете опис ключів AVRDUDE.

Конфігурація для ATtiny13


Після заповнення полів натиснути "Apply" та "ОК". Вікно закриється

Тепер, якщо знову натиснути на «Tools», там з'явиться щойно створений інструмент. І після натискання по ньому відкомпільований код буде автоматично прошитий у контролер.

Але ця операція відбувається у два кліки, що не дуже зручно. Потрібно винести цей інструмент на головну панель інструментів, щоб він був завжди на увазі.
Для цього потрібно знову зайти в «Tools», потім натиснути на пункт «Customize...»
Відкриється наступне вікно:

Перейти до вкладки «Commands» - натиснути кнопку «Add Command...»

Ще одне вікно з'явиться. У ньому - у лівій колонці вибрати "Tools", а в правій колонці виділити "External Command 1". Натиснути "OK"

"External Command 1" виявиться нагорі списку, і, зверніть увагу на саму панель інструментів - в інтерфейсі з'явився пункт "Atmega168".

Але як мені здається, місце йому відведено не зовсім вдале, бажано його зрушити вправо, для цього натискається кнопка Move Down (одне натискання = зсув на одну позицію вправо). Після цього можна закривати вікно по кнопці «Close» і шити чіп прямо зі студії в один клік через програматор, що оглядається.


При перепрошивці чіпа в такий спосіб, на секунду з'являється консольне вікно AVRDUDE. Але може виникнути необхідність якось зберегти цей лог для подальшого перегляду - тоді у вікні "External tools" потрібно поставити галку на "Use Output window".

І тепер лог буде відображатися у вікні виводу, що внизу програми ATmel Studio 7. Дана галка може задаватися окремо для кожного доданого в "External tools" контролера.

Додаток по фьюзам програматора

З документа READMI, що йде в комплекті з драйверами та прошивкою для USBASP, пізніше з'ясувалося, що розробник рекомендує виставити певну конфігурацію ф'юз-бітів, що визначають роботу зовнішнього резонатора.
Мінусом khazam"и є те, що у вікні з фьюзами не відображаються HEX-значення виставлених бітів. Це вже можна подивитися в AVRDUDE PROG. Заводські фьюзи, виставлені китайцями, виглядають так ( обов'язково поставити крапку «інверсні» - виділив синім прямокутником):

Це потрібно зняти дві галки з «BODEN» та «SUT1» (виділено червоним овалом),
поставити дві галки на CKOPT і SUT0 (виділено зеленим прямокутником),
праворуч у колонці будуть відображатися HEX-значення змінених бітів (виділено жирним червоним прямокутником): Lock Byte: 3F, Fuse High Byte: C9, Fuse Low Byte: EF.

Якщо все сходиться, можна натискати програмування

УВАГА.Злий фьюз-біт RSTDISBL- не чіпати в жодному разі, інакше його установка заблокує контролер і прошити потім через USBASP його вже не можна буде.
_____________________________________

Висновки

Випробовано, працює. Якщо khazam не планується використовувати, то в оновленні прошивки для програматора - сенсу немає, благо і так чудово працює, причому у випадку з ATtiny13 жодних правок та перемичок вносити не потрібно. Остання прошивка- чомусь виявилася примхливішою в цьому плані. Єдине, після отримання, плату треба пропаяти та відмити.

Список посилань

Програматор - це апаратно-програмний пристрій, який служить для зчитування або запису інформації в пристрій (внутрішню мікроконтролерів). Якщо радіоаматору потрібно один раз запрограмувати мікроконтролерний пристрій, можна скористатися звичайним програматором, який підключається до COM-або LPT-порту. Наприклад, найпростішим програматором AVR є кабель із 6 та 4 резисторів (програматор PonyProg).

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

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

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

Як підключити USB-програматор?

Для використання пристрою необхідно підключити його до одного з портів USB комп'ютера. Після цього на комп'ютері з'явиться повідомлення про підключення нового USB-пристрою USBasp, а на самому програматорі загориться світлодіод, що означає, що пристрій успішно підключено.

Потім потрібно встановити драйвера, щоб ОС могла коректно працювати з цим пристроєм. Після цього можна буде підключати мікропроцесорний пристрійдо ISP інтерфейсу. При програмуванні світиться другий світлодіод.

Як правило, програматор має два інтерфейси - один для підключення мікроконтролера, другий - для підключення до комп'ютера. Щоб підключити мікроконтролер, можна скористатися режимом послідовного програмування ISP. А до комп'ютера цей пристрійпідключається через стандартний USB-роз'єм.

Для керування програматором потрібно встановлювати спеціальні програми. Найкраще користуватися віконними програмами. Наприклад, для роботи з пристроєм можна використовувати програми ExtremeBurner, Khazama, avrguge та інші.

 

 

Це цікаво: