Cuprins:

Revizuirea programatorului JDM: 9 pași
Revizuirea programatorului JDM: 9 pași

Video: Revizuirea programatorului JDM: 9 pași

Video: Revizuirea programatorului JDM: 9 pași
Video: Cum poți învăța rapid de la alții (ca programator) 2024, Iulie
Anonim
Revizuirea programatorului JDM
Revizuirea programatorului JDM

JDM este un programator PIC popular deoarece folosește un port serial, un minim de componente și nu necesită sursă de alimentare. Dar există confuzie, cu multe variante de programare pe net, care funcționează cu care PIC? În acest „instructable” punem JDM la încercare și demonstrez cum să simulăm circuitul folosind Spice care va răspunde la toate întrebările!

Provizii

LTspice care poate fi descărcat de pe Analog Devices aici.

De asemenea, aveți nevoie de fișierele circuitului JDM aici.

Pasul 1: Cerințe de port serial

Cerințe de port serial
Cerințe de port serial

JDM necesită un port serial care să îndeplinească specificațiile EIA232, ideal cu niveluri de tensiune + 12 / -12.

Conform fișei tehnice a driverului de linie Texas Instruments MC1488 (Figura 3)

Impedanță de ieșire = 4V / 8mA = 500 ohm.

Limita curentului de scurtcircuit = 12mV, fără limită de timp - fără deteriorarea cipului.

Impedanță de intrare a receptorului de linie = 3k la 7k ohm recomandat.

Porturile seriale de pe computerele desktop mai vechi utilizează + 12v / -12V care îndeplinesc această cerință.

Porturile seriale de pe computerele laptop mai noi utilizează tensiuni mai mici. JDM poate funcționa sau nu - răspunsul este mai complex.

Pasul 2: Cerințe de programare PIC

Cerințe de programare PIC
Cerințe de programare PIC

Informațiile privind cerințele de programare PIC sunt obținute de la Microchip. Cele de mai sus sunt pentru un dispozitiv tipic.

Pasul 3: Specificații JDM

Specificații JDM
Specificații JDM

S-a pierdut site-ul web original JDM în negura timpului? Acest lucru ne lasă să ghicim ce intenționa inițial designerul pentru specificații.

  1. Furnizați VDD = 5V și până la IDD = 2mA maxim (pentru versiunea „în priză”)
  2. Furnizați VHH = 13V și până la IHH = 0,2mA maxim.
  3. MCLR Timp de creștere tVHHR = 1uS max.
  4. Versiunea ICSP trebuie să fie capabilă să tragă MCLR la un nivel scăzut împotriva 22k pull-up pe țintă.

Pasul 4: Descrierea circuitului

Descrierea circuitului
Descrierea circuitului

Figura JDM1 se bazează pe circuitul JDM „standard” preluat de pe site-ul web PICPgm. Acesta este programatorul „PIC in Socket” unde PIC preia alimentarea de la pinii RTS și TX. Diagrama originală a fost dificil de înțeles, așa că am redesențiat-o folosind convenția normală a curentului de curent de sus în jos. Și am adăugat indicatori LED „RESET”, „PROG” și „RTS”, care sunt necesari în timpul construcției și testării. Sperăm că acestea nu au niciun efect negativ asupra comportamentului.

Convenția normală a proiectării circuitelor este comună tuturor motivelor, dar caracteristica cheie a JDM este aceea că masa portului serial (GND) este conectată la VDD. Acest lucru creează confuzie deoarece semnalele de port serial sunt măsurate în raport cu GND, semnalele PIC în raport cu masa logică (VSS).

Când TX crește, Q1 se comportă ca două diode polarizate înainte. (Colectorul Q1 nu este polarizat invers ca în cazul operațiunii normale a tranzistorului). Colectorul Q1 încarcă C2, care este fixat la VDD + 8V de Zener (D3). Emițătorul Q1 livrează 13V la MCLR pentru modul Program / Verificare.

Când TX scade, condensatorul C3 este încărcat prin D1 și VSS este fixat la VDD-5V de către zener (D5). De asemenea, TX este prins la (VSS-0.6) de D1. Q1 este oprit, C1 își menține încărcarea pentru următorul impuls de programare. MCLR este blocat la 0V de D2, astfel încât PIC este acum Reset.

Când RTS este ridicat, ceasul este transmis către PGC. Clema D4 PGC la logica VDD ridicată. Când RTS este scăzut, condensatorul C3 este încărcat prin D6 și VSS este fixat la VDD-5V de către zener (D5). D6 cleme PGC la VSS sau 0 logică.

În timpul programării, datele trimise pe DTR sunt citite pe PGD, pe care PIC le configurează ca intrare. Când DTR este ridicat, Q2 acționează ca „adept emițător” și tensiunea PGD este de aproximativ (VDD-0.6) sau logică 1. Când DTR este scăzut, Q2 acționează ca un tranzistor defect (emițător și pinii colectorului inversați). Q2 trage PGD jos, care este blocat de D7 la VSS sau logic 0.

În timpul verificării, PIC configurează PGD ca ieșire pentru trimiterea datelor către portul serial. DTR trebuie setat ridicat, iar datele sunt citite pe CTS. Când ieșirea PGD este mare, Q2 este oprit, CTS = DTR = + 12V. Când ieșirea PGD este scăzută, Q2 este pornit. Colectorul Q2 atrage curent (12V + 5V) / (1k + 1k5) = 7mA de la DTR și trage CTS jos, la VSS.

Pasul 5: Pregătiți-vă pentru simulare

Pregătește-te pentru simulare
Pregătește-te pentru simulare

Descărcați LT spice, salvați și deschideți fișierele de circuit (*.asc) furnizate aici. Pentru a simula circuitul, trebuie să îi oferim câteva intrări, apoi să „urmărim” ieșirile. V1, V2 V3 simulează portul serial de 12V cu impedanță de ieșire R11, R12, R13.

  • V1 generează 2 impulsuri de program pe TX de la 0,5 ms la 4,5 ms
  • V2 generează impulsuri de date pe DTR de la 1,5 la 4,5 ms
  • V3 generează impulsuri de ceas pe RTS de la 0,5 la 3,5 ms

Componentele V4, X1, R15 și R16 fac parte din simulare.

  • V4 generează 2 impulsuri de la 2,5 la 4,5 ms pentru verificarea datelor.
  • Jumper X1 simulează OUTPUT pe PGD.
  • R15, R16 simulează „încărcarea” PIC pe VDD și MCLR.

Pasul 6: Modificări pentru ICSP

Modificări pentru ICSP
Modificări pentru ICSP
Modificări pentru ICSP
Modificări pentru ICSP

Figura JDM3 prezintă versiunea pentru programarea „în circuit”. Modificările din original sunt

  1. Înlocuiți soclul ZIF cu conectorul ICSP.
  2. PIC este acum alimentat de la circuitul țintă (V5).
  3. Scoateți zenerul de 5V (D5).
  4. Micul condensator 100pF (C4) este mutat lângă PIC pe circuitul țintă.
  5. LED-urile preiau alimentarea de pe placa de circuit, acolo unde este posibil.
  6. Rezistorul de tracțiune MCLR (R10) și dioda (D10) sunt necesare pe circuitul țintă.
  7. AVERTIZARE. Placa țintă trebuie să aibă o sursă „plutitoare”, ideal o baterie.
  8. Nu conectați masă țintă (VSS) la masă computer / computer conectând orice alte porturi de computer în același timp cu JDM.

După simularea JDM1, problema timpului de încărcare lung pe C2 a devenit evidentă. Apoi, după citirea lui Fruttenboel, se pare că C2 și Q1 au fost adăugate ca o modificare a originalului. Nu pot să cred ce intenționează să facă C2 și Q1, în afară de a crea probleme. Deci, pentru JDM4, revenim la designul mai vechi de pe Fruttenboel, care este simplu și direct de înțeles. Clema D1 și D3 / LED2 MCLR între VSS și VDD + 8V. Valoarea lui R1 este redusă la 3k3, suficientă doar pentru a aprinde LED2 la 12V.

JDM4 este, de asemenea, conceput pentru a funcționa cu porturi seriale mai slabe. Când TX crește (+ 9V), sursa de curent TX = (9-8) / (1k + 3k3) = 0,2ma, suficient pentru a trage MCLR înalt, deși este insuficient pentru a aprinde LED2. Când TX scade (aproximativ -7V), chiuveta de curent TX = (9-7) / 1k = 2mA. LED1 curent = (7-2 pentru led) / (2k7) = 1,8mA. MCLR curent de tragere = 7-5,5 / 3k3 = 0,5mA.

Acest circuit a fost, de asemenea, testat (simulare JDM5) pentru a vedea ce se întâmplă cu porturile seriale +/- 7V minim, unde există o tensiune insuficientă pentru a susține VHH = 13V. Scopul C1 devine acum evident, C1 creează un boost scurt + ve la MCLR, un vârf de 33us pe marginea ascendentă a TX, suficient de lung pentru ca PIC să intre în modul de programare, poate? Dar scoateți jumperul X2 (dezactivați LED1) deoarece nu există curent suficient pentru a trece MCLR jos și pentru a ilumina LED1 împreună. Când TX scade, chiuveta de curent TX = (7V-5.5V) / (1k + 3k3) = 0.3mA, suficientă doar pentru a trage MCLR jos împotriva pull-up R10.

Pasul 7: Rezultatele simulării

Rezultatele simularii
Rezultatele simularii
Rezultatele simularii
Rezultatele simularii
Rezultatele simularii
Rezultatele simularii

Pentru a vizualiza fișierele grafice, este mai bine să faceți clic dreapta pe linkurile de mai jos, apoi să selectați „Deschideți linkul în fila nouă”

Simularea 1: urmărirea MCLR, VSS și RTS pentru JDM1 original. Imediat observația 1, 2 și 3 sunt evidente.

Simulare 2: urmărirea MCLR și VSS și RTS pentru JDM2 modificat, care rezolvă problemele anterioare.

Simularea 3: urmărirea PGD, VSS și PGC pentru JDM2 care trimite date în modul program. Observația 4 la 3,5mS.

Simularea 4: urmărirea PGD, VSS și CTS pentru JDM2 în modul de verificare (jumperul X1 introdus). Bine

Simularea 5: urmărirea MCLR, VSS, PGD și PGC pentru JDM3. ICSP folosind puterea din circuit rezolvă multe probleme.

Simulare 6: urmărirea MCLR, VSS, PGD și PGC pentru JDM4 cu port serial +/- 9V. MCLR crește imediat, funcționând complet.

Simulare 7: urmele MCLR, VSS și TX pentru JDM5 cu portul serial +/- 7V și jumperul X2 eliminate. C1 creează un boost + ve (vârf) pe marginea ascendentă a MCLR, aproape suficient pentru a împinge MCLR deasupra TX la 13V.

Pasul 8: Concluzii

Condimentul este foarte bun la dezvăluirea „secretelor ascunse” ale funcționării circuitului. Evident, circuitul JDM funcționează și este compatibil cu multe cipuri PIC, dar următoarele observații relevă posibile limitări / probleme de compatibilitate / defecte?

  1. Timp lung de creștere a MCLR în timp ce C2 se încarcă la VPP la primul impuls al TX. Specificația eșuează 3.
  2. Portul serial încarcă C2 când TX crește și RTS scade. Dar RTS are și sarcina de a încărca C3. Când ambele apar în același timp, acest lucru creează o sarcină mai mare pe RTS, prin urmare C3 pierde sarcina (VSS crește) la 2 ms la simulare. Specificația nu reușește 1.
  3. C3 pierde încărcarea (VSS începe să crească) după ce impulsurile ceasului se opresc la 3,5 ms.
  4. Care este scopul C2, este absolut necesar?

Soluții

  1. Probabil că PICPgm folosește un software „de lucru”. Trebuie să aplice un impuls TX lung pentru a se preîncărca la C2, apoi să intre în modul de programare numai după al doilea impuls TX? Pentru simulare am redus valoarea lui C2 la 1uF pentru a da un timp de creștere de 1 ms. Nu este o soluție ideală.
  2. Împarte C2 și C3 astfel încât să se încarce independent. O mică modificare a JDM2, C2 este menționată la GND în loc de VSS.
  3. Rezolvat de JDM3. ICSP este mult mai fiabil, deoarece PIC este alimentat de circuitul țintă.
  4. JDM4 rezolvă problema 1. Acesta este un design simplu, eliminând total C2.

Pasul 9: Și în cele din urmă

Și, în sfârșit
Și, în sfârșit

Dovada budincii este în mâncare. Acest JDM funcționează, așa că continuați să îl utilizați.

Iar recomandările mele sunt:

  • utilizați JDM2 pentru programare socket și porturi seriale de 12V,
  • utilizați JDM4 pentru programator ICSP și porturi seriale peste +/- 9V,
  • utilizați JDM4 cu jumperul X2 eliminat pentru porturile seriale de peste +/- 7V.

Referințe:

Analog Devices LT condiment

picpgm

Fruttenboel

Urmăriți mai multe proiecte PIC la sly-corner

Recomandat: