Съдържание:

Преглед на програмиста на JDM: 9 стъпки
Преглед на програмиста на JDM: 9 стъпки

Видео: Преглед на програмиста на JDM: 9 стъпки

Видео: Преглед на програмиста на JDM: 9 стъпки
Видео: Встраиваем LED освещение в LEGO модели / LEGO Technic Lamborghini Sian и Dodge Charger 2024, Ноември
Anonim
Преглед на програмиста на JDM
Преглед на програмиста на JDM

JDM е популярен PIC програмист, защото използва сериен порт, минимум компоненти и не изисква захранване. Но там има объркване, с много варианти на програмисти в мрежата, кои от тях работят с кои PIC? В тази „инструкция“поставяме JDM на тест и аз демонстрирам как да симулирам веригата с помощта на Spice, която ще отговори на всички ваши въпроси!

Консумативи

LTspice, който може да бъде изтеглен от Analog Devices тук.

Тук също се нуждаете от файловете на JDM веригата.

Стъпка 1: Изисквания за сериен порт

Изисквания за сериен порт
Изисквания за сериен порт

JDM изисква сериен порт, отговарящ на спецификацията EIA232, в идеалния случай с нива на напрежение +12/-12.

Според листа с данни на Texas Instruments Line Driver MC1488 (Фигура 3)

Изходен импеданс = 4V/8mA = 500 ома.

Граница на тока на късо съединение = 12mV, без ограничение във времето - без повреда на чипа.

Препоръчва се входен импеданс на линеен приемник = 3k до 7k ohm.

Серийните портове на по-стари настолни компютри използват +12v/-12V, отговарящи на това изискване.

Серийните портове на по -новите лаптопи използват по -ниско напрежение. JDM може или не може да работи - отговорът е по -сложен.

Стъпка 2: Изисквания за програмиране на PIC

Изисквания за програмиране на PIC
Изисквания за програмиране на PIC

Информация относно изискванията за програмиране на PIC се получава от Microchip. Горното е за типично устройство.

Стъпка 3: JDM спецификация

Спецификация на JDM
Спецификация на JDM

Изгубен ли е оригиналният уеб сайт на JDM в мъглата на времето? Това ни оставя да гадаем какво първоначално дизайнерът е имал предвид за спецификацията.

  1. Осигурете VDD = 5V и до IDD = 2mA максимум (за версия "в гнездо")
  2. Осигурете VHH = 13V и до IHH = 0.2mA максимум.
  3. MCLR Време на нарастване tVHHR = 1uS макс.
  4. ICSP версията трябва да може да издърпа MCLR ниско срещу 22k издърпване на целта.

Стъпка 4: Описание на веригата

Описание на веригата
Описание на веригата

Фигура JDM1 се основава на „стандартната“JDM верига, взета от уеб сайта PICPgm. Това е програмистът „PIC in Socket“, където PIC взема захранване от TX и RTS щифтове. Оригиналната диаграма беше трудна за разбиране, така че я прекроих, използвайки нормалната конвенция за текущия поток отгоре надолу. И добавих LED индикатори „RESET“, „PROG“и „RTS“, които са необходими по време на строителството и тестването. Да се надяваме, че те нямат вредно въздействие върху поведението.

Нормалната конвенция за проектиране на схема е обща за всички основания, но ключовата характеристика на JDM е, че земята на сериен порт (GND) е свързана към VDD. Това създава объркване, тъй като сигналите на серийния порт се измерват по отношение на GND, PIC сигналите по отношение на логическата маса (VSS).

Когато TX се повиши, Q1 се държи като два диода, насочени напред. (Колекторът Q1 не е обратен, както при нормална работа на транзистора). Q1 колекторът зарежда C2, който е затегнат при VDD+8V от Zener (D3). Излъчвателят Q1 доставя 13V към MCLR за режим Програма/Проверка.

Когато TX се понижи, кондензаторът C3 се зарежда чрез D1 и VSS се захваща към VDD-5V от ценер (D5). Също така TX се затяга при (VSS-0.6) от D1. Q1 е изключен, C1 задържа своя заряд за следващия импулс за програмиране. MCLR се захваща при 0V от D2, така че PIC вече е нулиран.

Когато RTS е висок, часовникът се предава на PGC. D4 скоба PGC при VDD логика висока. Когато RTS е нисък, кондензатор C3 се зарежда чрез D6 и VSS се захваща към VDD-5V от ценер (D5). D6 затяга PGC при VSS или логика 0.

По време на програмирането данните, изпратени на DTR, се четат на PGD, който PIC конфигурира като вход. Когато DTR е висок, Q2 действа като „последовател на емитер“и PGD напрежението е около (VDD-0.6) или логика 1. Когато DTR е ниско, Q2 действа като лош транзистор (емитерните и колекторните щифтове са обърнати). Q2 издърпва PGD ниско, което се захваща от D7 при VSS или логика 0.

По време на проверката PIC конфигурира PGD като изход за изпращане на данни към серийния порт. DTR трябва да бъде настроен високо и данните се четат в CTS. Когато PGD изходът е висок, Q2 е изключен, CTS = DTR = +12V. Когато изходът на PGD е нисък, Q2 е включен. Q2 колекторът извлича ток (12V+5V)/(1k+1k5) = 7mA от DTR и издърпва CTS ниско към VSS.

Стъпка 5: Подгответе се за симулация

Подгответе се за симулация
Подгответе се за симулация

Изтеглете LT spice, запазете и отворете файловете на веригата (*.asc), предоставени тук. За да симулираме веригата, трябва да й дадем някои входове, след което да „проследим“изходите. V1, V2 V3 симулират 12V сериен порт с изходен импеданс R11, R12, R13.

  • V1 генерира 2 програмни импулса по TX от 0.5ms до 4.5ms
  • V2 генерира поредица от импулси от данни на DTR от 1.5 до 4.5ms
  • V3 генерира поредица от тактови импулси на RTS от 0.5 до 3.5ms

Компонентите V4, X1, R15 и R16 са част от симулацията.

  • V4 генерира 2 импулса от 2.5 до 4.5ms за проверка на данни.
  • Jumper X1 симулира OUTPUT на PGD.
  • R15, R16 симулират „зареждането“на PIC на VDD и MCLR.

Стъпка 6: Промени за ICSP

Модификации за ICSP
Модификации за ICSP
Модификации за ICSP
Модификации за ICSP

Фигура JDM3 показва версията за програмиране „във верига“. Промените от оригинала са

  1. Сменете гнездото ZIF с ICSP конектор.
  2. PIC сега се захранва от захранване към целевата верига (V5).
  3. Свалете 5V ценер (D5).
  4. Малкият 100pF кондензатор (C4) се премества до PIC на целевата верига.
  5. Светодиодите се захранват от платката, когато е възможно.
  6. MCLR издърпващият резистор (R10) и диод (D10) са необходими на целевата верига.
  7. ВНИМАНИЕ. Таргетната дъска трябва да има „плаващо“захранване, в идеалния случай батерия.
  8. Не свързвайте целевото заземяване (VSS) към масата на компютър/компютър, като свързвате други компютърни портове едновременно с JDM.

След симулиране на JDM1, проблемът с дългото време на зареждане на C2 стана очевиден. След като прочетете Fruttenboel, изглежда, че C2 и Q1 са добавени като модификация на оригинала. Не мога да си представя какво целят C2 и Q1 освен да създават проблеми. Така че за JDM4 се връщаме към по -стария дизайн на Fruttenboel, който е прост и ясен за разбиране. D1 и D3/LED2 скоба MCLR между VSS и VDD+8V. Стойността на R1 е намалена до 3k3, достатъчно за осветяване на LED2 при 12V.

JDM4 също е проектиран да работи с по -слаби серийни портове. Когато TX се повиши (+9V), източникът на ток на TX = (9-8)/(1k +3k3) = 0.2ma, достатъчно, за да издърпа MCLR високо, но недостатъчно за осветяване на LED2. Когато TX спадне (около -7V), TX токът потъва = (9-7)/1k = 2mA. LED1 ток = (7-2 за светодиод)/(2k7) = 1,8 mA. MCLR изтеглящ ток = 7-5.5/3k3 = 0.5mA.

Тази верига също е тествана (симулация на JDM5), за да се види какво се случва със серийните портове минимум +/- 7V, където няма достатъчно напрежение за поддържане на VHH = 13V. Целта на C1 сега става очевидна, C1 създава кратък +ve тласък към MCLR, 33us скок на нарастващия ръб на TX, достатъчно дълъг, за да може PIC да влезе в режим на програмиране, може би? Но премахнете джъмпера X2 (деактивирайте LED1), тъй като няма достатъчно ток, за да издърпате MCLR ниско и да осветите LED1 заедно. Когато TX спадне, TX токът поглъща = (7V-5.5V)/(1k+3k3) = 0.3mA, достатъчно, за да издърпа MCLR ниско срещу издърпването R10.

Стъпка 7: Резултати от симулацията

Резултати от симулацията
Резултати от симулацията
Резултати от симулацията
Резултати от симулацията
Резултати от симулацията
Резултати от симулацията

За да видите графичните файлове, по-добре щракнете с десния бутон върху връзките по-долу, след което изберете „Отваряне на връзката в нов раздел“

Симулация 1: следа от MCLR, VSS и RTS за оригинален JDM1. Веднага се наблюдават наблюдения 1, 2 и 3.

Симулация 2: следа от MCLR и VSS и RTS за модифициран JDM2, който поправя предишни проблеми.

Симулация 3: следа от PGD, VSS и PGC за JDM2 изпращане на данни в програмен режим. Наблюдение 4 при 3.5mS.

Симулация 4: следа от PGD, VSS и CTS за JDM2 в режим за проверка (вмъкнат джъмпер X1). Добре

Симулация 5: следа от MCLR, VSS, PGD и PGC за JDM3. ICSP, използвайки захранване от верига, решава много проблеми.

Симулация 6: следа от MCLR, VSS, PGD и PGC за JDM4 с +/- 9V сериен порт. MCLR се повишава незабавно, напълно работещ.

Симулация 7: следа от MCLR, VSS и TX за JDM5 с +/- 7V сериен порт и джъмпер X2 премахнати. C1 създава +ve усилване (скок) на нарастващия ръб на MCLR, почти достатъчно, за да избута MCLR над TX до 13V.

Стъпка 8: Заключения

Spice е наистина добър в разкриването на „скрити тайни“на работата на веригата. Очевидно JDM веригата работи и е съвместима с много PIC чипове, но следните наблюдения разкриват възможни ограничения/проблеми със съвместимостта/грешки?

  1. Дълго време на нарастване на MCLR, докато C2 се зарежда към VPP при първия импулс на TX. Не отговаря на спецификацията 3.
  2. Серийният порт зарежда C2, когато TX се повиши, а RTS - ниско. Но RTS също има задачата да зарежда C3. Когато и двете се случват едновременно, това създава по -голямо натоварване на RTS, следователно C3 губи заряд (VSS нараства) при 2ms при симулация. Не отговаря на спецификацията 1.
  3. C3 губи заряд (VSS започва да се покачва), след като тактовите импулси спрат на 3.5ms.
  4. Каква е целта на C2, изобщо е необходима?

Решения

  1. Предполага се, че PICPgm използва софтуерен „кръг“. Той трябва да приложи дълъг TX импулс за предварително зареждане на C2, след което да влезе в режим на програмиране само след втория TX импулс? За симулация намалих стойността на C2 до 1uF, за да даде време на нарастване от 1ms. Не е идеално решение.
  2. Разделете C2 и C3, така че да се зареждат независимо. Една малка модификация на JDM2, C2 се позовава на GND вместо VSS.
  3. Решено от JDM3. ICSP е много по -надежден, тъй като PIC се захранва от целева верига.
  4. JDM4 решава проблем 1. Това е ясен дизайн, елиминиращ напълно C2.

Стъпка 9: И накрая

И накрая
И накрая

Доказателството за пудинга е в храненето. Този JDM работи, така че продължете да го използвате.

И моите препоръки са:

  • използвайте JDM2 за програмиране на гнезда и 12V серийни портове,
  • използвайте JDM4 за ICSP програмист и серийни портове над +/- 9V,
  • използвайте JDM4 с отстранен джъмпер X2 за серийни портове над +/- 7V.

Препратки:

Подправка Analog Devices LT

picpgm

Fruttenboel

Следвайте още PIC проекти в sly-corner

Препоръчано: