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.
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: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ă:
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.