Cel mai simplu programator JDM pentru PIC pe componente pasive. Un programator JDM simplu pentru microcontrolere PIC - Programatori de microcontrolere - Diagrame de dispozitive pe microcontrolere Un programator JDM simplu printre oameni

Am folosit programatorul JDM pentru controlere PIC16F676, PIC16F630Şi PIC16F629. Versiunea mea diferă de cea originală prin faptul că tensiunea de programare Vpp poate fi aplicat înaintea tensiunii de alimentare Vdd pentru reprogramarea controlerelor. Tranzistorul din partea de sus a circuitului servește acestui scop. Se deschide atunci când tensiunea la pinul 3 al prizei DB9F atinge aproximativ 8 V în raport cu pinul 5 al prizei sau 13 V în raport cu minusul controlerului Vss. Comutator Vdd_Vppîn stare închis permite tensiunea de alimentare Vdd apar pe bornele controlerului înainte de tensiunea de programare Vpp.

Circuit programator JDM

Pentru programare, va fi folosit un port COM, care va folosi următorii pini - 3, 4, 5, 7 și 8. Circuitul include capacitatea de a programa cipuri de memorie ale seriei 24сХХ. Pentru a face acest lucru, cele 8 contacte inferioare sunt utilizate în blocul DIP16, primul contact al microcircuitului este introdus în al cincilea contact al blocului. Jumper J1 vă permite să dezactivați protecția la scriere.

Tranzistorul de jos din circuit, ca și înainte, este folosit pentru a schimba tensiunile, deoarece este un plus pentru sursa de alimentare a controlerului. Vdd se conectează la pinul 5 al prizei - firul comun al portului și minusul de putere Vss se obține folosind diode conectate la pinii 3 și 7 ai prizei și o diodă zener.

Tranzistoare utilizate în programatorul JDM 2SC945Şi BC548, diode - 1N4148. Condensatorul u1 trebuie plasat cât mai aproape de pinii de alimentare a microcontrolerului. Rezistorul de 1k este opțional dacă rezistența de 10k și jumperul J1 sunt instalate pe blocul DIP16.

Acest programator funcționează cu succes cu programe și

Distribuie la:
Asamblarea rapidă a unui circuit care vă place pe un microcontroler nu este o problemă pentru mulți radioamatori. Dar mulți oameni care încep să lucreze cu microcontrolere se confruntă cu întrebarea cum să-l programeze. Una dintre cele mai simple opțiuni de programare este programatorul JDM.
Programmer ProgCode v 1.0 Acest program funcționează în WindowsXP. Permite programarea controlerelor PIC din familia de mijloc (PIC16Fxxx) prin portul COM al computerului. Indicatorul de conectare a programatorului (din colțul din dreapta sus al ferestrei) devine roșu dacă nu există niciun programator pe portul selectat în setări. Dacă programatorul este conectat, programul îl detectează și indicatorul din colțul din dreapta sus ia forma prezentată în Figura 1. Panoul de control este situat în partea stângă a ferestrei programului. Acest panou poate fi minimizat făcând clic pe butonul din bara de instrumente sau făcând clic pe marginea stângă a ferestrei (acest lucru este convenabil când fereastra programului este maximizată la ecran complet).

Figura (captură de ecran a programului ProgCode v1.0)


Dacă în program este încărcat un fișier HEX, atunci este recomandabil să selectați mai întâi în lista de controlere MK-ul pentru care este proiectat firmware-ul încărcat. Dacă acest lucru nu se face, atunci fișierul proiectat pentru un microcontroler cu o memorie mai mare decât cea selectată în listă va fi tăiat și părți din program se vor pierde - cu această opțiune de încărcare a fișierului, este afișat un avertisment.

Dacă acest lucru nu se întâmplă, atunci puteți selecta controlerul dorit după încărcarea fișierului în program.

Format de fișier SFR Programatorul ProgCode acceptă lucrul cu propriul format de fișier. Aceste fișiere au extensia .SFR și vă permit să stocați informații suplimentare despre programul destinat microcontrolerului. Acest fișier stochează informații despre tipul de microcontroler. Acest lucru vă permite să nu vă faceți griji cu privire la preselectarea tipului MK în setări atunci când încărcați un fișier SFR.

Setări de port și protocol la conectarea programatorului După instalarea programului, sunt setate în mod implicit toate setările care sunt necesare pentru ca programatorul să funcționeze cu circuitul JDM prezentat în această pagină.
Inversarea semnalului în circuitul de mai sus este necesară numai pentru ieșirea OutData, deoarece în acest circuit semnalul este inversat de tranzistorul de potrivire. Pe toți ceilalți pini, inversarea este dezactivată.



Întârzierea pulsului poate fi egală cu 0. Reglarea sa este oferită pentru cazurile de control „deosebit de dificile” care nu pot fi intermitente. Același lucru este valabil și pentru alocația pentru pauză de înregistrare - este zero în mod implicit. Dacă măriți aceste setări, timpul de programare a controlerului va crește semnificativ.

Caseta de validare „verificare la scriere” trebuie bifată dacă trebuie să verificați „din mers” tot ceea ce este scris în microcontroler pentru corectitudine și conformitate cu fișierul sursă. Dacă debifați această casetă, verificarea nu va fi efectuată deloc și nu vor apărea mesaje de eroare, chiar dacă astfel de erori există efectiv.
Selectați viteza portului - viteza poate fi oricare. Pentru un programator JDM, acest parametru nu are sens.

WindowsXP folosește tamponarea informațiilor transmise prin porturile COM. Acestea sunt așa-numitele tampon FIFO. Pentru a evita erorile la programarea prin JDM, acest mecanism trebuie dezactivat. Puteți face acest lucru în Windows Device Manager.

Accesați panoul de control, apoi:
Administrare - Management computer - Manager dispozitive

Apoi selectați portul la care este conectat programatorul JDM (de exemplu COM1) - uitați-vă la proprietăți - fila parametrii portului - suplimentar. Și debifați caseta „Utilizați tampon FIFO”

Figura - Configurarea unui port COM pentru a lucra cu un programator JDM



După aceasta, reporniți computerul.


Browser de proiecte locale Pe lângă programarea directă a controlerelor, programul implementează un browser convenabil de proiecte pe MK, situat atât în ​​folderele locale ale computerului, cât și pe Internet. Acest lucru a fost făcut pentru ușurință în utilizare. Adesea, proiectele de care aveți nevoie sunt în foldere diferite și trebuie să petreceți timp ajungând la directorul potrivit pentru a vizualiza proiectul. Aici puteți adăuga cu ușurință folderele necesare la lista de foldere și puteți vizualiza orice proiect cu două sau trei clicuri de mouse.

Când faceți dublu clic pe el în panoul browserului, orice fișier se va deschide în programul în sine - acest lucru este valabil pentru imagini, fișiere html, doc, rtf, djvu (cu pluginuri instalate), pdf, txt, asm. Fișierul poate fi deschis și făcând dublu clic într-un browser folosind un program extern instalat pe computer. Pentru a face acest lucru, extensia tipului de fișier dorit trebuie înregistrată în lista „Asocieri de fișiere”. Dacă nu specificați calea către programul de deschidere, Windows va deschide fișierul în program în mod implicit (acest lucru este convenabil pentru deschiderea arhivelor care nu sunt întotdeauna deschise clar). Dacă în listă este specificată calea către programul de deschidere, fișierul se va deschide în programul specificat. Este convenabil să vizualizați fișiere precum SPL, LAY, DSN în acest fel.

Figura (captură de ecran a browserului programului ProgCode v1.0)



Iată cum arată fereastra de setări de asociere a fișierelor:




Browser de proiect pe Internet Browser de proiect de pe Internet, la fel ca browserul de proiect local, vă permite să accesați rapid site-ul dorit de pe Internet cu câteva clicuri, să vizualizați proiectul și, dacă este necesar, să flashați imediat programul în MK .



Când revizuiți proiecte pe Internet, dacă pe pagina proiectului există un link către un fișier cu extensia SFR (acesta este formatul de fișier al programului ProgCode), atunci când faceți clic pe el, un astfel de fișier se va deschide într-o nouă versiune. fila program și este imediat gata pentru a fi intermitent în microcontroler.
Lista de link-uri poate fi editată folosind butonul „Editare”. Aceasta va deschide o fereastră pentru editarea listei de link-uri:





Descrierea procesului de programare a cipurilor Cele mai multe cipuri moderne conțin memorie flash, care este programată folosind protocolul I2C sau protocoale similare.
Memoria reinscriptibilă se găsește în PIC, AVR și alte controlere, cipuri de memorie de tip 24Cxx și altele similare, diverse carduri de memorie precum MMC și SD, carduri flash USB obișnuite care se conectează la computer printr-un conector USB Să luăm în considerare scrierea informațiilor în memoria flash a microcontrolerului PIC16F628A Există 2 linii DATE și CLOCK prin care se transmit informații. Linia CLOCK este folosită pentru a furniza impulsuri de ceas, iar linia DATA este folosită pentru a transmite informații.
Pentru a transfera 1 bit de informații către microcontroler, trebuie să setați 0 sau 1 (în funcție de valoarea bitului) pe linia de date (DATE) și să creați o cădere de tensiune (tranziție de la 1 la 0) pe linia de ceas ( CEAS).
Un bit pentru un controler nu este suficient. El așteaptă încă cinci pentru a percepe acest mesaj pe 6 biți ca o comandă. Controlerului îi plac foarte mult comenzile și trebuie să fie formate din 6 biți - așa este natura PIC16.
Iată lista și semnificația comenzilor pe care PIC le poate înțelege. Nu există atât de multe comenzi - vocabularul acestui controler este mic, dar să nu credeți că este complet stupid - există dispozitive cu mai puține comenzi „LoadConfiguration” 000000 - Încărcare configurație
"LoadDataForProgramMemory" 000010 - Se încarcă date în memoria programului
"LoadDataForDataMemory" - 000011 - Încărcarea datelor în memoria de date (EEPROM)
"IncrementAddress" 000110 - Mărește adresa PC MK
"ReadDataFromProgramMemory" 000100 - Citirea datelor din memoria programului
"ReadDataFromDataMemory" 000101 - Citirea datelor din memoria de date (EEPROM)
"BeginProgrammingOnlyCycle" 011000 - Începe ciclul de programare
„BulkEraseProgramMemory” 001001 - Ștergerea completă a memoriei programului
„BulkEraseDataMemory” 001011 - Ștergerea completă a memoriei de date (EEPROM)
"BeginEraseProgrammingCycle" 001000 - Începe un ciclu de programare Controlerul răspunde diferit la aceste comenzi. În moduri diferite, după emiterea comenzii, trebuie să continuați conversația cu el.
Pentru a începe un proces de programare complet, trebuie să aplicați, de asemenea, o tensiune de 12 volți la ieșirea MCLR a controlerului și apoi să aplicați o tensiune de alimentare. În această secvență de alimentare cu tensiune există un anumit sens. După ce este aplicată alimentarea, dacă PIC-ul este configurat să funcționeze de la oscilatorul RC intern, acesta poate începe să execute propriul program, ceea ce nu este un lucru acceptabil la programare, deoarece eșecul este inevitabil.
Alimentarea preliminară cu 12 volți a MCLR vă permite să evitați o astfel de dezvoltare.
Când scrieți informații în memoria flash a programelor MK după comanda „LoadDataForProgramMemory” 000010 - Încărcarea datelor în memoria programului, datele în sine trebuie trimise controlerului - 16 biți,
care arată astfel: „0xxxxxxxxxxxxxx0” Crucile din acest cuvânt sunt datele în sine, iar zerourile de la margini sunt trimise ca un cadru - acesta este standardul pentru PIC16. Există doar 14 biți semnificativi într-un cuvânt Această serie de controlere are un format de reprezentare a comenzii de 14 biți.
După ce transmisia cuvântului de date s-a terminat, PIC-ul așteaptă următoarea comandă.
Deoarece scopul nostru este să scriem un cuvânt în memoria programului MK, următoarea comandă ar trebui să fie comanda
"BeginEraseProgrammingCycle" 001000 - Începeți ciclul de programare După ce l-a primit, controlerul este deconectat de la lumea exterioară timp de 6 milisecunde, de care are nevoie pentru a finaliza procesul de înregistrare. Semnalele de la pinii microcontrolerului sunt generate de computer folosind programe speciale - programatori . Porturile COM, LPT sau USB pot fi utilizate pentru transmiterea semnalului. Programe precum PonyProg, IsProg, WinPic800 funcționează cu programatorul JDM.
Circuitul de programare JDM Un circuit de programare foarte simplu este prezentat în figură. Deși acest circuit nu implementează controlul secvenței de alimentare cu tensiune, este foarte simplu și este posibil să se monteze un astfel de circuit foarte rapid, folosind un minim de piese.
Figura (circuit programator JDM)


Una dintre întrebările atunci când conectați un programator la un computer este cum să asigurați izolarea selectivă. Pentru a evita deteriorarea portului COM în cazul unei defecțiuni în circuit. Unele modele folosesc MAX232 IC, care asigură izolarea selectivă și potrivirea nivelului de semnal. În această schemă, problema este rezolvată mai simplu - prin utilizarea energiei bateriei. Nivelul semnalului care vine de la computer este limitat de diodele zener VD1, VD2 și VD3. În ciuda simplității circuitului de programare JDM, acesta poate fi utilizat pentru a programa majoritatea tipurilor de microcontrolere PIC. Jumperul dintre pinii COM6 (DSR) și COM7 (RTS) este proiectat astfel încât programul să poată determina dacă programatorul este conectat la computer. .

Conexiunea ieșirilor programatorului la un anumit MK depinde de tipul MK. Adesea, pe placa de programare sunt montate mai multe panouri, care sunt proiectate pentru un anumit tip de controler.

Tabelul arată scopul picioarelor unor tipuri de MK în timpul programării.




Cifrele sunt prezentate cu alocarea pinilor celor mai comune microcontrolere în timpul programării (pinout) ale microcontrolerelor PIC16F876A, PIC16F873A într-un pachet DIP28.

Pinout-ul microcontrolerelor PIC16F874A, PIC16F877A în carcasă DIP40.
Pinout (pinout) al microcontrolerelor PIC16F627A, PIC16F628A, PIC16F648A în carcasă DIP18.
MCU-urile PIC16F84 și PIC16F84A au același aranjament de pini destinate programării.

Alocarea pinilor pentru microcontrolere din seria PIC16Fxxx, în funcție de tipul de carcasă, este în majoritatea cazurilor standard, dar dacă există vreo îndoială cu privire la acest lucru, atunci este cel mai de încredere să verificați fișa de date pentru o anumită instanță a MK. O parte din documentație este disponibilă pe site-ul web rusesc http://microchip.ru. O colecție completă de fișe de date și alte documentații se află pe site-ul web al producătorului de microcontroler PIC: http://microchip.com
Indexul proiectului Programul vă permite să mergeți direct la pagina de index, să vizualizați descrierea proiectului dorit în câteva clicuri și să introduceți imediat programul în controler.



Dacă trebuie să flashizați controlerul cu firmware-ul selectat, faceți clic pe fișierul SFR, de exemplu Timer_a.sfr
Programul descarcă fișierul de pe server într-o filă nouă.



După aceasta, tot ce rămâne este să introduceți MK-ul în soclul programatorului, dacă acest lucru nu a fost deja făcut, și să faceți clic pe butonul „Scrieți tot”.
Programul este înregistrat în MK. După aceasta, controlerul este introdus în placa dispozitivului și dispozitivul este gata de funcționare.

Puteți descărca programul pe pagina de descărcare a fișierului: http://cxema.my1.ru/load/proshivki/material_k_state_prostoj_jdm_programmator_dlja_pic_mikrokontrollerov/9-1-0-1613 Secțiunea:

Dezvoltarea electronicii se desfășoară într-un ritm rapid, iar elementul principal al unui dispozitiv este din ce în ce mai mult un microcontroler. Îndeplinește cea mai mare parte a muncii și eliberează proiectantul de nevoia de a crea modele de circuite sofisticate, reducând astfel dimensiunea plăcii de circuit imprimat la minimum. După cum știe toată lumea, un microcontroler este controlat de un program înregistrat în memoria sa internă. Și dacă un programator de electronice experimentat nu are probleme cu utilizarea microcontrolerelor în dispozitivele sale, atunci pentru un radioamator începător, încercarea de a scrie un program într-un controler (în special un PIC) poate duce la o mare dezamăgire și, uneori, chiar și la un mic spectacol pirotehnic în forma unui chip de fumat.

Destul de ciudat, pentru toată măreția Internetului, există foarte puține informații despre firmware Controlere PIC, iar materialul care poate fi găsit este de o calitate foarte dubioasă. Desigur, puteți cumpăra un programator de fabrică la un preț neadecvat și puteți coase după pofta inimii, dar ce să faceți dacă o persoană nu este implicată în producția de masă. În aceste scopuri, puteți asambla un produs de casă simplu și ieftin numit Programator JDM conform diagramei de mai jos (Figura nr. 1):



Figura nr. 1 - circuit programator


Voi oferi imediat o listă de elemente pentru cei care sunt prea leneși să se uite îndeaproape la diagramă:

  • R1 - 10 kOhm
  • R2 - 10 kOhm (decupat). Prin ajustarea rezistenței acestui rezistor, trebuie să obțineți aproximativ 13V la pinul nr. 4 (VPP) în timpul programării. În cazul meu, rezistența este de 1,2 kOhm
  • R3 - 200 Ohm
  • R4, R5 - 1,5 kOhm
  • VD1, VD2, VD3, VD4, VD6 - 1N4148
  • VD5 - 1N4733A (tensiune de stabilizare 5,1 V)
  • VD7 - 1N4743A (tensiune de stabilizare 13V)
  • C1 - 100 nF (0,1 µF)
  • C2 - 470 uF x 16 V (electrolitic)
  • SUB-D9F - conector port COM (MAMA sau SOCKET)
  • Priză DIP8 - depinde de controlerul pe care îl utilizați

Diagrama folosește un exemplu de conectare a unor astfel de controlere comune, cum ar fi PIC12F675Şi PIC12F629, dar asta nu înseamnă deloc că firmware-ul altor serii PIC va fi imposibil. Pentru a scrie un program pe un controler de alt tip, trebuie doar să conectați firele programatorului în conformitate cu Figura 2, care este prezentată mai jos.



Figura nr. 2 - opțiuni pentru carcasele controlerului PIC cu pinii necesari


După cum ați putea ghici, circuitul programatorului meu folosește o carcasă DIP8. Dacă doriți cu adevărat, puteți face un adaptor universal pentru fiecare tip de microcircuit, obținând astfel un programator universal. Dar din moment ce Controlere PIC Lucrez rar, asta îmi este suficient.

Deși circuitul în sine este destul de simplu și nu va cauza dificultăți la asamblare, necesită și respect. Prin urmare, ar fi bine să faceți o placă de circuit imprimat pentru aceasta. După câteva manipulări cu programul SprintLayout, textolit, burghiu și fier, s-a născut un astfel de gol (fotografie nr. 3).



Foto nr. 3 - placa de circuite programatoare


Descărcați sursa PCB pentru program SprintLayout poti urma acest link:
(descărcări: 680)
Dacă doriți, îl puteți schimba pentru a se potrivi tipului dvs. de controler PIC. Pentru cei care au decis să lase placa neschimbată, postez o vedere din partea părților pentru a facilita instalarea (Figura nr. 4).



Figura nr. 4 - placa din partea de montare


Mai multă vrăjitorie cu un fier de lipit și avem un dispozitiv gata făcut, capabil să clipească Controler PIC prin Port COM computerul dvs. Rezultatul eforturilor mele, încă cald și nespălat de flux, este prezentat în fotografia nr. 5.



Foto nr. 5 - programator asamblat


De acum înainte, prima etapă pe drumul către firmware Controler PIC, a ajuns la final. A doua etapă va include conectarea programatorului la computer și lucrul cu programul IC-Prog.
Din păcate, nu toate computerele și laptopurile moderne sunt capabile să lucreze cu acest programator din cauza lipsei banale de porturi COM, iar cele care sunt instalate pe laptopuri nu asigură necesarul pentru programare 12V. Așa că am decis să apelez la primul meu PC, care adunase praf cu mult timp în urmă și își aștepta cea mai frumoasă oră (și în sfârșit a făcut-o).
Deci, porniți computerul și, în primul rând, instalați programul IC-Prog. Îl puteți descărca de pe site-ul autorului sau de pe acest link:
(descărcări: 778)
Conectam programatorul la Port COMși lansați aplicația nou instalată. Pentru o funcționare corectă, este necesar să efectuați o serie de manipulări. Inițial, trebuie să selectați tipul de controler pe care urmează să-l coaseți. Am asta PIC12F675. În captura de ecran nr. 6, câmpul pentru selectarea unui controler este evidențiat cu roșu.



Captură de ecran nr. 6 - selectarea tipului de microcontroler




Captură de ecran nr. 7 - setarea metodei de înregistrare a controlerului


În aceeași fereastră, accesați „fila” Programare" și selectați elementul " Verificați în timpul programării„. Verificarea după programare poate provoca o eroare, deoarece în unele cazuri firmware-ul însuși setează siguranțe de blocare a citirii SR. Pentru a nu vă păcăli, este mai bine să dezactivați această verificare. Pe scurt, urmărim captura de ecran nr. 8.



Captură de ecran nr. 8 - configurarea verificării


Să continuăm să lucrăm cu această fereastră și să mergem la fila „ General". Aici trebuie să setați prioritatea programului și asigurați-vă că îl utilizați NT/2000/XP driver (captura de ecran nr. 9). În unele cazuri, programul vă poate solicita să instalați acest driver și va fi necesară o repornire. IC-Prog.



Captură de ecran nr. 9 - setări generale


Deci, am terminat cu această fereastră. Acum să trecem la setările programatorului însuși. Selectați din meniu " Setări"->"Setări programator„sau doar apăsați tasta F3. Apare următoarea fereastră, afișată în captura de ecran nr. 10.



Captură de ecran nr. 10 - fereastra setărilor programatorului


În primul rând, selectați tipul de programator - Programator JDM. Apoi, setați butonul radio pentru utilizarea driverului Windows. Următorul pas implică alegerea Port COM, la care este conectat programatorul dvs. Dacă există doar una, nu există deloc întrebări, dar dacă există mai multe, căutați în managerul de dispozitive care este utilizat în prezent. Glisorul de latență I/O este proiectat pentru a regla viteza de scriere și citire. Acest lucru poate fi necesar pe computerele rapide și dacă apar probleme cu firmware-ul - acest parametru trebuie mărit. În cazul meu, a rămas egal în mod implicit 10 și totul a funcționat bine.

Asta e pentru configurarea programului. IC-Prog s-a terminat și puteți trece la procesul firmware-ului în sine, dar mai întâi citim datele de la microcontroler și vedem ce este scris în el. Pentru a face acest lucru, în bara de instrumente, faceți clic pe pictograma microcircuit cu o săgeată verde, așa cum se arată în captura de ecran nr. 11.



Captura de ecran nr. 11 - procesul de citire a informațiilor de la microcontroler


Dacă microcontrolerul este nou și nu a fost flash înainte, atunci toate celulele sale de memorie vor fi umplute cu valori 3FFF, cu excepția ultimului. Acesta va conține valoarea constantei de calibrare. Aceasta este o valoare foarte importantă și unică pentru fiecare controler. Precizia sincronizarii depinde de aceasta, care este setată de producător prin selectarea și setarea aceleiași constante. Captura de ecran nr. 12 arată celula de memorie în care constanta va fi stocată la citirea controlerului.



Captura de ecran nr. 12 - valoarea constantei de calibrare


Repet că valoarea este unică pentru fiecare cip și nu trebuie să se potrivească cu ceea ce este prezentat în figură. Mulți oameni, din cauza lipsei de experiență, suprascriu această constantă și ulterior Controler PICîncepe să funcționeze incorect dacă proiectul folosește tactarea de la un oscilator intern. Vă sfătuiesc să notați această constantă și să lipiți o etichetă cu valoarea ei direct pe controler. Astfel vei evita multe necazuri pe viitor. Deci, valoarea este scrisă - să mergem mai departe. Deschidem fișierul firmware, care de obicei are extensia .hex. Acum în loc de inscripții 3FFF, bufferul de programare conține codul programului nostru (captura de ecran nr. 13).



Captură de ecran nr. 13 - firmware încărcat în memoria tampon de programare


Am scris mai sus că mulți oameni suprascriu din neatenție constanta de calibrare. Când se întâmplă asta? Acest lucru se întâmplă atunci când fișierul firmware este deschis. Valoarea constantă se schimbă automat în 3FFFși odată ce începeți procesul de programare, nu mai există întoarcere. În captura de ecran nr. 14, celula de memorie în care constanta a fost evidențiată anterior este evidențiată. 3450 (inainte de deschidere fișier hex).

Programatorul propus se bazează pe o publicație din revista „Radio” nr. 2, 2004, „Programarea modernă PIC16, PIC12 pe PonyProg”. Acesta este primul meu programator pe care l-am folosit pentru a flash cipuri PIC acasă. Programatorul este o versiune simplificată a programatorului JDM, circuitul original are un convertor RS-232 la TTL sub forma unui microcircuit MAX232, este mai universal, dar nu îl puteți asambla „în genunchi”. Acest circuit nu are deloc o singură componentă activă, nu conține piese rare și este foarte simplu, poate fi asamblat fără utilizarea unei plăci de circuit imprimat.

Orez. 1: Schema schematică a programatorului.

Descrierea funcționării circuitului
Circuitul programatorului este prezentat în Fig. 1. Rezistoarele din circuitele CLK (tac), DATE (informații), Upp (tensiune de programare) servesc la limitarea fluxului de curent. Controlerele PIC sunt protejate de defecțiuni prin diode zener încorporate, astfel încât există o anumită compatibilitate între logica TTL și RS-232. Circuitul prezentat conține diode VD1, VD2, care „preiau” tensiunea pozitivă de la portul COM în raport cu pinul 5 și o transferă pentru a alimenta controlerul, datorită cărora, în unele cazuri, este posibil să scăpați de o sursă de alimentare suplimentară.

Configurare
În practică, nu se întâmplă întotdeauna ca acest programator să funcționeze fără ajustare, la prima încercare, pentru că... Funcționarea acestui circuit este foarte dependentă de parametrii portului COM. Totuși, pentru mine, pe două plăci de bază Gigabyte 8IPE1000 și WinFast sub XP, totul a funcționat imediat. Dacă ești prea leneș să faci față unui circuit de programare stricat și mai complex, atunci ar trebui să încerci să-l asamblați pe acesta. Iată câteva lucruri care pot afecta:

Cu cât covorașul este mai nou. bord, dezvoltatorii acordă mai puțină atenție acestor porturi, deoarece aceste porturi au devenit de mult învechite. Puteți scăpa de acest lucru achiziționând un adaptor USB-COM, deși din nou dispozitivul achiziționat poate să nu fie potrivit. Parametrii necesari sunt următorii: tensiunea variabilă trebuie să se schimbe cel puțin de la -10V la +10V (log. 0 și 1) în raport cu al 5-lea pin al conectorului. Curentul furnizat trebuie să fie cel puțin astfel încât atunci când un rezistor de 2,7 kOhm este conectat între al 5-lea contact și contactul testat, tensiunea să nu scadă sub 10V (eu nu am văzut astfel de plăci). De asemenea, portul trebuie să determine corect tensiunile care provin de la controler la un nivel de tensiune apropiat de 0V, dar nu mai mult de 2V, se determină zero și, în consecință, la un nivel de tensiune peste 2V, se determină unul.

Problemele pot apărea și din cauza software-ului.
Acest lucru este valabil mai ales pentru sistemul de operare LINUX, deoarece... Datorită prezenței unor emulatori precum wine, VirtualBox, este posibil ca porturile să nu funcționeze corect și sunt necesare o mulțime de capabilități de la acestea. Voi aborda aceste probleme mai detaliat într-un alt articol.

Cunoscând aceste caracteristici, să începem configurarea.
Pentru aceasta, este foarte de dorit să aveți programul ICProg 1.05D.
În meniul programului, trebuie mai întâi să selectați setarea corespunzătoare din setări. portul (COM1. COM2), selectați programator JDM. Apoi deschideți fereastra „Verificare hardware”, în meniul „Setări”. În acest meniu, trebuie să verificați casetele una câte una și să utilizați un voltmetru pentru a măsura tensiunea la contactele conectorului conectat. Dacă parametrii de tensiune nu corespund normei, atunci, din păcate, aceasta poate fi cauza inoperabilității, atunci va trebui să asamblați un circuit cu un convertor RS-232 TTL. După ce ați verificat toate casetele, trebuie să vă asigurați că la dioda zener este generată o tensiune de alimentare de aproximativ 5V. Dacă tensiunile sunt normale și nu există erori de instalare, atunci totul ar trebui să funcționeze. Punem controlerul în priză, deschidem firmware-ul, îl programăm. Nu este nevoie să activați casetele de selectare precum „Inversați datele afară” (toate sunt debifate). De asemenea, nu uitați că unele loturi de controlere pot avea parametri nestandard și nu este posibil să le flashați în astfel de cazuri, cu acest programator, puteți încerca doar să reduceți tensiunea de alimentare de la 5V la 3-4V; conectându-se în consecință. diodă zener, uitați-vă la controler pentru activarea eronată a modului LVP (programare de joasă tensiune), cum să o preveniți, puteți citi pe Internet pentru un anumit tip de controler. Probabil că este posibilă creșterea tensiunii de programare a controlerului problematic doar prin complicarea circuitului prin introducerea unei etape de amplificare cu un emițător comun, alimentat de la o sursă suplimentară de alimentare.

Acum să vorbim mai multe despre problema cu sursa de alimentare a dispozitivului. Programatorul a fost testat cu programe ICProg și consola picprog sub Linux, ar trebui să funcționeze cu oricare care acceptă JDM dacă conectați o sursă de alimentare suplimentară (este conectat printr-un rezistor de 1 kOhm la dioda zener, diode cu rezistențe în acest caz pot fi complet exclus). Faptul este că algoritmii de control al programatorului pentru software individual sunt diferiți, programul ICProg este cel mai nepretențios. S-a observat că în sistemul de operare Windows, acest program a ridicat tensiunea de alimentare necesară pe pinul 2 nefolosit, același program sub emulator din Linux la un alt covor. Placa nu a mai putut face acest lucru, dar a fost găsită o cale de ieșire prin preluarea energiei de la tensiunea de programare. În general, cred că puteți utiliza acest programator cu ICProg fără putere suplimentară. Cu alte programe, acest lucru este puțin probabil să fie garantat, de exemplu, picprog-ul „nativ” din depozitele Ubuntu fără alimentare pur și simplu nu detectează programatorul, afișând mesajul „Hardware-ul JDM nu a fost găsit”. Probabil ori primeste niste date fara a aplica tensiunea de programare, ori o face prea repede, astfel incat condensatorul de filtru nu are inca timp sa se incarce.

Ca programator de bază, vă sugerăm să asamblați un programator compatibil JDM, pe care l-am numit programator NTV, folosind designul original. Mai jos este o diagramă a programatorului NTV (folosind o priză DB9; a nu fi confundat cu o mufă).

Programatorul a asamblat conform acestei scheme în mod repetat și cu precizie controlerele (și un număr de altele) și poate fi recomandat pentru repetare de radioamatorii începători.

Acest programator NU FUNCTIONEAZA atunci cand este conectat la laptopuri, deoarece... Nivelurile de semnal ale interfeței RS-232 (port COM) în sistemele mobile sunt subestimate. De asemenea, este posibil să nu funcționeze pe computerele moderne unde hardware-ul salvează curentul pe port. Așa că nu mă învinovăți, colectează-l și testează-l pe toate computerele care vin la îndemână.

Din punct de vedere structural, placa de programare este introdusă între contactele conectorului DB-9, care sunt lipite de plăcuțele de contact ale plăcii de circuit imprimat. Mai jos este un desen al plăcii și o fotografie a programatorului asamblat.



Pentru a completa informațiile, trebuie spus că există un alt programator similar pe care l-am asamblat pentru microcontrolere într-un pachet cu 8 pini ( și ). Programatorul funcționează excelent și cu aceste microcontrolere. Mai jos este un desen al tablei și fotografii.