Sari la conținut
ELFORUM - Forumul electronistilor

Programator ICSP pentru PIC


bobtech

Postări Recomandate

OK am facut programatorul acela si merge , in continuare m-am gandit sa realizez si o prima aplicatie , ceva simplu .Pe net am gasit urmatoarea schema de LED flasherIC -ul folosit este 16f88, eu o sa-l inlocuiesc cu 16f628 respectand configuratia pinilorMontajul ma gandesc sa-l alimentez cu lm7805Pagina de unde am decarcat schema recomanda si un cod sursa din care insa n-am inteles nimicCautand pe youtube am gasit un cod pe care userul care-l postase l-a folosit pentru acelasi lucru (led flasher) numai ca el avea pic16f84 iar in circuit se mai dispozitivul PICKIT2.Codul este urmatorul:void main(){porta = 0;trisa = 0; while(1) { porta = 0x01; delay_ms(100); porta = 0x00; delay_ms(100); }}Pe acesta l-am inteles cat de cat , e mult mai simplu ,seamana cu C-ul .Porturile A sunt iesirile deci va trebui sa mut ledul si rezistenta de 330 (legate in schema la port B) la un port A.Daca e ceva gresit in cele scrise mai sus va rog sa ma corectati.As mai avea urmatoarele intrebari:Cel de la care am luat codul de mai sus folosea si un qz de 10 MHz , parca.PIC16f628 contine un qz de 4MHz?Daca da inseamna ca atunci cand scriu codul trebuie sa setez CLOCK la 4MHz RC ?Ce inseamna TRISA = 0 ?Programul de mai sus va face acelasi lucru pentru toti pinii A? Adica va conta pinul de care conectez ledul.Si daca spre exemplu scriu in loc de PORTA -- PORTA1 va functiona numai pentru portul A1?Multumesc pentru rabdare si pentru timpul acordat.

Link spre comentariu
  • Răspunsuri 130
  • Creat
  • Ultimul Răspuns

Top autori în acest subiect

  • bobtech

    16

  • radu25

    11

  • criss

    9

  • MifTy

    7

Top autori în acest subiect

Imagini postate

Programul

Codul este urmatorul:

 

void main()

{

porta = 0;

trisa = 0;

while(1)

{

porta = 0x01;

delay_ms(100);

porta = 0x00;

delay_ms(100);

}

}

Pe acesta l-am inteles cat de cat , e mult mai simplu ,seamana cu C-ul .

Codul este scris in C. Exista mai multe compilatoare C pentru picuri - picc de la uChip, MikroC de la uElektronika...

 

Porturile A sunt iesirile deci va trebui sa mut ledul si rezistenta de 330 (legate in schema la port B) la un port A.

Daca e ceva gresit in cele scrise mai sus va rog sa ma corectati.

Sau modifici codul sa foloseasca PORTB. Sunt sanse mari sa fie chiar mai bine, pentru ca la 16F628 PORTA are functii digitale multiplexate cu functii analogice si trebuie configurat analog, ceea ce in codul tau nu se intampla.

 

As mai avea urmatoarele intrebari:

Cel de la care am luat codul de mai sus folosea si un qz de 10 MHz , parca.

PIC16f628 contine un qz de 4MHz?

Daca da inseamna ca atunci cand scriu codul trebuie sa setez CLOCK la 4MHz RC ?

Nu chiar un quarz, ci un oscilator.

Daca schimbi frecventa ceasului, trebuie sa te gandesti daca functiile gen delay_ms mai functioneaza corect. S-ar putea sa trebuiasca sa-i spui si compilatorului pe undeva cu ce frecventa vrei sa lucrezi.

Oricum, un delay de 100 ms intre aprins/stins e cam putin, s-ar putea sa nu vezi mare lucru la led.

Ce inseamna TRISA = 0 ?

http://ww1.microchip.com/downloads/en/D ... 30487c.pdf

 

Programul de mai sus va face acelasi lucru pentru toti pinii A? Adica va conta pinul de care conectez ledul.

Si daca spre exemplu scriu in loc de PORTA -- PORTA1 va functiona numai pentru portul A1?

void main(){...   porta = 0x01;...}
Linia de mai sus spune ca PORTA (ca un tot, toti pinii lui) ia valoarea 0x01 (1 scris in hexazecimal), adica 000001 (din cate stiu eu, are numai 6 pini).

Asta inseamna ca primul pin (RA0) ia valoarea 1, ceilalti ramanand 0. Da's convins ca o sa te prinzi singur daca o sa citesti data-sheetul picului. Ceea ce-ti recomand cu caldura.

Din pacate deocamdata dovedesti doar ca ai vrea, da' nu si ca te stradui prea tare.

 

LE Am citit gresit, folosesti 16F88, asa ca mentiunea cu 6 pini pentru PORTA nu e valabila. Nu stiu exacxt cum e cu functiile portului dupa reset (analog sau digital), da' te las sa descoperi singur.

 

LLE Dupa cum o sa vezio in data sheet, microchip recomanda conectarea MCLR la VDD printr-o rezistenta, nu diresct (parca).

Link spre comentariu
  • 8 luni mai târziu...

salutare, am realizat programatorul si am conectat pini la un PIC16F628A si nu imi citeste si scrie nimic.Tensiunea de 13.5V si 5V le am.Am incercat si dupa schema cu adaptorul cu interfata de MAX dar nimic.Integratul este bun.Am un RCD Si cu el scriu si sterg.O idee un sfat?

pic-pg1a.pdf

post-16403-139829399837_thumb.gif

Link spre comentariu
  • 2 săptămâni mai târziu...
Vizitator n3chi2

Salut. Programatorul Bobtech poate fi integrat pe o placuta de dezvoltare? Eu am de facut o placuta cu PIC 16F887 si am nevoie de modulul ICSP , adica trebuie sa il programez in circuit fara a scoate pic-ul din soclu. Ms frumos

Link spre comentariu

N-ai nevoie de tot programatorul, e suficient sa scoti intr-un conector cei 5 pini necesari programarii.Din cate stiu eu, ordinea e VPP, VDD, GND, DATA, CLK.

Link spre comentariu

nnnnnnn... nnnnn, mă rog, câte n-uri or fi, nu mai bine te duci pe http://www.gooligum.com.au/tutorials.html și te pui pe citit???

nu de alta, dar ai multe întrebări, și răspunsul lor s-ar rezolva cel mai bine citind suspomenitele tutoriale...

dacă nu știi engleza... hmmm... s-ar putea să se găsească cineva să le traducă...

 

@n3chi2: da, se poate. dar după aia ce faci cu plăcuța?

nu poți ”s-o vezi” în mplab, nu poți face debug, nu prea poți face nimic...

eu zic că programatoarele ”vechi” pe com sau lpt sunt bune doar dacă mai ai, încă asemenea porturi la pc-ul folosit, și le folosești doar ca să-ți clonezi un pickit2, care e pe usb, se integrează cu mplab, etc...

și dacă mai spun că și pickit2 e deja ”obsolete”...

 

@vasile eugen: porțile lui 7400 ăla par conectate ca inversoare... și văd că majoritatea softurilor de programare pic au pe undeva o optiune de ”inversare semnale”... ia încearcă o scriere/citire cu opțiunea cu pricina bifată...

pe lângă asta, verifică dacă mufa e corect legată... și chiar dacă faci mai multe programatoare icsp, încearcă să folosești de fiecare dată aceeași dispunere a pinilor...

Link spre comentariu

Dupa juma' de an cred ca s-a plictisit bietu' nnnnnn de asteptat raspunsuri. :ras:

Pe de alta parte, mistoul legat de numele utilizatorului e gratuit si inutil. Daca nu esti in stare sa numeri, poti folosi copy-paste. :limb:

Link spre comentariu

mea culpa, nu m-am uitat și la an, doar la lună...iar miștoul... îl cam cere... nu l-am pus eu să-și aleagă un nick așa de ”ușor de reținut” și de sobru...oricum, tutorialele australianului mi se par foarte ușor de înțeles și de aplicat, iar LPC-ul e ușor de clonat, ca și pickit2-ul... deși sunt ambele cam pe la sfârșitul vieții...

Link spre comentariu
  • 4 luni mai târziu...
  • 1 lună mai târziu...

Si mie imi da eroare, de fapt programeaza, dar prost. Mereu da eroare la verificare. Cred ca programatorul asta nu merge decat cu un port serial al unui pc bun, ma refer la portul serial, nu la pc. De exemplu e calculatorul meu mai nou nu a mers deloc, iar pe un pentium3 a mers, dar cu eroarea la verificare. Ceea ce m-a determinat sa imi fac pentru pic clona pickit2.

Link spre comentariu

programatoarele care-și iau tensiunile din mufele COM și LPT funcționează foarte frumos cu pc-urile ”vechi”, care au ca nivele de tensiune pentru semnale +/- 12 Volți și un curent rezonabil, gen 100 mA!pc-urile mai noi au scăzut nivelele cu pricina, în prezent, tensiunile sunt de maximum +/- 5 Volți la 20-30 mA... asta cu mult noroc.sugerez celor care încearcă respectivele programatoare să folosească alimentatoare externe, cu stabilizatoare pe bază de 317, pentru că ăsta permite ușor un reglaj ”corect” al tensiunii, și să folosească pinii ”de alimentare” pentru comanda unor comutatoare on/off, care să ofere când trebuie semnalul MCLR.amănunte puteți găsi în AN589 (căutați pe net și AN589 modificat) și în AN910.RCD-ul include un fel de soi de alimentator în comutație (fără nici un fel de bobină, spre deosebire de pickit2, unde faimoasa bobină de 470-680uH exact asta e, și de-aia nu merge pickitul fără ea), unde electroliticul e critic, ca esr și capacitate, și care formează semnalul MCLR. dacă tensiunea dată de mufa COM e prea mică... apar sf-uri.avr-iștii sunt fericiți: ei nu au dureri de cap cu o tensiune de programare de 13,5 volți exact, au nevoie doar de o tensiune de 5 volți, și gata... prin urmare, pot folosi un 78L05 alimentat din orice stabilizator mai mare de 7 volți... sau dintr-o baterie de 9 volți proaspătă...

Link spre comentariu

avr-iștii sunt fericiți: ei nu au dureri de cap cu o tensiune de programare de 13,5 volți exact, au nevoie doar de o tensiune de 5 volți, și gata...

Exceptand cazul in care au de deblocat vreun controller. :rade: Ca asa si PIC-urile au modul LVP in care teoretic n-ai nevoie decat de 5V. Si din cate stiu eu e modul implicit.
Link spre comentariu

de acord, dar ”standard”, microchip a decis că MCLR trebuie folosit obligatoriu, și că trebuie să aibă o valoare între 11,5 - 13,8 volți, în funcție de pic. mai trebuie și să fie exact aia... noroc că zice în datasheet valoarea exactă...de fapt, MCLR trece picul în mod ”programare”, tensiunea de 5 volți alimentează circuitul, iar clock și data își fac treaba...programatoare LVP pentru picuri... chiar n-am văzut până acum: toate schemele de pe net au MCLR-ul omniprezent :)poate pe situl microchip să fie un AN unde să se discute modul ăsta de programare, dar presupun că nu e prea folosit...plus că așa faci ”din prima” programator home-made cu mufa de programare compatibilă pin la pin cu pickit2, deci nu te mai apuci să mai faci alte plăcuțe după ce-ți cumperi sau îți faci un pickit2...eu când m-am apucat de mcu, am început cu avr-uri, și-am folosit schema de programator de pe diy electronics... (situl ăla unde mai era și faimoasa schemă de sursă cu 4 tl-uri și voltampermetru cu mega8 și lcd) care ieșea pe cablu bandă cu 6 pini.abia după ce l-am făcut, și am făcut și adaptoarele de programat mega8 și tiny2313, am aflat că aia e absolut nestandard, mufa standard la atmel fiind cea ”boxed” de 2x3, respectiv 2x5 pini...așa că acum cele 2 programatoare ale mele de avr au 2 mufe: 6 în linie, și standardul 2x5 ... și mai trebuie și să casc ochii ce programator pun, să nu prăjesc avr-ul dându-i 13 volți pe reset!!! :rade:

Link spre comentariu

Microchip n-a decis nimic,programarea LVP se pare ca functioneaza.De asemenea exista programatoare si LVP (vezi de exemplul linkul din primul post de pe edaboard). Principala problema a programarii LVP e probabil "pierderea" unui pin, PGM, care trebuie tinut la masa in functionare normala si pus la +5V pentru intrare in programare.De altfel de la versiunea 2.60, pickit2 poate fi utilizat pentru programare LV:

----------------------------------------------------------------- Release notes V2.60.00-----------------------------------------------------------------New Features:-------------> Low Voltage Programming mode support Low voltage programming mode (LVP) is now supported for all PICkit 2 supported devices which feature this option. Refer to the device datasheet and programming specification for information on the LVP programming mode. LVP programming mode is enabled by the menu "Tools > User LVP Program Entry" This can only be enabled in Manual Device Select mode. When enabled, the text "LVP" in red will appear above the Device select combo-box. For devices using the PGM pin in LVP mode, PICkit 2 ICSP connector pin 6 AUX must be connected to the device PGM pin. NOTE: LVP mode may only be used with devices that *already* have the LVP configuration bit enabled. Blank devices always have the LVP bit enabled.

Link spre comentariu

cu o floare nu se face primăvară: mi-ai dat un link spre alt link, comparativ cu ijde miile de programatoare care folosesc mclr.și mai rău, ia uite ce zice-acolo:

First of all you should enable lvp on your device(see 146 page of datasheet). You have to set bit 7 in configuration word. How will you do that? In your MPLAB code you,in some program that is passin building and which you can successfully compile, enable lvp in the following line__CONFIG _XT_OSC & _WDT_OFF & _CP_OFF & _BODEN_ON & _LVP_ON & _CPD_OFF & _DEBUG_OFFWhen you do the changes, build your program again. Now program PIC with this code with your programmer which isn't using lvp(you mention that you have that programmer). Now hou have enable lvp (set bit 7 in config word) and you can now use lvp as Lotar explain.

ei?vorbim despre bootloader sau lvp??? :))))că dacă mă iau după citatul de mai sus, by default, picile nu pot fi programate lvp, DECÂT DACĂ configurezi mplab să pună pe enable bitul de lvp, și scrii configul ăla în pic cu... alt programator ”standard”, aka non-lvp.iar citatul tău nu-mi dă decât apă la moară:- e vorba de fw version 2.6.0 din pickit2... deci destul de recent!- și mai rău ”NOTE: LVP mode may only be used with devices that *already* have the LVP configuration bit enabled. Blank devices always have the LVP bit enabled.”pot să bag mâna în foc că ultima propoziție e valabilă doar pentru noile serii de picuri, nicidecum pentru picile produse mai înainte!dacă ai baftă să ai un 16F84 ”vechi”, citește-i config wordul, și vezi dacă are lvp enabled.repet, un 16F84 ”vechi”, nu unul produs recent, sau care a mai fost folosit.de asemenea, dă-mi, te rog, o schemă de programator (nu pickit3 sau ultima versiune de pickit2) care să folosească realmente acel faimos pin 6, care până acum a fost marcat ”NC” sau ”reserved”, sau pur și simplu avea o rezistență de 68 de ohmi între el și masă...ei??? :rade:
Link spre comentariu

Creează un cont sau autentifică-te pentru a adăuga comentariu

Trebuie să fi un membru pentru a putea lăsa un comentariu.

Creează un cont

Înregistrează-te pentru un nou cont în comunitatea nostră. Este simplu!

Înregistrează un nou cont

Autentificare

Ai deja un cont? Autentifică-te aici.

Autentifică-te acum



×
×
  • Creează nouă...

Informații Importante

Am plasat cookie-uri pe dispozitivul tău pentru a îmbunătății navigarea pe acest site. Poți modifica setările cookie, altfel considerăm că ești de acord să continui.Termeni de Utilizare si Ghidări