Програматори для мікроконтроллерів AVR (USB, COM, LPT). Програматор USB ISP для AVR: Ще один крок у бік від ардуінонізації Універсальний програматор для авр студіо

Жарознижуючі засоби для дітей призначаються педіатром. Але бувають ситуації невідкладної допомоги за лихоманки, коли дитині потрібно дати ліки негайно. Тоді батьки беруть на себе відповідальність і застосовують жарознижувальні препарати. Що можна давати дітям грудного віку? Чим можна збити температуру у старших дітей? Які ліки найбезпечніші?

Рис.1 AVR ISP

Програматори, що працюють під керуванням та іншими аматорськими програмами, дуже прості. Однак більшість з них не може забезпечити такої функціональності, якою володіють фірмові засоби розробки. Одним із найпопулярніших програматорів Atmel є AVR ISP (зовнішній вигляд на рис.1). За допомогою AVR ISP можна запрограмувати будь-який мікроконтролер із ядром AVR через послідовний інтерфейс SPI. Програматор підключається через COM-порт і працює під керуванням.

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


Рис.2 Аналог фірмового програматора AVR ISP

На рис.2 наведено важлива схема авторського варіанту AVR ISP. На відміну від свого прообразу він містить лише один мікроконтролер, володіючи тими самими функціями. У місце ATmega8535 (AT90S8535) у базовому варіанті застосований мікроконтролер ATmega16. Він має вдвічі більший обсяг пам'яті програм і даних, і можна порівняти з ATmega8535 за призначенням висновків і внутрішнього пристрою. Запис та оновлення вмісту DD2 здійснюються через вбудовану програму-завантажувач (boot-loader), яка використовує для цього здатність самопрограмування мікроконтролерів AVR. Додатковими програмними засобами здійснюється також узгодження роботи програми призначеної для ATmega8535 з адресним простором ATmega16 та використання переривання TOV0 для відстеження положення кнопки SB1 та управління лініями PD7, PC0…PC6.

Програматор підключається до будь-якого вільного порту COM в системі через роз'єм X1. Напруга 9...15 подається на роз'єм X2 від окремого джерела живлення здатного віддавати в навантаження струм не менший ніж 100 мА. Роз'єм X3 служить для внутрішньосхемного програмування або під час програмування на окремій панелі.
На виведенні X3 присутні прямокутні імпульси частотою 1.8432 МГц. Їх можна використовувати, якщо програмований мікроконтролер налаштований на роботу з кварцовим резонатором або із зовнішнім тактовим генератором. І тут імпульси подаються на вхід XTAL1. Пристрої, що не мають власного джерела енергії, можна запитати безпосередньо від програматора через виведення 2 X3 (внутрішньосхемне програмування пристроїв з напругою живлення меншим, ніж 5 може призвести до поломки!). Активізація та заборона тактових імпульсів на виведенні 2 X3, а також присутність напруги 5 на виведенні 7 X3, регулюються кнопкою SB1.

У ході роботи світлодіод HL3 свідчить про функціонування програматора. HL1 буде світитися під час програмування мікроконтролера, а HL2 сигналізуватиме про наявність напруги та тактових імпульсів (висновки 2 і 7 X3 відповідно).

Перед початком роботи в DD2 потрібно занести програму, що знаходиться у файлі BootISP.hex (вихідний текст у файлі BootISP.asm) за допомогою будь-якого зручного програматора. FUSE-біти при цьому мають виглядати так:
CKSEL0 = 0 SUT0 = 1 BOOTRST = 0 EESAVE = 1
CKSEL1 = 0 SUT1 = 0 BOOTSZ0 = 0 CKOPT = 1
CKSEL2 = 1 BODEN = 0 BOOTSZ1 = 0 JTAGEN = 1
CKSEL3 = 1 BODLEVEL = 0 SPIEN = 0 OCDEN = 1


Рис.3 Процес програмування

Після того, як програматор зібраний і підключений до комп'ютера - приступають до завантаження поточної версії програми, що управляє. Натиснувши кнопку SB1(!), подають живлення на роз'єм X2. Повинен спалахнути світлодіод HL1, що свідчить про переведення в режим оновлення програмного забезпечення. Після цього запускають AVR Studio і через меню Tools -> AVR Prog відкривають вікно оновлення "прошивки" AVR ISP. Далі потрібно вказати шлях до завантажувального файлу, який за умовчанням має розміщення C: Program files Atmel AVR Tools STK500 STK500.ebn, і почати програмування, натиснувши на екранну кнопку Flash -> Program (вікно на рис.3). Наприкінці операції необхідно короткочасно зняти напругу, після чого програматор буде готовий до застосування. Зв'язок здійснюється через меню Tools -> Program AVR -> Auto Connect. Вигляд вікна програми підтримки AVR ISP наведено на рис.4.


Рис.4 Вид вікна програми підтримки AVR ISP

Інтерфейс програми дуже простий і вимагає докладних пояснень. Тут необхідно звернути увагу на кілька важливих деталей. У списку пристроїв на вкладці Program у вікні Device, крім мікроконтролерів з ядром AVR (ATmega, ATtiny, AT90x та ін.), доступні деякі моделі сімейства MCS-51 (назви починаються з AT89S). Програмування AT89S через SPI принципово ні чим не відрізняється від подібної операції у AVR-мікроконтролерів, за винятком одного суттєвого розрізнення. Сигнал RESET у MCS-51 (на відміну від AVR) має активний високий рівень. Тому при програмуванні моделей AT89S резистор R2, що запобігає запуску мікроконтролерів AVR, необхідно підключити до шини живлення програматора.

Іноді трапляється так, що з першого разу не вдалося встановити зв'язок програматора з пристроєм. Якщо не брати до уваги помилок монтажу і неправильної установки FUSE-бітів, що забороняють роботу SPI (SPIEN, DWEN і RSTDISBL), найімовірніше проблема полягає в надто високій частоті тактових імпульсів на лінії SCK. І тут необхідно зменшити швидкість послідовного інтерфейсу. Це можна зробити вручну за допомогою вкладки Board (вікно ISP Freq). Модуль SPI веденого мікроконтролера не може працювати на частотах, що перевищують F clk /4.

Програматор був перевірений у роботі з версій 4.12…4.16 з багатьма типами мікроконтролерів. Жодних помилок при цьому не було виявлено.

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

Позначення Тип Номінал Кількість ПриміткаМагазинМій блокнот
DD1 ІС RS-232 інтерфейсу

MAX232

1 У блокнот
DD2 МК AVR 8-біт

ATmega16

1 У блокнот
DA1 Лінійний регулятор

LM7805

1 У блокнот
VD1 Випрямний діод

1N4007

1 У блокнот
R1, R2 Резистор

10 ком

2 У блокнот
R3 Резистор

4.7 ком

1 У блокнот
R4 Резистор

510 Ом

1 У блокнот
R5 Резистор

6.8 ком

1 У блокнот
R6 Резистор

3.3 ком

1 У блокнот
R7-R9 Резистор

1 ком

3 У блокнот
C1, C5 470 мкФ 16 В2 У блокнот
C2, C3, C6, C7 Електролітичний конденсатор1 мкФ 16 В4 У блокнот
C4, C8, C11 Конденсатор0.1 мкФ3 У блокнот
C9, C10 Конденсатор30 пФ2 У блокнот
ZQ1 Кварц3.6864 МГц1 У блокнот
HL1 Світлодіод

Програматор USBASP - пристрій, розпинування, підключення, прошивка

Сьогодні ми розглянемо як, без особливих витрат і швидко, запрограмувати будь-який мікроконтролер AVR, що підтримує режим послідовного програмування (інтерфейс ISP) через USB-порт комп'ютера. Як програматор ми будемо використовувати дуже простий і популярний програматор USBASP, а як програма — AVRdude_Prog V3.3яка призначена для програмування МК AVR.

Програматор USBASP

Для того, щоб запрограмувати мікроконтролер, необхідно мати дві речі:
- Програматор
- відповідне програмне забезпечення для запису даних у МК
Одним з найпростіших, популярних та мініатюрних програматорів для AVR є USBASP програматор, створений німцем Томасом Фішлем
Є багато різних схемотехнічних рішень цього програматора, програматор можна зібрати самому або купити (вартість – 2-3 долари). При самостійному збиранні слід враховувати, що зібраний програматор необхідно буде прошити стороннім програматором.

Ми розглянемо найбільш «наворочену» версію програматора:


Характеристики програматора:
- працює з різними операційними системами - Linux, Mac OC, Windows (для операційної системи Windows, для роботи програматора необхідно встановити драйвера - архів в кінці статті)
— швидкість програмування до (швидкість програмування можна встановлювати самому, наприклад AVRDUDE_PROG) 375 (5) кб/сек
- має 10-контактний інтерфейс ISP (відповідає стандарту ICSP з 10-контактним розпинуванням)
- підтримує дві напруги живлення програматора - 5В та 3,3В (не всі USB порти ПК працюють при 5 Вольтах)
- живиться від порту USB комп'ютера, має вбудований захист по струму (запобіжник, що самовідновлюється, на 500 мА)

Призначення джамперів:
роз'єм JP1— призначений для перепрошивки мікроконтролера програматора (для перепрошивки необхідно замкнути контакти)
роз'єм JP2– напруга живлення програматора – 5 Вольт або 3,3 Вольта (за замовчуванням – 5 Вольт, як на фотографії). Програмований мікроконтролер, або конструкцію, в якій він встановлений, при струмі споживання 300-400 мА можна запитати з програматора, для цього на роз'єм є вихід +5В (VCC).
роз'єм JP3- Визначає частоту тактування даних SCK: розімкнутий - висока частота (375 кГц), замкнутий - низька частота (8 кГц)
Докладніше про роз'єм JP3
Джампер JP3 призначений для зменшення швидкості запису даних мікроконтролер. Якщо у мікроконтролера встановлена ​​частота тактування більше 1,5 мГц, джампер може бути розімкнений, при цьому швидкість програмування висока. Якщо тактова частота менше 1,5 мГц необхідно закоротити висновки джампера - знизити швидкість програмування, інакше запрограмувати мікроконтролер не вдасться. Наприклад, якщо ми програмуватимемо мікроконтролер ATmega8 (в принципі, практично всі МК AVR налаштовані на тактову частоту 1 мГц за замовчуванням), у якого частота тактування за замовчуванням 1 мГц, необхідно буде замкнути висновки джампера (як на фотографії). Краще, напевно, тримати цей джампер постійно замкненим, щоб, забувши про його існування, не мучитися питанням, чому мікроконтролер не прошивається.

Якщо ви користуватиметеся , викладеною на сайті, то про перемичку можна забути

Програматор підтримується таким програмним забезпеченням:
- AVRdude
- AVRdude_Prog
- Bascom-AVR
- Khazama AVR Prog
- eXtreme Burner AVR

Працювати з таким програматором дуже просто - з'єднати відповідні висновки програматора з мікроконтролером, підключити до порту USB комп'ютера - програматор готовий до роботи.
Розпинування 10-контактного кабелю програматора USBASP :


1 - MOSI - вихід даних для послідовного програмування
2 – VCC – вихід +5 (+3,3) Вольт для живлення програмованого мікроконтролера або програмованої плати від порту USB комп'ютера (максимальний струм 200 мА – щоб не спалити порт USB)
3 - NC - не використовується
4 - GND - загальний провід (мінус живлення)
5 - RST - підключається до виведення RESET мікроконтролера
6 - GND
7 - SCK - вихід тактування даних
8 - GND
9 – MISO – вхід даних для послідовного програмування
10 - GND

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

Установка драйвера для програматора USBASB дуже проста:
— підключіть програматор до USB порту комп'ютера, при цьому в диспетчері пристроїв з'явиться новий пристрій «USBasp» з жовтим трикутником і знаком оклику всередині, що означає — не встановлені драйвера
— завантажте та розархівуйте файл «USBasp-win-driver-x86-x64-ia64-v3.0.7»
- запустіть файл "InstallDriver" - будуть автоматично встановлені драйвера для програматора
— перевірте диспетчер пристроїв — жовтий трикутник повинен зникнути (якщо ні, клацніть правою кнопкою на пристрої «USBasp» і виберіть пункт «Оновити»
- Програматор готовий до роботи

FUSE-біти при програмуванні USBASP AVR:

Архів «usbasp.2011-05-28» містить папки:
= BIN:
- win-driver - драйвера для програматора
- firmware - прошивка для мікроконтролерів Mega8, Mega88, Mega48
= circuit - схема простого програматора в PDF та Cadsoft Eagle

При перепрошивці китайського програматора рекомендую встановити FUSE-біт CKOPT. CKOPT взаємопов'язаний із граничною тактовою частотою. За умовчанням CKOPT скинуто і стабільна робота мікроконтролера програматора при застосуванні кварцового резонатора можлива лише до частоти 8 МГц (а МК програматора працює на частоті 12 МГц). Установка FUSE-біту CKOPT збільшує максимальну частоту до 16 МГц. Китайці не чіпають цей FUSE-біт, що часто призводить до відмови програматора (зазвичай система не визначає програматор).

Архів «USBasp-win-driver-x86-x64-ia64-v3.0.7» призначений для встановлення драйверів, як зазначено у статті

(518,9 KiB, 13 188 hits)

(10,9 MiB, 24942 hits)

Описаний у статті USBASP програматор, прошитий останньою версією програми, перевірений у роботі, із встановленими джамперами та перемичками, ви можете придбати в інтернет-магазині «МірМК-SHOP»

Ну ось і настав час нам зробити USB програматор. Я довго не міг визначитися, який би програматор нам зібрати. Вибирав за критеріями простоти конструкції та зручності роботи з ними, але нічого не подобалося. Вибрати програматор допоміг випадок. Вірніше, я його не вибирав взагалі – я його випадково зібрав сам того не підозрюючи!

А справа була така. Декілька постів тому ми зібрали перетворювач USB to UART на ATtiny2313 (а у ми навіть покращили друковану плату). Ще при виборі схеми перетворювача я планував на його основі (за допомогою заливки різних прошивок) отримувати пристрої різного призначення. Тоді я не підозрював, що цей перетворювач можна використовувати ширше, ніж планував. Побачивши схему USB-програматора - USBtiny на ATtiny2313 я зрозумів, що я вже маю готовий програматор!

Подивившись на схему, зробленого раніше, перетворювач USB до UART(Домашня сторінка)


та схему USB програматора USBTiny(Домашня сторінка)

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

Тепер усе по черзі.
1 Для початку потрібно зібрати перетворювач(Це якщо Ви його ще не зібрали).
Ось малюнок друкованої плати перетворювача:
Якщо цікаво – ось.
У зібраному вигляді перетворювач виглядає так:

2 Дещо модифікуємо плату
Для того, щоб забезпечити всі необхідні сигнали для програмування, впаюємо захисні резистори номіналом по 100 Ом у лінії ніжок 12, 16, 17, 18, 19 (номінал не критичний - можна варіювати).


3 Тепер потрібно прошити мікроконтролер.
Лінії для програматора виведені на загальний роз'єм плати (крім скидання – варто окремо).

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


Схема шлейфу проста.

З особливостей - я виніс індикаторний світлодіод і баластний резистор для нього за плату на роз'єм - це для того, щоб плату без перепаювання можна було використовувати для інших пристроїв (ну і так прикольні - світлодіод блимає прямо в роз'єм:)). Крім того, лінія Vcc відокремлена від загального роз'єму - це на випадок, якщо програмований пристрій запитується не від USB, а від свого джерела (що, в принципі, бажано). Сигнальні лінії (SCK, MISO, MOSI) бажано екранувати (наприклад, чергуванням сигнальних і земляних ліній у шлейфі). Довжину шлейфу не варто робити великою – до 50 см, не більше. Якщо потрібно програмувати віддалений пристрій завжди можна застосувати USB подовжувач - так надійніше. Ось мій готовий шнурок:



5 Сам програматор готовий, тепер потрібно встановити драйвердля того, щоб Вінда змогла з ним працювати (для Mac OS X & Linux, ніби-то, драйвера взагалі не потрібно). Тут все просто:

5.1 Викачуємо драйвер, розархівуємо його.
Сторінка з драйверами


5.2 Вставляємо наш програматор у USB порт.




5.3 У треї з'явиться повідомлення, що знайдено новий пристрій.



5.4 Запуститься майстер нового обладнання.



5.5 Вказуємо в вікні "місце пошуку" папку з драйвером.



5.6 Пройде процес встановлення драйвера. З'явиться віконце, що повідомляє про те, що драйвер встановлений.Щоб перевірити, що ми там встановлювали, заходимо в «Мій комп'ютер/Властивості/Обладнання/Диспетчер пристроїв» і знаходимо там наш програматор

Вінда побачила новий пристрій та готова з ним працювати.

USBtiny програматор підтримується AVRDude, А це означає, що багато програмних середовищ будуть з ним працювати без проблем. Ще однією перевагою роботи з AVRDude є те, що для роботи з AVRDude існує безліч оболонок GUI з яких можна вибрати відповідну саме для Вас (але про це в наступній статті).

Я з USBTiny до цього не працював, але відгуки про нього в мережі позитивні (відрізняється надійністю та швидкістю програмування) – мої тестові прошивки це підтвердили. ATtiny2313 прошивається за 10 секунд (це разом із перевіркою). Мікроконтроллер визначається і програмується надійно – не було жодної помилки під час моїх тестів. Приємний у використанні програматор!


Файли до статті:
- Малюнок друкованої плати UART-USB на ATtiny2313
- Прошивка USBtiny програматора для ATtiny2313
- Фьюз-біти ATtiny2313 для USBtiny
- Схема кабелю для USBtiny програматора

У цьому відеоролику я розповім про програматор AVR, який купив на ebay. Коштує цей програматор avr usb 3$. Це програматор avr мікроконтролерів. Я покажу як ним користуватися, як його вперше включити, встановити драйвера, який для нього є софт, для нього трохи інший софт, тобто не такий софт як я показував у відео про AVR910 програматора, до речі, відео про AVR910 програматора, точніше посилання на це відео буде у мене в кінці ролика, можете дочекатися кінця ролика, клікнути по ній і ви перейдете на відео про цього AVR910 програматора.

Програматор usbasp avr я купив саме тому, що відео з AVR910 програматором, дуже популярно, і мені ставлять дуже багато запитань, ставлять як у коментарях, так і в личку. У коментарях ставлять мало запитань, у личку ставлять дуже багато запитань. Я користуючись нагодою, хотів попросити вас, якщо у вас є питання, конкретно до теми, яку я торкнувся в якомусь відеоролику, пишіть мені будь-ласка в коментарях до цього відеоролика. Я на всі коментарі отримую повідомлення, і я вам обов'язково відповім. Я прошу, тому що мені в личку, як правило, ставлять ті самі питання. Я на них відповідаю, але ці запитання та відповіді бачать лише ті, хто їх ставив. Якщо ви питали б мене в коментарях, і я відповів, то швидше за все людина прочитала б коментар, і у нього якщо і виникло питання, як і в когось хто вже запитав мене в коментарях, він отримав мою відповідь. На коментарі я обов'язково відповім.
Я зайшов на ebay та вибрав найдешевший програматор AVR. Це програматор за 3$. Якщо порахувати, то собівартість AVR910 програматора, якщо у нас в Молдові купувати - мікросхема AtMega8 коштує 2$, гніздо USB mini коштує 0,4$, кварц теж коштує центів 0.35-0.40$. Загалом, тут набереться якраз на 3$. Може трохи менше, може трохи більше, але це лише деталі.


Вам ще потрібно зробити плату, запаяти все. Я колись робив програматор AVR910, я його робив чисто зі спортивного інтересу. Мені було цікаво, це були перші проби SMD компонентів, у мене було дуже багато вільного часу, так як я був студентом, і я займався ним у своє задоволення, навіть для того, щоб зробити цей програматор (AVR910), з мікроконтролером, потрібно обов'язково мати інший програматор, яким ви запрограмуєте мікроконтролер у програматорі AVR910.
Ну і давайте поговоримо про програматора usbasp avr. Перше, що я вам скажу — купіть собі їх два. Чи не купуйте один, купіть два. Поясню чому, зроблений він м'яко говорячи китайською. Якщо подивіться, ви побачите, що багато деталей криво стоять, пайка, сказати, що жахлива — нічого не сказати. Отвори не заповнені припоєм, тобто він працює, але якість його ... Видно, що повторюваність дуже погана, є велика ймовірність, що якийсь із них може не працювати.


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


Так, я і забув сказати, що я купив програматор не AVR910, він теж для AVR, але це програматор USBasp. Програматор у вільному доступі, це товариш із Німеччини його розробив, є схеми, є документація на нього. У мене під даними відео буде посилання на мою статтю, в якій будуть дані всі посилання на софт, на автора проекту. Але китайці сюди додав стабілізатор, тобто трохи модернізували USBasp. Тут стандартний ISP10 роз'єм. З програматором йде такий шнурок, я вже його розрізав та підключив до мікроконтролера. Я Толіку обіцяв зняти відео, і я підпаяв до мікроконтролера дроту. Даний програматор USBasp має можливість вибору живлення, тобто на програмовану схему я можу вибрати, що саме я хочу, тобто я можу взагалі не живити від програматора схему, взагалі не поставивши джампер, або я можу вибрати живлення від 5 В відразу від USB,


або ось так поставивши джампер і на програмовану схему піде 3.3 від USB через даний стабілізатор.


Схема з'єднання ISP10 (клікні для збільшення):


Про програматор для AVR більше нічого сказати, залишається його тільки вставити в USB порт. Зараз ми подивимося, як він визначився, поставимо на нього драйвера, і я покажу програми, за допомогою яких можна програмувати. В AVR910 я показував програму AVRosp, якою можна програмувати, використовуючи AVR 910 програматор. AVRosp не можна використовувати для використання програмного забезпечення USBasp. На моєму сайті ви завантажуєте архів, в якому ви знайдете кілька папок, папка драйвер, та папка софт. У папці драйвер є драйвера для цього програматора (UABasp). Я їх люблю ставити ближче до диска С, тому що потім їх простіше вказати. Я їх тимчасово копіюю на диск С. Тепер я в диспетчері пристроїв правою кнопкою вибираю «оновити драйвери», він, звичайно ж, не може знайти, виконуємо пошук, показуємо звідки шукати. Ми хочемо з диска С шукати. Тиснемо далі. У мене зараз стоїть Windows 7 x64. Образ оригінального диска, без паків, це чистий windows. У ній нічого не вимкнено, все за замовчуванням. Я це все говорю до того, що AVR910 не хотів працювати, точніше драйвера не мали цифрового підпису і windows їх блокував. AVR910 у мене в 64 бітної windows 7 не працював. Я колись знімав відео, знімав у 32 бітній WIndows, у мене стоять дві системи. Все, USBasp бачиться як пристрій для Windows 32.


Далі вже потрібні програми, щоб працювати з програматором usbasp avr. Відкриваємо папку софт.


Мені дуже сподобався avrdudeprog, це графічний інтерфейс під консольну програму AVR dude. Ця програма підтримує як AVR910 програматор, і USBasp. До речі, цей avrdudeprog програмує при використанні 910 програматора в кілька разів швидше за швидкістю, ніж стандартний ARVRosp який я показував у відео. Так що я рекомендую вам перейти на avrdudeprog, навіть якщо у вас є AVR910 програматор.


Підключаємо наш пристрій. Пристрій запустився, вибираємо AtMega 16 і вибираємо стерти все. Мікроконтролер чистий, і як бачимо, він дійсно чистий, тому що на дисплей у мене нічого не виводиться.
Далі вибираємо, що ми хочемо запрограмувати, та й тиснемо програмування. Зверніть увагу, як швидко йтиме програмування. Виводиться інформація, що біти скинуті, флеш очищена перед прошивкою. Було запрограмовано флеш, а потім флеш було прочитано і звірено з тим, що програмувалося, тобто перевірено, що помилок немає. Тобто було проведено верифікацію. Ну і як бачимо, у мене пристрій запустився.
Чим мені avrdudeprog не подобається, так це fuse. Справа в тому, що з fuse все дуже і дуже сильно напартачене в AVR, справа в тому, що за datasheet запрограмований fuse вважається 0. Тобто за замовчуванням повинні бути прямі fuse, що запрограмовано - 0. Багато програмістів вважають, що якщо запрограмовано - Має бути 1. І програмістів таких багато, програм для програмування дуже багато, і хтось дотримується того, як у datasheet написано, а хтось дотримується того, як він вважає за краще. Галочка це запрограмована, або галочка це не запрограмована? У налаштуваннях можна вибрати прямі чи інверсні, і галочки змінюються. У цих fuse початківець 200% заплутається. Навіть 300%, тобто він залочить собі кілька разів мікроконтролер. Тому я також доклав кілька інших програм для програмування. Зверніть увагу, що avrdudeprog відразу працює, її не потрібно встановлювати, просто запускаєте exe файл, можна навіть собі на робочий стіл відправити цей exe, тобто створити ярлик і звідти його відкривати.
Є ще дві дуже цікаві програми. Мені подобається саме через fuse бітів. Взагалі мені дуже подобається avrdudeprog, але для початківців я б рекомендував все ж таки eXtreme Burner, встановлюється вона також як і звичайні програми, нічого в цьому складного немає, просто тиснемо далі, далі, іноді читайте що написано, встановили і користуємося. Програма eXtreme Burner пропонує піти на перезавантаження, але я не хочу цього робити, і без рестарту працюватиме. Вибираємо наш мікроконтролер. Мені не подобається, що в жодній з них немає як у AVRosp кнопки AutoDetect, натиснувши на яку, програма зчитує з мікроконтролера сигнатури і відразу визначає, що саме за мікроконтролер підключений. Зручно працювати з fuse. У eXtreme Burner інтерфейс має кілька вкладок, flach, eeprom, та й fuse, ви розберетеся.


Натискаємо спочатку прочитати все, програма вважала fuse з мікроконтролера. І можна, натиснувши кнопку «деталі», поміняти fuse. У програмі eXtreme Burner немає незрозумілих галочок, а одразу написано, не запрограмовано, запрограмовано. І зроблено точно так, як у специфікації AVR, тобто запрограмовано - 0. Єдине, ніж мені подобається eXtreme Burner, так це тим, що можна скинути fuse за замовчуванням. У цій програмі все теж не дуже зручно.
Ще зручніше з fuse у програмі Khazama AVR Programmer. Ось така проста програма, вибираємо AtMega 16. У цій програмі постійно вилазить дуже цікава помилка.


Вона не має нічого страшного, і зараз я поясню, чому вона відбувається. Справа в тому, що AVR910 програматор, як ви пам'ятаєте, має штирі, куди ми ставимо джампер, і програматор знижує частоту. Справа в тому, що за умовчанням йде 1.5 МГц, а коли ви ставите джампер, частота знижується в 4 рази. Так як програматор USBasp зроблений таким чином, щоб він був сумісний з Arduino, він сам перемикає частоти, з швидкою на повільну, і Khazama AVR Programmer, вже може прошити будь-які контролери. AVR910 я AtMega яка тактується на частоті 1 МГц, вже не можу запрограмувати без джампера, тобто мені доводиться знижувати частоту для того, щоб запрограмувати мікроконтролер. USBasp сам перемикає частоти і мені ніякий джампер нікуди ставити не потрібно. Але за специфікацією, AVR програматор, тобто програма, відправляє на програматор швидкість, з якою має тактуватися тактовий сигнал, тобто частоту. І в даній програмі можна вибрати частоту, але як я вже сказав, цей програматор зроблений сумісним з arduino, то він уже не підтримує b команди. І тому постійно виходить дана помилка. Вона сильно напружує, але вона вартує того. Потрібно багато разів натискати OK, OK, OK. Але зверніть увагу, що ви можете вибрати, що ви хочете. Початківцю це дуже зручно. Наприклад, частота. Ось дивіться, треба змінити частоту процесора - та заради бога, на що хочеш міняй. У avrdudeprog потрібно сидіти і вибирати галочки, тобто по хорошому потрібно буде спочатку подивитися datasheet, і потім, перемикати частотні fuse, так як вам потрібно. Звичайно, легко помилитися і можна накосити. Тут все є. Але необхідно постійно натискати ОК. fuse зчитуються в кілька прийомів, тому потрібно багато разів натискати. Якщо я зчитуватиму флеш — то мені тільки один раз потрібно натиснути ОК. Початківцям я рекомендую цю програму, тому що ви не напортачите з fuse, тобто щось зіпсувати з fuse буде дуже і дуже складно. Посилання на програми я викладу у своїй статті, посилання буде під даними відео.
Я вважаю, що покупка програматора usbasp avr - вигідна покупка, тому що коштує він копійки, приблизно стільки ж, скільки й зібрати його з нуля, тобто за вартістю компонентів. Працює програматор добре, єдине що шкутильгає - культура виробництва, як я вже сказав - тут все криво, мікросхема навіть запаяна зі зміщенням, я рекомендую купити таких програматорів два. Реально хлопці, вони стоять копійки вже з доставкою, купіть два, один буде як резервний. Цілком можливо, що один із них виявиться неробочим, я припускаю це. Краще вже витратити 3$ зверху, але заощадите місяць часу, якщо ви раптом купуватимете другий. Покупка, на мою думку, дуже і дуже вигідна, і я вам рекомендую це зробити.
Ну от і все, я сподіваюся, що це відео було вам корисним, ставте лайки якщо вам воно сподобалося, підписуйтесь на канал, якщо ви ще не підписані, і бажаю вам всіх благ, всього вам доброго. Бувай удачі.

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

Основою програматора є мікросхема FT2232D. Являє вона собою перетворювач USB у два порти UART. Особливість полягає в тому, що «верхній» канал може працювати в режимах JTAG, SPI і I 2 C, що і потрібно для програмування мікроконтролерів, різних мікросхем пам'яті і т.п.

Розробка USB-програматора ведеться на комп'ютері з використанням бібліотек від фірми FTDI Chip.

Живиться пристрій від USB-інтерфейсу. При правильному складанні схема не потребує настроювання. Функціонування пристрою залежить від майстерності розробника програмного забезпечення. Резистори R8, R9, R12, R13, R14, R15, R16 є струмообмежуючими при неправильному з'єднанні з пристроєм, відповідно, висновки програмованого пристрою не повинні з'єднуватися з іншими елементами у схемі, або мати такі підтяжки, які при утворенні дільників напруги не спотворювали б логічні рівні. Мікросхема U1 використовується для збереження налаштувань користувача.

Висновки U2 (канал А):
24 - ADBUS0 - вихід-в режимі JTAG TCK, в режимі SPI SK;
23 - ADBUS1 – вихід- у режимі JTAG TDI, у режимі SPI DO;
22 - ADBUS2 – вхід в режимі JTAG TDO, в режимі SPI DI;
21 - ADBUS3 – вихід- в режимі JTAG TMS, в режимі SPI як допоміжний сигнал (CS);
20 - ADBUS4 – у режимі JTAG вхід\вихід, у режимі SPI допоміжний вихід. Цей висновок використовується для подачі сигналу RESET мікроконтролер;
15 - AСBUS0 – вільно програмований вхід\вихід у всіх режимах (опційно використовується для подачі живлення у програмований пристрій);
13 - AСBUS1 – вільно програмований вход/вихід у всіх режимах.

У принципі ці висновки багатофункціональні. Їх поведінка визначається вибраним режимом під час відкриття порту.

Канал використовується для налагодження програмованого пристрою. Для цього потрібно лише мати незадіяний порт UART у мікроконтролері. Далі справа техніки. У програмі мікроконтролера у потрібних місцях використовуємо функцію форматованого виводу printf().

40 -BDBUS0 – вихід- у режимі UART TXD;
39 -BDBUS1 – вхід- у режимі UART RXD;
28 - BСBUS2 – вихід- в режимі UART LED-індикатор (запалюється під час передачі даних через USB);
27 - BСBUS3 – вихід- в режимі UART LED-індикатор (запалюється при прийомі даних через USB).

Нижче наведено друковану плату програматора

На сьогоднішній день цей універсальний програматор підтримує мікроконтролери AVR за інтерфейсами JTAG та SPI. Причому швидкість прошивки Atmega64 по JTAG не більше 5 секунд, по SPI не більше 8 секунд. Важливо, прошивати можна будь-які мікроконтролери, до яких поширюється специфікація для програматора. Зараз, наприклад, ведеться розробка підтримки мікроконтролерів NEC.

Робоча форма поділена на дві частини: зліва таблиці для роботи з FLASH (зверху) та EEPROM (знизу), сюди можна відкривати файли або завантажувати прошивки з мікроконтролера, робити верифікацію, правити вміст осередків пам'яті; праворуч текстове поле для налагодження, сюди виводяться дані з каналу, також можна там вводити текст, який відправиться в порт (функціонально це аналог HyperTerminal). Розробка ведеться на платформі Visual C# під Windows. Також є можливість розробляти іншими мовами. Програматор може працювати під Linux.

Використовувана література:
1. А.В. Євстігнєєв «Мікроконтролери AVR сімейств Tiny та Mega фірми ATMEL», М. Видавничий дім «Додека-ХХI», 2005.
2. Future Technology Devices International Ltd. “FT2232D Dual USB UART/FIFO I.C.” , Datasheet, 2006.
3. Future Technology Devices International Ltd. "Software Application Development D2XX Programmer"s Guide", Document, 2009.
4. Future Technology Devices International Ltd. “Programmers Guide for High Speed ​​FTCJTAG DLL”, Application note AN_110, 2009.
5. Future Technology Devices International Ltd. “Programmers Guide for High Speed ​​FTCSPI DLL”, Application note AN_111, 2009.
6. Ендрю Троелсен "С# і платформа.NET" М., С-П. Пітер, 2007.

Завантажити вихідні програми та друковану плату у форматі ви можете нижче

Борисов Олексій () м.Сизрань, Самарська обл.

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

Позначення Тип Номінал Кількість ПриміткаМагазинМій блокнот
U1 МікросхемаAT93C46D-8S1 У блокнот
U2 МікросхемаFT2232D1 У блокнот
VT1 MOSFET-транзистор

BSS84

1 У блокнот
З 1 Конденсатор0.01 мкФ1 У блокнот
С2, С3 Конденсатор27 пФ2 У блокнот
С4, С5, С7, С9, С10 Конденсатор0.1 мкФ5 У блокнот
С6 Конденсатор0.033 мкФ1 У блокнот
С8 Електролітичний конденсатор10 мкФ1 У блокнот
R1 Резистор

2.2 ком

1 0.05Вт У блокнот
R2 Резистор

10 ком

1 0.05Вт У блокнот
R3, R4 Резистор

27 Ом

2 0.05Вт У блокнот
R5 Резистор

470 Ом

1 0.05Вт У блокнот
R6, R7 Резистор

1.5 ком

2 0.05Вт У блокнот
R8-R16 Резистор
Підтримайте проект - поділіться посиланням, дякую!
Читайте також
Конспект лекцій з курсу Конспект лекцій з курсу "Комп'ютерна Електроніка" Програматор USB ISP для AVR: Ще один крок у бік від ардуінонізації Саморобний USB програматор для avr Програматор USB ISP для AVR: Ще один крок у бік від ардуінонізації Саморобний USB програматор для avr Програматор USB ISP для AVR: Ще один крок у бік від ардуінонізації Універсальний програматор для авр студіо Програматор USB ISP для AVR: Ще один крок у бік від ардуінонізації Універсальний програматор для авр студіо