Схеми та матеріали. Оновлення "прошивки" програматора

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

Раз вирішено було зібрати мініатюрний програматор, то перемалював схему під мікроконтролер Atmega8 у корпусі TQFP32(розпинання мікроконтролера відрізняється від розпинування в корпусі DIP):

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


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


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


Прошивка керуючого мікроконтролера

Отже, після збирання пристрою залишилося найважливіше - прошити керуючий мікроконтролер. Для цих цілей добре підходять друзі, у яких залишилися комп'ютери з LPT портом:)Найпростіший програматор на п'яти проводках для AVR
Мікроконтролер можна прошивати з роз'єму програмування, з'єднавши висновки Reset мікроконтролера (29 нога) та роз'єму. Прошивка існує для моделей Atmega48, Atmega8 та Atmega88. Бажано використовувати один із двох останніх каменів, оскільки підтримка версії під Atmega48 припинена і остання версія прошивки датується 2009 роком. А версії під 8-й та 88-й каміння постійно оновлюються, і автор начебто планує додати у функціонал внутрішньосхемний відладчик. Прошивку беремо на сторінці німця. Для заливання керуючої програми до мікроконтролера я використовував програму PonyProg. При програмуванні необхідно завести кристал працювати від зовнішнього джерела тактування на 12 МГц. Скрин програми з налаштуваннями fuse перемичок в PonyProg:


Після прошивки повинен спалахнути світлодіод підключений до 23 ноги мікроконтролера. Це буде вірна ознака того, що програматор прошити вдало і готовий до роботи.

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

Установка велася на машину із системою Windows 7 і жодних проблем не виникло. При першому підключенні до комп'ютера вийде повідомлення про виявлення нового пристрою з пропозицією встановлення драйвера. Вибираємо установку із зазначеного місця:


Вибираємо папку де лежать дрова і тиснемо Далі


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


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


Тепер програматор готовий до роботи.

Khazama AVR Programmer

Для роботи з програматором я вибрав прошивальник Khazama AVR Programmer. Чудова програма, з мінімальним інтерфейсом.


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


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

Завантажити файл друкованої платиу SprintLayout можна за цим посиланням

Які перші кроки має зробити радіоаматор, котрий вирішив зібрати схему на мікроконтролері? Природно, необхідна програма, що управляє, - "прошивка", а також програматор.

І якщо з першим пунктом немає проблем - готову "прошивку" зазвичай викладають автори схем, то ось із програматором справи складніші.

Ціна готових USB-програматорів досить висока та найкращим рішенням буде зібрати його самостійно. Ось схема пропонованого пристрою (картинки клікабельні).

Основна частина.

Панель установки МК.

Вихідна схема взята з сайту LabKit.ru з дозволу автора, за що йому велике спасибі. Це так званий клон фірмового програматора PICkit2. Так як варіант пристрою є "полегшеною" копією фірмового PICkit2, автор назвав свою розробку PICkit-2 Lite, що підкреслює простоту складання такого пристрою для радіоаматорів-початківців.

Що може програматор? За допомогою програматора можна буде прошити більшість легкодоступних та популярних МК серії PIC (PIC16F84A, PIC16F628A, PIC12F629, PIC12F675, PIC16F877A та ін), а також мікросхеми пам'яті EEPROM серії 24LC. Крім цього, програматор може працювати в режимі USB-UART перетворювача, має частину функцій логічного аналізатора. Особливо важлива функція, яку має програматор - це розрахунок калібрувальної константи вбудованого RC-генератора деяких МК (наприклад, таких як PIC12F629 та PIC12F675).

Необхідні зміни.

У схемі є деякі зміни, які необхідні для того, щоб за допомогою програматора PICkit-2 Lite була можливість записувати/прати/зчитувати дані мікросхем пам'яті EEPROM серії 24Cxx.

Зі змін, які були внесені до схеми. Додано з'єднання від 6 виведення DD1 (RA4) до 21 виведення ZIF-панелі. Висновок AUX використовується виключно для роботи з мікросхемами EEPROM-пам'яті 24LС (24C04, 24WC08 та аналоги). По ньому передаються дані, тому схемою панелі програмування він позначений словом "Data". При програмуванні мікроконтролерів висновок AUX зазвичай не використовується, хоча він і потрібен для програмування МК в режимі LVP.

Також доданий "підтягуючий" резистор на 2 ком, який включається між виведенням SDA та Vcc мікросхем пам'яті.

Всі ці доробки я вже робив на друкованій платі, після збирання PICkit-2 Lite за вихідною схемою автора.

Мікросхеми пам'яті 24Cxx (24C08 та ін) широко використовуються в побутовій радіоапаратурі, і їх іноді доводиться прошивати, наприклад, під час ремонту кінескопних телевізорів. Вони пам'ять 24Cxx використовується для зберігання налаштувань.

У РК-телевізорах застосовується інший тип пам'яті (Flash-память). Про те, як прошити пам'ять РК-телевізора я вже розповідав. Кому цікаво, загляньте.

У зв'язку з необхідністю роботи з мікросхемами серії 24Cxx мені і довелося "допилювати" програматор. Труїти нову друковану плату я не став, просто додав необхідні елементи на друкованій платі. Ось що вийшло.

Ядром пристрою є мікроконтролер PIC18F2550-I/SP.

Це єдина мікросхема у пристрої. МК PIC18F2550 необхідно "прошити". Ця проста операція у багатьох викликає ступор, оскільки виникає так звана проблема "курки та яйця". Як її вирішив я, розповім трохи згодом.

Список деталей для збирання програматора. У мобільній версії потягніть таблицю вліво (свайп вліво-вправо), щоб побачити її стовпці.

Назва Позначення Номінал/Параметри Марка або тип елемента
Для основної частини програматора
Мікроконтролер DD1 8-ми бітний мікроконтролер PIC18F2550-I/SP
Біполярні транзистори VT1, VT2, VT3 КТ3102
VT4 КТ361
Діод VD1 КД522, 1N4148
Діод Шоттки VD2 1N5817
Світлодіоди HL1, HL2 будь-який на 3 вольти, червоногоі зеленогокольори світіння
Резистори R1, R2 300 Ом
R3 22 ком
R4 1 ком
R5, R6, R12 10 ком
R7, R8, R14 100 Ом
R9, R10, R15, R16 4,7 ком
R11 2,7 ком
R13 100 ком
Конденсатори C2 0,1 мк К10-17 (керамічні), імпортні аналоги
C3 0,47 мк
Електролітичні конденсатори C1 100 мкф * 6,3 в К50-6, імпортні аналоги
C4 47 мкф * 16 в
Котушка індуктивності (дросель) L1 680 мкГн уніфікований типу EC24, CECL або саморобний
Кварцовий резонатор ZQ1 20 МГц
USB-розетка XS1 типу USB-BF
Перемичка XT1 будь-якого типу "джампер"
Для панелі установки мікроконтролерів (МК)
ZIF-панель XS1 будь-яка 40 контактна ZIF-панель
Резистори R1 2 ком МЛТ, МОН (потужністю від 0,125 Вт та вище), імпортні аналоги
R2, R3, R4, R5, R6 10 ком

Тепер трохи про деталі та їх призначення.

Зеленийсвітлодіод HL1 світиться, коли на програматор подано живлення, а червонийсвітлодіод HL2 випромінює в момент передачі між комп'ютером і програматором.

Для надання пристрою універсальності та надійності використовується USB-розетка XS1 типу "B" (квадратна). У комп'ютері використовується USB-розетка типу "А". Тому переплутати гнізда з'єднувального кабелю неможливо. Також таке рішення сприяє надійності пристрою. Якщо кабель прийде в непридатність, його легко замінити новим не вдаючись до паяння і монтажних робіт.

Як дросель L1 на 680 мкГн краще застосувати готовий (наприклад, типів EC24 або CECL). Але якщо готовий виріб знайти не вдасться, дросель можна виготовити самостійно. Для цього потрібно намотати 250 - 300 витків дроту ПЕЛ-0,1 на сердечник із фериту від дроселя типу CW68. Варто врахувати, що завдяки наявності ШІМ із зворотним зв'язком, піклуватися про точність номіналу індуктивності не варто.

Напруга для високовольтного програмування (Vpp) від +8,5 до 14 вольт створюється ключовим стабілізатором. До нього входять елементи VT1, VD1, L1, C4, R4, R10, R11. З 12 виведення PIC18F2550 на базу VT1 надходять імпульси ШІМ. Зворотний зв'язок здійснюється дільником R10, R11.

Щоб захистити елементи схеми від зворотної напруги з ліній програмування у разі використання USB-програматора в режимі внутрішньосхемного програмування ICSP (In-Circuit Serial Programming), застосований діод VD2. VD2 - це діод Шоттки. Його варто підібрати з падінням напруги на P-N переході трохи більше 0,45 вольт. Також діод VD2 захищає елементи від зворотної напруги, коли програматор застосовується в режимі USB-UART перетворення та логічного аналізатора.

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

Компактність пристрою надає універсальна ZIF-панель (Zero Insertion Force – з нульовим зусиллям установки).

Завдяки їй можна "зашити" МК практично у будь-якому корпусі DIP.

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

Ось так потрібно встановлювати 18-ти вивідні мікроконтролери (PIC16F84A, PIC16F628A та ін.).

А ось так 8-ми вивідні мікроконтролери (PIC12F675, PIC12F629 та ін.).

Якщо є потреба прошити мікроконтролер у корпусі для поверхневого монтажу (SOIC), то можна скористатися перехідником або просто підпаяти до мікроконтролера 5 висновків, які зазвичай потрібні для програмування (Vpp, Clock, Data, Vcc, GND).

Готовий малюнок друкованої плати з усіма змінами ви знайдете за посиланням наприкінці статті. Відкривши файл у програмі Sprint Layout 5.0 можна за допомогою режиму "Друк" не лише роздрукувати шар із малюнком друкованих провідників, а й переглянути позиціонування елементів на друкованій платі. Зверніть увагу на ізольовану перемичку, яка пов'язує 6 висновок DD1 та 21 висновок ZIF-панелі. Друкувати малюнок плати необхідно у дзеркальному відображенні.

Виготовити друковану плату можна методом ЛУТ, а також маркером для друкованих плат за допомогою цапонлаку (так робив я) або "олівцевим" методом.

Ось малюнок позиціонування елементів на друкованій платі (клікабельно).

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

"Прошивка" мікроконтролера PIC18F2550.

Файл "прошивки" - PK2V023200.hexнеобхідно записати на згадку про МК PIC18F2550I-SP за допомогою будь-якого програматора, який підтримує PIC мікроконтролери (наприклад, Extra-PIC). Я скористався JDM Programmator'ом JONIC PROG та програмою WinPic800.

Залити "прошивку" в МК PIC18F2550 можна і за допомогою того ж фірмового програматора PICkit2 або його нової версії PICkit3. Природно, зробити це можна і саморобним PICkit-2 Lite, якщо хтось із друзів встиг зібрати його раніше за вас:).

Також варто знати, що "прошивка" мікроконтролера PIC18F2550-I/SP (файл PK2V023200.hex) записується при встановленні програми PICkit 2 Programmer в папку разом із файлами самої програми. Зразковий шлях розташування файлу PK2V023200.hex - "C:\Program Files (x86)\Microchip\PICkit 2 v2\PK2V023200.hex" . У тих, у кого на ПК встановлена ​​32-бітна версія Windows, шлях розташування буде іншим: "C:\Program Files\Microchip\PICkit 2 v2\PK2V023200.hex" .

Ну а якщо вирішити проблему "курки та яйця" не вдалося запропонованими способами, то можна купити вже готовий програматор PICkit3 на сайті AliExpress. Там він коштує набагато дешевше. Про те, як купувати деталі та електронні набори на AliExpress я писав.

Оновлення "прошивки" програматора.

Прогрес не стоїть на місці і іноді компанія Microchip випускає оновлення для свого ПЗ, у тому числі і для програматора PICkit2, PICkit3. Звичайно, і ми можемо оновити керуючу програму свого саморобного PICkit-2 Lite. Для цього знадобиться програма PICkit2 Programmer. Що це таке і як користуватися трохи пізніше. А поки що кілька слів про те, що потрібно зробити, щоб оновити "прошивку".

Для оновлення програмного забезпечення необхідно замкнути перемичку XT1 на програматорі, коли він відключений від комп'ютера. Потім підключити програматор до ПК та запустити PICkit2 Programmer. При замкнутій XT1 активується режим bootloaderдля завантаження нової версії прошивки. Потім у PICkit2 Programmer через меню "Tools" - "Download PICkit 2 Operation System" відкриваємо заздалегідь підготовлений hex-файл оновленої прошивки. Далі відбудеться процес оновлення програмного забезпечення програматора.

Після оновлення потрібно відключити програматор від ПК та зняти перемичку XT1. У звичайному режимі перемичка розімкнена. Дізнатися версію програмного забезпечення можна через меню "Help" - "About" у програмі PICkit2 Programmer.

Це все за технічними моментами. А тепер про софт.

Робота із програматором. Програма PICkit2 Programmer.

Для роботи з USB-програматором нам потрібно встановити на комп'ютер програму PICkit2 Programmer. Ця спеціальна програма має простий інтерфейс, легко встановлюється і не вимагає особливого налаштування. Варто зазначити, що працювати з програматором можна і за допомогою середовища розробки MPLAB IDE, але для того, щоб прошити/стерти/вважати МК досить простої програми – PICkit2 Programmer. Рекомендую.

Після встановлення програми PICkit2 Programmer підключаємо до комп'ютера зібраний USB-програматор. При цьому засвітиться зеленийсвітлодіод ("живлення"), а операційна система впізнає пристрій як "PICkit2 Microcontroller Programmer" та встановить драйвера.

Запускаємо програму PICkit2 Programmer. У вікні програми має з'явитися напис.

Якщо програматор не підключений, то у вікні програми з'явиться страшний напис та короткі інструкції "Що робити?" англійською.

Якщо програматор підключити до комп'ютера з встановленим МК, то програма при запуску визначити його і повідомить нам про це у вікні PICkit2 Programmer.

Вітаю! Перший крок зроблено. А про те, як скористатися програмою PICkit2 Programmer, я розповів в окремій статті. Наступний крок .

Необхідні файли:

    Посібник користувача PICkit2 (рус.) беремо або .

З розвитком комп'ютерної техніки, з кожним разом стає менше і менше комп'ютерів оснащених COM і LPT портами. Це, у свою чергу, викликає труднощі, зокрема у радіоаматорів, пов'язані з поєднанням засобів програмування мікроконтролерів з персональним комп'ютером.

У цій статті наведено опис USB-програматора для мікроконтролерів AVR, який можна зібрати своїми руками. Побудований він на мікроконтролері Atmega8 і здатний працювати від роз'єму USB комп'ютера. Цей програматор сумісний із STK500 v2.

Опис USB програматора

USB програматор побудований на платі, виготовленій з одностороннього фольгованого склотекстоліту. На платі є 2 перемички: одна розташована під роз'ємом SPI, друга перемичка розташована неподалік того ж роз'єму.

Після того, як всі деталі будуть запаяні, потрібно прошити мікроконтролер Atmega8 прошивкою наведеною в кінці статті. Фьюзи, які необхідно виставити при програмуванні мікроконтролера Atmega8, мають виглядати так:

  • SUT1 = 0
  • BOOTSZ1 = 0
  • BOOTSZ0 = 0
  • CKOPT = 0
  • SPIEN = 0

У деяких програмах ф'юзи виставляються протилежно до цього. Наприклад, у програмі CodeVisionAVR необхідно проставити галочки навпроти перелічених вище фьюзів, а в програмі PonyProg навпаки.

Програмування Atmega8 через LPT-порт комп'ютера

Найшвидший та найдешевший спосіб запрограмувати Atmega8 – застосувати LPT-програматор для AVR. Подібна схема наведена нижче.

Живлення мікроконтролера здійснюється від простого стабілізатора напруги 78L05. Як оболонка для програмування можна використовувати програму UniProf.

При першому включенні програми та при не підключеному контролері, натиснувши кнопку «LPTpins», необхідно налаштувати висновки LPT-порту таким чином:

У момент запуску UniProf, вона автоматично визначає вигляд мікроконтролера. Завантажуємо в пам'ять UniProf прошивку Atmega8_USB_prog.hex, відхиляємо підключення файлу EEPROM.

Виставляємо в такий спосіб фьюзи (для програми UniProF), натиснувши кнопку «FUSE»:

Для запам'ятовування натискаємо всі три кнопки «Write». Потім натиснувши на «Erase» попередньо очищаємо пам'ять мікроконтролера, що прошивається. Після цього вже тиснемо на "Prog" і чекаємо завершення прошивки.

Налаштування USB програматора

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

Налаштування порту:

Налаштування терміналу:

Налаштування ASCII:

Тепер після всіх виконаних процедур подаємо харчування на USB програматор. Світлодіод HL1 повинен промигати 6 разів, а потім світиться постійно.

Для перевірки зв'язку USB програматора з комп'ютером 2 рази натискаємо клавішу Enter у програмі HyperTerminal. Якщо все гаразд ми повинні побачити таку картину:

Якщо це не так ще раз перевіряємо монтаж, особливо лінію TxD.

Далі вводимо версію програматора 2.10, оскільки без цього програматор не працюватиме з програмами верхнього рівня. Для цього вводимо "2" і натискаємо "Enter", вводимо "а" (англійська) і натискаємо "Enter".

USB програматор здатний розпізнавати підключення мікроконтролера, що програмується. Виконано це як контроль «підтяжки» сигналу Reset до джерела живлення. Цей режим вмикається та вимикається таким чином:

  • "0", "Enter" - режим вимкнено.
  • "1", "Enter" - режим увімкнено.

Зміна швидкості програмування (1МГц):

  • "0", "Enter" - максимальна швидкість.
  • "1", "Enter" - знижена швидкість.

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

(завантажено: 1 203)

Якось я вирішив зібрати нескладний LC-метр на pic16f628a і природно його треба було чимось прошити. Раніше у мене був комп'ютер із фізичним com-портом, але зараз у моєму розпорядженні тільки usb та плата pci-lpt-2com. Для початку я зібрав простий JDM програматор, але виявилося ні з платою pci-lpt-com, ні з usb-com перехідником він працювати не захотів (низька напруга сигналів RS-232). Тоді я кинувся шукати usb програматори pic, але там, як виявилося все обмежено використанням дорогих pic18f2550/4550, яких у мене природно не було, та й шкода такі дорогі МК використовувати, якщо на піках я дуже рідко щось роблю (вважаю за краще авр- ти, їх прошити проблем не складає, вони набагато дешевше, та й програми писати мені здається, на них простіше). Довго копавшись на просторах інтернету в одній із безлічі статей про програматор EXTRA-PIC та його всілякі варіанти один з авторів написав, що extrapic працює з будь-якими com-портами і навіть перехідником usb-com.

У схемі цього програматора використовується перетворювач логічних рівнів max232.

Я подумав, якщо використовувати usb адаптер, то буде дуже безглуздо робити два рази перетворення рівнів usb в TTL, TTL в RS232, RS232 назад в TTL, якщо можна просто взяти TTL сигнали порту RS232 з мікросхеми usb-usart перетворювача.

Так і вчинив. Взяв мікросхему CH340G (у якій є всі 8 сигналів com-порту) і підключив її замість max232. І ось що вийшло.

У моїй схемі є перемичка jp1, якої немає в екстрапику, її я поставив тому, що не знав, як поведеться висновок TX на ТТЛ рівні, тому зробив можливість його інвертувати на вільному елементі, що залишився, І-НЕ і не помилився, як виявилося, безпосередньо на виведенні TX логічна одиниця, і тому на виведенні VPP при включенні є 12 вольт, а при програмуванні нічого не буде (хоча можна інвертувати TX програмно).

Після складання плати настав час випробувань. І тут настало головне розчарування. Програматор визначився одразу (програмою ic-prog) і заробив, але дуже повільно! У принципі – очікувано. Тоді в налаштуваннях com порту я виставив максимальну швидкість (128 кілобід) почав випробування всіх знайдених програм для JDM. У результаті найшвидшою виявилася PicPgm. Мій pic16f628a прошивався повністю (hex, eeprom і config) плюс верифікація десь 4-6 хвилин (причому читання йде повільніше за запис). IcProg також працює, але повільніше. Помилок про програмування не виникло. Також я спробував прошити eeprom 24с08, результат той самий - все шиє, але дуже повільно.

Висновки: програматор досить простий, в ньому немає дорогих деталей (CH340 - 0.3-0.5$, к1533ла3 можна взагалі знайти серед радіохламу), працює на будь-якому комп'ютері, ноутбуці (і навіть можна використовувати планшети на windows 8/10). Мінуси: він дуже повільний. Також він потребує зовнішнього живлення для сигналу VPP. У результаті, як мені здалося, для нечастої прошивки піків - це нескладний для повторення і недорогий варіант для тих, хто не має під рукою старого комп'ютера з потрібними портами.

Ось фото готового девайсу:

Як співається у пісні "я його зліпила з того, що було". Набір деталей найрізноманітніший: і smd, і DIP.

Для тих, хто ризикне повторити схему, як usb-uart конвертер підійде майже будь-який (ft232, pl2303, cp2101 та ін), замість к1533ла3 підійде до555, думаю навіть до155 серія або зарубіжний аналог 74als00, можливо навіть буде працювати з лог к1533лн1. Додаю свою друковану плату, але розведення там під ті елементи, що були, кожен може перемалювати під себе.

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

Позначення Тип Номінал Кількість ПриміткаМагазинМій блокнот
IC1 МікросхемаCH340G1 До блокноту
IC2 МікросхемаК1533ЛА31 До блокноту
VR1 Лінійний регулятор

LM7812

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

LM7805

1 До блокноту
VT1 Біполярний транзистор

КТ502Е

1 До блокноту
VT2 Біполярний транзистор

КТ3102Е

1 До блокноту
VD1-VD3 Випрямний діод

1N4148

2 До блокноту
C1, C2, C5-C7 Конденсатор100 нФ5 До блокноту
C3, C4 Конденсатор22 пФ2 До блокноту
HL1-HL4 СвітлодіодБудь-який4 До блокноту
R1, R3, R4 Резистор

1 ком

3
22 вересня 2011 о 20:11

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

  • Програмування мікроконтролерів

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

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

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

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

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

Прошивка керуючого мікроконтролера
Отже, після збирання пристрою залишилося найважливіше - прошити керуючий мікроконтролер. Для цих цілей добре підходять друзі, у яких залишилися комп'ютери з LPT портом:) Найпростіший програматор на п'яти проводках для AVR
Мікроконтролер можна прошивати з роз'єму програмування, з'єднавши висновки Reset мікроконтролера (29 нога) та роз'єму. Прошивка існує для моделей Atmega48, Atmega8 та Atmega88. Бажано використовувати один із двох останніх каменів, оскільки підтримка версії під Atmega48 припинена і остання версія прошивки датується 2009 роком. А версії під 8-й та 88-й каміння постійно оновлюються, і автор начебто планує додати у функціонал внутрішньосхемний відладчик. Прошивку беремо на сторінці німця. Для заливання керуючої програми до мікроконтролера я використовував програму PonyProg. При програмуванні необхідно завести кристал працювати від зовнішнього джерела тактування на 12 МГц. Скрин програми з налаштуваннями fuse перемичок в PonyProg:

Після прошивки повинен спалахнути світлодіод підключений до 23 ноги мікроконтролера. Це буде вірна ознака того, що програматор прошити вдало і готовий до роботи.

Встановлення драйвера
Установка велася на машину із системою Windows 7 і жодних проблем не виникло. При першому підключенні до комп'ютера вийде повідомлення про виявлення нового пристрою з пропозицією встановлення драйвера. Вибираємо установку із зазначеного місця:

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

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

Тепер програматор готовий до роботи.

Khazama AVR Programmer
Для роботи з програматором я вибрав прошивальник Khazama AVR Programmer. Чудова програма, з мінімальним інтерфейсом.

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

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

Завантажити файл друкованої плати в SprintLayout можна за