Контакти

Найпростіший програматор JDM для PIC на пасивних компонентах. Як програмувати PIC мікроконтролери або Простий JDM програматор Ntv програматор pic мікроконтролерів jdm сумісний відгуки

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

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

Ціна готових 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» . У тих, у кого на ПК встановлена \u200b\u200b32-бітна версія 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. Це спеціальна програма має простий інтерфейс, легко встановлюється і не вимагає особливої \u200b\u200bнастройки. Варто зазначити, що працювати з програматором можна і за допомогою середовища розробки MPLAB IDE, але для того, щоб прошити / стерти / вважати МК досить простий програми - PICkit2 Programmer. Рекомендую.

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

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

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

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

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

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

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

Програматор JDM я використовував для контролерів PIC16F676, PIC16F630і PIC16F629. Від початкового, мій варіант відрізняється тим, що напруга програмування Vppможна подати раніше напруги харчування Vddдля перепрограмування контролерів. Для цієї мети служить верхній за схемою транзистор. Він відкривається коли напруга на контакті 3 розетки DB9F досягне приблизно 8 В щодо контакту 5 розетки або 13 В відносно мінуса контролера Vss. вимикач Vdd_Vpp в замкнутому стані дозволяє напрузі харчування Vddз'явитися на висновках контролера раніше напруги програмування Vpp.

Схема програматора JDM

Для програмування буде використовуватися COM-порт, у якого будуть задіяні такі висновки - 3, 4, 5, 7 і 8. У схемі закладена можливість програмування мікросхем пам'яті серії 24сХХ. Для цього в колодці DIP16 використовуються нижні 8 контактів, перший контакт мікросхеми вставляється в п'ятий конакт колодки. Джампер J1 дозволяє відключити захист від запису.

Нижній за схемою транзистор як і раніше використовується для зсуву напруг так як плюс харчування контролера Vddз'єднується з контактом 5 розетки - загальним проводом порту, а мінус харчування Vssвиходить за допомогою діодів, підключених до контактів 3 і 7 розетки, і стабілітрона.

Транзистори в JDM программаторе використовував 2SC945і BC548, Діоди - 1N4148. Конденсатор u1 треба розташувати якомога ближче до висновків живлення мікроконтролера. Резистор 1k необов'язковий, якщо встановлені резистор 10k і джампер J1 на колодці DIP16.

Цей програматор успішно працює з програмами і

Розвиток електроніки йде стрімкими темпами, і все частіше головним елементом того чи іншого пристрою є мікроконтролер. Він виконує основну роботу і звільняє проектувальника від необхідності створення витончених схемних рішень, Тим самим зменшуючи розмір друкованої плати до мінімального. Як всім відомо, мікро контролером управляє програма, записана в його внутрішню пам'ять. І якщо досвідчений програміст-електронник не відчуває проблем з використанням мікроконтролерів в своїх пристроях, то для початківця радіоаматора спроба записати програму в контролер (особливо PIC) може обернутися великим розчаруванням, а іноді і невеликим піротехнічним шоу у вигляді димить мікросхеми.

Як не дивно, але при всій величі мережі Інтернет в ньому дуже мало інформації про прошивці PIC-контролерів, А той матеріал що вдається знайти - дуже сумнівної якості. Звичайно, можна купити заводський програматор за неадекватну ціну і шити скільки душі завгодно, але що робити, якщо людина не займається серійним виробництвом. Для цих цілей можна зібрати нескладну і недорогу в реалізації саморобку, іменовану JDM-програматором по наведеній нижче схемі (рисунок №1):



Малюнок №1 - схема програматора


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

  • R1 - 10 кОм
  • R2 - 10 кОм (подстроченний). Регулюванням опору даного резистора потрібно домогтися близько 13В на виводі №4 (VPP) під час програмування. У моєму випадку опір становить 1,2 кОм
  • R3 - 200 Ом
  • R4, R5 - 1,5 кОм
  • VD1, VD2, VD3, VD4, VD6 - 1N4148
  • VD5 - 1N4733A (Напруга стабілізації 5,1В)
  • VD7 - 1N4743A (Напруга стабілізації 13В)
  • C1 - 100 нФ (0,1 мкФ)
  • C2 - 470 мкФ х 16 В (електролітичний)
  • SUB-D9F - роз'єм СОМ-порту (МАМА або РОЗЕТКА)
  • Панелька DIP8 - залежить від використовуваного вами контролера

У схемі використаний приклад підключення таких поширених контролерів, як PIC12F675 і PIC12F629, Але це зовсім не означає, що прошивка інших серій PIC буде неможлива. Щоб записати програму в контролер іншого типу, досить перекинути дроти програматора відповідно до малюнком №2, який наведено нижче.



Малюнок №2 - варіанти корпусів PIC-контролерів з необхідними висновками


Як можна здогадатися, в схемі мого вибору програм використаний корпус DIP8. При великому бажанні можна виготовити універсальний перехідник під кожен тип мікросхеми, отримавши тим самим універсальний програматор. Але так як з PIC-контролерами працюю рідко, для мене вистачить і цього.

Хоч сама схема досить проста і не викличе труднощів у складанні, але вона теж вимагає поваги. Тому непогано було б зробити під неї друковану плату. Після деяких маніпуляцій з програмою SprintLayout, Текстолітів, дрилем і праскою, на світ народилася ось така заготовка (фото №3).



Фото №3 - друкована плата програматора


Завантажити исходник друкованої плати для програми SprintLayout можна за цим посиланням:
(Завантажень: 680)
При бажанні його можна змінити під свій тип PIC-контролера. Для тих, хто вирішив залишити плату без змін, викладаю вид з боку деталей для полегшення монтажу (рисунок №4).



Малюнок №4 - плата з монтажною боку


Ще трохи чаклунства з паяльником і ми маємо готове пристрій, здатний прошити PIC-контролер через COM-порт вашого комп'ютера. Ще тепленький і не відмитий від флюсу результат моїх старань показаний на фото №5.



Фото №5 - програматор в зборі


З цього моменту, перший етап на шляху до прошивці PIC-контролера, Підійшов до кінця. Другий етап включатиме в себе підключення програматора до комп'ютера і роботу з програмою IC-Prog.
На жаль, не всі сучасні комп'ютери і ноутбуки здатні працювати з даними програматором через банальну відсутність на них COM-портів, А ті що встановлені на ноутбуках не видають необхідні для програмування 12В. Так що я вирішив звернеться до свого першого ПК, Який давним-давно чекав під порохом свого зоряного часу (і таки дочекався).
Отже включаємо комп'ютер і насамперед встановлюємо програму IC-Prog. Завантажити її можна з сайту учасника або за цим посиланням:
(Завантажень: 778)
Підключаємо програматор до COM-порту і запускаємо тільки що встановлене додаток. Для коректної роботи необхідно виконати ряд маніпуляцій. Спочатку необхідно вибрати той тип контролера, який збираємося шити. У мене це PIC12F675. На скріншоті №6 поле для вибору контролера виділено червоним кольором.



Скріншот №6 - вибір типу мікроконтролера




Скріншот №7 - настройка методу запису контролера


У цьому ж вікні переходимо у вкладку " програмування"І вибираємо пункт" Перевірка при програмуванні". Перевірка після програмування може викликати помилку, так як в деяких випадках самої прошивкою встановлюються фьюз блокування зчитування СР. Щоб не морочити собі голову дану перевірку краще відключити. Коротше слідуємо скриншоту №8.



Скріншот №8 - настройка верифікації


Продовжуємо роботу з цим вікном і переходимо на вкладку " загальні". Тут необхідно встановити пріоритет роботи програми і обов'язково задіяти NT / 2000 / XP драйвер (скріншот №9). У деяких випадках програма може запропонувати установку даного драйвера і буде потрібно перезапуск IC-Prog.



Скріншот №9 - загальні налаштування


Отже, з цим вікном робота закінчена. Тепер перейдемо до налаштувань самого програматора. Вибираємо в меню " Налаштування "-\u003e" Налаштування програматора"Або просто натискаємо клавішу F3. З'являється наступне вікно, показане на скріншоті №10.



Скріншот №10 - вікно налаштувань програматора


Насамперед вибираємо тип програматора - JDM Programmer. Далі виставляємо радіокнопку використання драйвера Windows. Наступний крок має на увазі вибір COM-порту, До якого підключений ваш програматор. Якщо він один, питань взагалі немає, а якщо більше одного - подивіться в диспетчері пристроїв, який на даним момент використовується. Повзунок затримки введення / виведення призначений для регулювання швидкості запису і читання. Це може знадобиться на швидких комп'ютерах і при виникненні проблем з прошивкою - цей параметр необхідно збільшити. У моєму випадку він залишився за замовчуванням рівним 10 і все нормально відпрацювало.

На цьому настройка програми IC-Prog закінчена і можна переходити до процесу самої прошивки, але для початку вважаємо дані з мікроконтролера і подивимося що в нього записано. Для цього на панелі інструментів натискаємо на значок мікросхеми із зеленою стрілкою, як показано на скріншоті №11.



Скріншот №11 - процес читання інформації з мікроконтролера


Якщо мікроконтролер новий і до цього не прошивали, то все осередки його пам'яті будуть заповнені значеннями 3FFF, Крім самої останньої. У ній міститиметься значення калібрувальної константи. Це дуже важливе і унікальне для кожного контролера значення. Від нього залежить точність тактирования, яка шляхом підбору і установки цієї самої константи закладається заводом виробником. На скріншоті №12 показана та осередок пам'яті, в якій буде зберігатися константа при читанні контролера.



Скріншот №12 - значення калібрувальної константи


Повторюся, що значення унікальне для кожної мікросхеми і не обов'язково має збігатися з тим, що на малюнку. Багато через недосвідченість затирають цю константу і надалі PIC-контролер починає функціонувати належним чином, якщо в проекті використовується тактирование від внутрішнього генератора. Раджу записати цю константу і наклеїти напис з її значенням прямо на контролер. Таким чином ви уникнете безліч неприємностей в майбутньому. Отже, значення записано - рухаємося далі. Відкриваємо файл прошивки, який має як правило розширення .hex. Тепер замість написів 3FFF, Буфер програмування містить код нашої програми (скріншот №13).



Скріншот №13 - прошивка, завантажена в буфер програмування


Вище я писав, що багато затирають калибровочную константу з необережності. Коли ж це відбувається? Це трапляється в момент відкриття файлу прошивки. Значення константи автоматично змінюється на 3FFF і якщо почати процес програмування, то назад дороги вже немає. На скріншоті №14 виділена та осередок пам'яті де раніше була константа 3450 (До відкриття hex-файлу).

Одного разу я вирішив зібрати нескладний 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 в usart 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

Швидко зібрати вподобану схему на мікроконтролері для багатьох радіоаматорів - не проблема. Але багато початківці працювати з мікроконтролерами стикаються з питанням - як його запрограмувати. Одним з найбільш простих варіантів программаторов є JDM програматор.

Програма - програматор ProgCode v 1.0

Ця програма працює в WindowsXP. Дозволяє програмувати PIC контролери середнього сімейства (PIC16Fxxx) через COM порт комп'ютера. Індикатор підключення вибору програм (у правому верхньому кутку вікна) при відсутності вибору програм на обраному в настройках порту забарвлюється в червоний колір. Якщо програматор підключений - програма виявляє його і індикатор в правому верхньому куті набирає вигляду, який показаний на малюнку 1.

У лівій частині вікна програми розташована панель управління. Цю панель можна згорнути натиснувши на кнопку в панелі інструментів або, клікнувши по лівому краю вікна (це зручно, коли вікно програми розгорнуто на весь екран).

Малюнок (скріншот програми ProgCode v1.0)


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

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

Формат файлів SFR

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

Налаштування порту і протоколу при підключенні програматора

Після установки програми - за умовчанням виставлені всі настройки, які необхідні для роботи програматора зі схемою JDM, наведеної на цій сторінці.
Інверсія сигналу в наведеній схемі потрібна тільки для виходу OutData, так як в цьому ланцюзі сигнал инвертирован согласующим транзистором. На всіх інших висновках інверсія відключена.



Затримка імпульсу може бути дорівнює 0. Її регулювання передбачена для "особливо важких" екземплярів контролерів, які не вдається прошити. Те ж саме відноситься і до надбавки до паузі під час запису - за замовчуванням вона нульова. Якщо збільшити значення цих параметрів, час програмування контролера значно збільшиться.

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

У WindowsXP застосовується буферізірованіе переданої через порти COM інформації. Це так звані буфера FIFO. Щоб уникнути помилок при програмуванні через JDM цей механізм необхідно відключити. Зробити це можна в диспетчері пристроїв Windows.

Заходимо в панель управління, потім:
Адміністрування - управління комп'ютером - диспетчер пристроїв

Потім вибираємо порт, на який підключений JDM програматор (наприклад COM1) - дивимося властивості - вкладка параметри порту - додатково. І знімаємо галочку на пункті "Використовувати буфери FIFO"

Малюнок - Налаштування COM порту для роботи з JDM программатором



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


Оглядач локальних проектів

Крім безпосередньо програмування контролерів в програмі реалізований зручний оглядач проектів на МК, що знаходяться як на локальних папках комп'ютера, так і в інтернеті. Зроблено це для зручності роботи. Нерідко потрібні проекти лежать в різних папках, і доводиться витрачати час на те, щоб дістатися до потрібної Директорії, щоб переглянути проект. тут потрібні папки легко додати в список папок і переглядати будь-який проект двома-трьома кліками мишки.

Будь-який файл при подвійному натисканні на нього в панелі оглядача відкриється в самій програмі - це відноситься до малюнків, html файлів, Doc, rtf, djvu (при встановлених плагинах), Pdf, txt, asm. Файл можливо так-же відкрити подвійним кліком в браузері за допомогою зовнішньої програми, встановленої на комп'ютері. Для цього розширення потрібного типу файлів необхідно прописати в списку "Асоціації файлів". Якщо шлях до відкриває програмі не вказувати - Windows відкриє файл в програмі за умовчанням (це зручно для відкриття архівів, які не завжди однозначно відкриваються). Якщо шлях до відкриває програмі вказаний в списку - файл відкриється в зазначеній програмі. Зручно переглядати таким чином файли типу SPL, LAY, DSN.

Малюнок (скріншот оглядача програми ProgCode v1.0)



Ось так виглядає вікно з настройками асоціацій файлів:




Оглядач проектів в інтернеті

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



При огляді проектів в інтернеті якщо на сторінці проекту є посилання на файл з розширенням SFR (це формат файлів програми ProgCode), то такий файл при кліці по ньому відкриється в новій вкладці програми і відразу готовий до прошивці в мікроконтролер.
Список посилань можна редагувати скориставшись кнопкою "Змінити". При цьому відкриється вікно редагування списку посилань:





Опис процесу програмування мікросхем

Більшість сучасних мікросхем містить флеш-пам'ять, яка програмується за допомогою протоколу I2C або подібних протоколів.
Жорсткий диск є в PIC, AVR і інших контролерах, мікросхемах пам'яті типу 24Cxx, і подібних до них, різних картах пам'яті типу MMC і SD, звичайних флеш USB картах, Які підключаються до комп'ютера через USB роз'єм.

Розглянемо запис інформації у флеш-пам'ять мікроконтролераPIC 16 F 628 A

Є 2 лінії DATA і CLOCK , За якими передаєтьсяінформація. лініяCLOCK служить для подачі тактових імпульсів, а лініяDATA для передачі інформації.

Щоб передати в мікроконтролер 1 біт інформації, необхідно виставити 0 або 1 (в залежності від значення біта) на лінії даних (DATA) і створити спад напруги (перехід від 1 до 0) на лінії тактирования (CLOCK).
Один біт для контролера - замало. Він чекає навздогін ще п'ять, щоб сприйняти цю посилку з 6-ти біт як команду. Контролера дуже подобаються команди, а складатися вони повинні саме з 6-ти біт - така вже природа у PIC 16.
Ось список і значення команд, які PIC здатний зрозуміти. Команд не так вже й багато - словниковий запас у цього контролера невеликий, але не треба думати, що він зовсім дурний - бувають пристрою і з меншою кількістю команд

"LoadConfiguration" 000000 - Завантаження конфігурації

"LoadDataForDataMemory" - 000011 - Завантаження даних в пам'ять даних (EEPROM)
"IncrementAddress" 000110 - Збільшення адреси PC МК
"ReadDataFromProgramMemory" 000100 - Читання даних з пам'яті програм
"ReadDataFromDataMemory" 000101 - Читання даних з пам'яті даних (EEPROM)
"BeginProgrammingOnlyCycle" 011000 - Почати цикл програмування
"BulkEraseProgramMemory" 001001 - Повне стирання пам'яті програм
"BulkEraseDataMemory" 001011 - Повне стирання пам'яті даних (EEPROM)

Реагує контролер на ці команди по-різному. По-різному після видачі команди потрібно і продовжувати з ним розмову.
Для того щоб почати повноцінний процес програмування необхідно ще подати напругу 12 вольт на висновок MCLR контролера, після цього подати на нього напруга живлення. Саме в такій послідовності подачі напруги є певний сенс. Після подачі живлення, якщо PIC налаштований на роботу від внутрішнього RC генератора, він може почати виконання власної програми, Що при програмуванні річ неприпустима, так як неминучий збій.
Попередня подача 12-ти вольт на MCLR дозволяє уникнути такого розвитку подій.
При запису інформації у флеш-пам'ять програм МК після команди

"LoadDataForProgramMemory" 000010 - Завантаження даних в пам'ять програм

необхідно відправити в контролер самі дані - 16 біт,
які виглядають так:

"0xxxxxxxxxxxxxx 0".

Хрестики в цьому слові - це самі дані, а нулі по краях відправляються як обрамлення - це стандарт для PIC 16. Значущих бітів в слові всього 14. У цій серії контролерів 14-ти бітний формат представлення команд.
Після закінчення передачі слова з даними PIC чекає наступну команду.
Так як нашою метою є запис слова в пам'ять програм МК, за допомогою такої команди повинна бути команда

"BeginEraseProgrammingCycle" 001000 - Почати цикл програмування

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

Сигнали на висновках мікроконтролера формуються комп'ютером за допомогою спеціальних програм - программаторов. Для передачі сигналу можуть служити порти COM, LPT або USB. C JDM программатором працюють такі програми як PonyProg, IsProg, WinPic800.


Схема JDM програматора

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


Одним з питань при підключенні програматора до комп'ютера є питання - як забезпечити селективну розв'язку. Щоб у разі несправності в схемі уникнути пошкодження COM порту. У деяких схемах застосовується мікросхема MAX232, яка забезпечує селективну розв'язку і погодить рівні сигналів. У цій схемі питання вирішене простіше - за допомогою застосування батарейного живлення. Рівень сигналу, що надходить від комп'ютера обмежується стабілітронами VD1, VD2, і VD3. Незважаючи на простоту схеми JDM програматора з його допомогою можна запрограмувати більшість типів PIC мікроконтролерів.

Перемичка між висновками COM6 (DSR) і COM7 (RTS) призначена для того, щоб програма могла визначити, що програматор підключений до комп'ютера.

Підключенню виходів програматора до конкретного МК залежить від типу МК. Часто на плату програматора монтують кілька панельок, які розраховані на певний тип контролерів.

У таблиці наведено призначення ніжок деяких типів МК при програмуванні.

Таке ж розташування висновків, призначених для програмування, мають МК PIC16F84, PIC16F84A.



Призначення висновків для мікроконтролерів серії PIC16Fxxx в залежності від типу корпусу в більшості випадків є стандартним, але якщо виникає сумніву щодо цього, то найнадійніше звіритися з даташіта на конкретний екземпляр МК. Частина документації присутній російською сайтіhttp://microchip.ru Повний же збори даташітов та іншої документації знаходиться на сайті виробника PIC мікроконтролерів:http://microchip.com

індекс проектів

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



При необхідності прошити контролер обраної прошивкою - натискаємо мишкою на файл формату SFR, наприклад Timer_a.sfr
Програма завантажує файл з сервера в нову вкладку.



Після цього залишається тільки вставити МК в панельку програматора, якщо це ще не зроблено, і натиснути на кнопку "Записати все".
Програма записується в МК. Після цього контролер вставляється в плату пристрою і пристрій готовий до роботи.


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