Sari la conținut
ELFORUM - Forumul electronistilor

Cum sa programez un PIC


Postări Recomandate

Salut!Incerc sa fac urmatorul lucrufolosind pic16f628 sa apas un buton pe B4 si sa se aprinda un led pe B0 schema e prea simpla sa o atasez LED ul l-am atasat la masa printr-o rezistenta de 150R iar butonul cand e apasat face scurt intre B4 si masa.Codul este urmatorul:#include<16F628.h>#use delay (CLOCK=4000000)void main(){ while(true) { if(input(pin_b4)) { output_high(pin_b0); } }}Facut in PIC C.Am simulat programul in ISIS Proteus si nu merge.Si inca ceva de ce trebuie legat pinul MCLR la +? Trebuie legat printr-o rezistenta?Eu am facut scurt intre ele si merge ...la alt montaj... fara butoane.Ii rog pe cei care stiu sa ma ajute.Multumesc.

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

Top autori în acest subiect

Top autori în acest subiect

Imagini postate

Ca detectia buton apasat/neapasat sa fie cat mai sigura, pinul pe care ai montat butonul (spre masa) ar trebui sa fie conectat printr-o rezistenta la VDD (rezistenta pull-up externa sau pull-upul intern activa). Altfel n-ai nici o garantie ca atunci cand butonul nu este apasat ai 1 pe el (butonul fiind intre pin si masa, buton apasat echivaleaza cu 0 pe intrarea respectiva). Asta pe partea hardware.

Pe partea soft, nu reiese de nicaieri initializarea pinilor. Deoarece pinii pot fi si intrari si iesiri, trebuie configurati corespunzator - cel cu butonul intrare, cel cu led-ul iesire. Vezi registrul TRISB.

Pinii de la PIC-uri (pentru economie de spatiu), sunt multiplexati (mai multe functii - digitali, analogi)... Trebuie sa vezi daca nu cumva pinii pe care-i folosesti au, dupa reset, vreo functie speciala (de obicei configurabila cu registrii CMCON sau ANSEL, in functie de pic).

In program ai conditia

if(input(pin_b4))
Nu stiu exact cum functioneaza input(), da' ma astept ca atunci cand apesi butonul sa returneze 0 (butonul fiind spre masa). Pe de alta parte. in if intri daca rezultatul e adevarat sau 1. Asa ca testul tau va functiona eventual invers (va aprinde ledul cand nu apesi butonul; nu stiu insa cine va stinge ledul, cand si de ce).
Link spre comentariu
  • 2 săptămâni mai târziu...

SaltareMa scuzati ca intru si io in discutie neinterbatSunt la mate-info si as dori sa studiez programareaPIC-urilor si ulterior AtmegaAs dori sa stiu in ce masura pot adapta/folosi programele pe care le utilizez la scoala in programare( la scoala folosesc mingw versiunea pt olimpiada OJIkit)Vreau sa precizez ca stiu o mare parte din baza C++Ascult orice sfat P.S.La ora actuala nici un stiu cu ce se "manaca" un PIC.

Link spre comentariu

In primul rand doresc sa multumesc anticipat pentru orice ajutor voi primi.Ideea este ca de ceva vreme ma documentez zic eu destul de temeinic despre PIC 16f84 am facut ceva programe in PIC BASIC - PIC IDE SIMULATOR si m-am apucat sa studiez si asm. Numai ca fara a pune mana pe un m.c. nu prea merge, asa ca am cumparat o clona de PICKIT 2 urmand ca in cel mai scurt timp sa cumapar si un 16f84a fiindca am inteles ca doar acesta merge programat cu PICKIT. Ceea ce vreau eu sa fac este urmatorul lucru:-pe placuta de teste (perforata) vreau sa montez un soclu pentru pic urmand ca pentru pentru PORTA si PORTB sa montez conectori.-tot pe placa as vrea sa pun un conector ICSP- pentru pinii clonei de PICKIT. Problema este ca nu am gasit o schema in care sa fie date valorile componentelor, sunt reprezentate numai prin simboluri si atat.Ma poate ajuta cineva cu aceste valori?-cum se calculeaza oscilatorul RC? sa zicem ca vreau sa am o frecventa de ceas de 4MHz ce valori trebuie sa aleg?-tot legat de conectorul ICSP pe schema "insolation circuits" daca pun doua comutatoare este suficient?Multumesc.

post-53202-139829314703_thumb.gif

Link spre comentariu

Salut Guevara, incearca sa pui PIC-ul pe placa de test dar:- in loc sa arunci banii pe batranul pic16f84 mai bine ai lua sau pic16f648a (e mai ieftin si mai bun)- clona de PICKIT2 programeaza (ca si ICD2) o groaza de uC, nicidecum doar 84- din cei 18 pini ai lui f84(628/648) poti lasa 2 pini dedicati programarii (RB6, RB7) si MCLR, nu are rost sa complici montajul cu comutatoare... Daca chiar ai nevoie de toti pinii I/O mai simplu treci la pic16f876a de exemplu (inca mai ieftin ca f84 :ras: ) care are 28 pini.- in loc de oscilator RC poti pune quartz de 4-20MHz, e mai stabil, mai simplu (si costa cca 1 leu)- pickit2 il conectezi direct la pic-ul tau, nu ai nevoie de piese si valori intermediare... :speriat Sper sa iti foloseasca parerea mea, spor la treaba !

Link spre comentariu

MUltumesc.In data sheet spune ca pe langa cristal mai trbuie adaugate doua condensatoare. Este in regula sa le omit? sau pun un rezonator care le are deja incluse?Tot ce am invatat despre picuri se refera la cazul particular al lui 16f84. As vrea totusi pentru inceput sa ma joc cu el (desi este mai scump ). Totusi zic si eu asa ca un noob :jytuiyu nu este gresita ideea cu comutatoarele? sau este? Daca nu mai trebuie adaugate piese pentru icsp atunci e super :101 .

Link spre comentariu

Condensatoarele eu le-am omis in cca 80 montaje facute in ultimii ani... dar poti sa le pui daca nu-ti trebuie la altceva :rade: Ideea cu comutatoarele este "functionala" dar complicatia nu se justifica, il poti pune... si sa dai de el la fiecare programare, apoi invers la verificare (rulare) si tot asa.

Link spre comentariu

Saltare

Ma scuzati ca intru si io in discutie neinterbat

Sunt la mate-info si as dori sa studiez programareaPIC-urilor si ulterior Atmega

As dori sa stiu in ce masura pot adapta/folosi programele pe care le utilizez la scoala in programare( la scoala folosesc mingw versiunea pt olimpiada OJIkit)

Vreau sa precizez ca stiu o mare parte din baza C++

Ascult orice sfat

P.S.

La ora actuala nici un stiu cu ce se "manaca" un PIC.

mingw e varianta de windows a lui gcc din lumea linux/unix, și încă o variantă destul de șchioapă.

n-are nici o importanță că e ”pentru olimpiadă”, tot compilări inutile pentru ”viața reală” o să-ți scoată...

 

caută cu atenție pe ambele threaduri de pic și atmel, o să găsești destule variante de sisteme de dezvoltare soft, inclusiv unele create de către cei care au creat și microcontrollerele respective.

 

presupun că știi engleza: un search pe google îți va returna o grămadă de tutoriale de programare c, basic sau alte limbaje pentru mcu-uri... caută-le pe cele pentru începători absoluți, încearcă mai întâi singur, și dacă nu iese, expune problema și cere un sfat pe forum. :d

Link spre comentariu

Pai am terminat montajul si functioneaza. Din graba (si lene sa nu mai fac un cablu de conectare intre placa si pickit am folosit un cablu vechi de floppy :rade: . Oricum recomand tuturor cu caldura PIC IDE SIMULATOR.PS. cine imi poate explica si mie cat mai simplu conceptul de WATCHDOG si PRESCALING?Multumesc.@vcdec multam pentru sfatul 16f648a

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

Salutare !

Următorul pas.

http://www.winpicprog.co.uk/pic_tutorial1.htm

Cum programez un PIC12F629 cu acest cod, cu un programator tip JDM [ AD-PIC01S ] cu WinPIC.

Toţi sunt foarte economi în descrieri, un începător care acum face acest lucru prima dată, nu va reuşi să facă ceva din frânturi de explicaţii.

M-am uitat la acel cod din linkul de mai sus, cred că trebuiesc câteva modificări, fiind pe 12f628.

Unde şi cum se adaugă acel cod?

 

Am încercat deja o programare cu acest hex :

 

File - Open - jp6291B.hex - Program All

 

La final, după afişarea ferestrei de confirmare, ledul verde continuă să pâlpâie într-un anumit ritm.

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