Vizitator Mario_b Postat Noiembrie 17, 2006 Partajează Postat Noiembrie 17, 2006 Va salut, am si eu cateva intrebari despre programarea PIC-urilor.Recent am inceput sa programez PIC-uri.Sa zicem ca avem urmatoarea situatie: PIC 12f629 are 8 pini din care 2 sunt Vdd si Vss, restul pinilor sunt multifunctionali, pic-ul are doar un port de I/O, anume GPIO. Asa, sa zicem ca (,) configurez pinul 0 ca intrare si restul pana la 5 ca iesiri. Dar eu am nevoie sa afisez ceva din acumulator si ii dau movwf GPIO ca sa afiseze; acum e baiu --- asta nu deranjeaza pinul 0 care este setat ca intrare????Alta intrebare: cum setez din program sa folosesc un cristal de quartz (XT)pe pinii 4 si 5 care pot fi setati ca pini de I/O? Adica cum setez TRISIO (tri-state) pe pinii 4 si 5?Poate nu sunt intrebari dificile, dar m-am lovit de ele si am cautat pe net in zadar... Daca se gaseste cineva sa-mi raspunda, ii multumesc mult. Link spre comentariu
sofian Postat Noiembrie 17, 2006 Partajează Postat Noiembrie 17, 2006 pini 4,5 ii lasi asa cum sunt setati de microcontroler la startiar pe el cind il programezi vezi sa fie la oscilator setat XT Link spre comentariu
Vizitator Mario_b Postat Noiembrie 17, 2006 Partajează Postat Noiembrie 17, 2006 Ok, si cand fac operatii de I/O ma feresc de pinii 4 si 5? Adica cum setez registrul TRISIO ptr bitul 4 si 5? Input sau Output? Intelegi ce vreau sa intreb? Link spre comentariu
Abram Burel Postat Noiembrie 17, 2006 Partajează Postat Noiembrie 17, 2006 1. Dacă un pin este setat pe intrare, poţi să "scrii" în el ce vrei. Valoarea înscrisă în latch-ul de ieşire se opreşte în buferul care e comandat de TRISIO. Vezi schemele din foile de catalog din secţiunea GPIO Port. Citeşte cu atenţie secţiunea. Sunt multe de învăţat de acolo (de exemplu că write este de fapt read-modify-write). Atenţie şi la GP3 care este exclusiv intrare.2. Cam la fel. Biţii de configurare care stabilesc utilizarea pinilor pentru oscilator trece buffer-ul de ieşire în 3S. Tot de pe scheme te prinzi.Concluzia: foaia de catalog citită şi privită cu atenţie e... sfântă. Link spre comentariu
Vizitator Mario_b Postat Noiembrie 19, 2006 Partajează Postat Noiembrie 19, 2006 Mersi mult. Link spre comentariu
Vizitator Mario_b Postat Noiembrie 24, 2006 Partajează Postat Noiembrie 24, 2006 Revin.Am reusit sa fac cateva programe pentru a ma familiariza cu PIC-ul.Am citit datasheetul de cateva ori, altfel e imposibil sa intelegi tot din prima trecere.Am observat o chestie: --- un program simplu care sa testeze capabilitatea I/O a unui pic astfel: daca pe GP0 setat ca input am 0 logic, pe GP1 setat ca output am tot 0 logic, iar daca pe GP0 am 1, pe GP1 am tot 1. Deci, ceva ff simplu.Am observat ca daca pe GP0 nu pun nici 0 nici 1 (deci nu e legat la nimic pinul, ledurile blink-aie cu intensitate cam 50% din nominal. in rest programu merge ok.Stiti de ce face asta??? Link spre comentariu
cirip Postat Noiembrie 25, 2006 Partajează Postat Noiembrie 25, 2006 Picul este un circuit CMOS. Este o regula generala ca intrarile circuitelor CMOS nu se lasa in gol. Impedanta lor de intrare este mare si capteaza usor zgomot din mediul inconjurator.Ca sa nu mai apara aceasta problema, fie activezi pullup-ul intern, fie conectezi un pullup/down extern, fie conectezi o iesire de circuit de impedanta joasa (de exemplu o alta poarta sau iesire de circuit logic), care sa impiedice captarea zgomotului.Poti sa mai faci un experiment inainte sa activezi pullup-urile. Prin intermediul unei surubelnite mici sau al unui varf ascutit, atinge cu mana pinul de intrare. Cealalta mana atinge-o fie la Vcc fie la masa. Ar trebui sa constati ca ledul se aprinde sau se stinge constant.Cirip Link spre comentariu
Vizitator Mario_b Postat Noiembrie 25, 2006 Partajează Postat Noiembrie 25, 2006 Mersi mult. Link spre comentariu
CristianC Postat Decembrie 4, 2006 Partajează Postat Decembrie 4, 2006 Ok, si cand fac operatii de I/O ma feresc de pinii 4 si 5? Adica cum setez registrul TRISIO ptr bitul 4 si 5? Input sau Output? Intelegi ce vreau sa intreb?Atunci cand setezi oscilator XT/HS (din bitii de configuratie) functia I/O a pinilor respectivi (4 si 5) este dezactivata. Nu e nevoie sa ai grija ce scrii in GPIO sau TRISIO. Link spre comentariu
Vizitator Mario_b Postat Decembrie 8, 2006 Partajează Postat Decembrie 8, 2006 Mai am niste intrebari: nu reusesc sa fac un LED sa blinkaie... E rusinos si ff stresant ptr mine ca nu stiu sa implementez o functie de delay. Orice program fac ledul sta mereu aprins... Deci poate o oscila el, dar nu se vede, desi am bagat o functie delay destul de lunga zic eu (folosesc un cristal, deci XT)...Poate cineva sa-mi dea un exemplu de cod sau macar doar o functie DELAY ptr PIC 12f629???Raman dator... :partyman: Link spre comentariu
Vizitator Mario_b Postat Decembrie 8, 2006 Partajează Postat Decembrie 8, 2006 Aaa, inca ceva, cine ma poate ajuta cu un C compiler mai usor, mai ales ca stiu sa programez in C ca beginner, precum si documentaita aferenta ca sa-mi dau seama si cum sa folosesc compilerul... Thx.... Link spre comentariu
Vizitator Mario_b Postat Decembrie 8, 2006 Partajează Postat Decembrie 8, 2006 Haideti mai, nu poate nimeni sa-mi dea un exemplu de procedura DELAY??? Link spre comentariu
CristianC Postat Decembrie 8, 2006 Partajează Postat Decembrie 8, 2006 Ca si compilator free cauta PIClite Functie delay in asm: cblock ;declar un bloc de memorie delayL delayH endc R_Delay: clrf delayL clrf delayH decfsz delayL,f goto $-1 ;sar o instructiune inapoi decfsz delayH,f goto $-3 ;sar 3 instructiuni inapoi return Intarzierea va fi de ~ 3*256*256 instructiuni Link spre comentariu
Vizitator Mario_b Postat Decembrie 9, 2006 Partajează Postat Decembrie 9, 2006 Mersi mult, Cristian.Va atasez un asm cu programul meu. Uitati-va si spuneti-mi unde gresesc, ca ledul nu blinkaie , doar se aprinde pe GP1 (GPIO:000010) si sta aprins.Am simulat programu cu MPLAB si merge OK, am configurat ptr oscilator XT cu MCLR intern fara WDT, doar cu Brown Out Detect.Mooor de ciuda.....PS Schimbati extensia din ZIP in ASM... Link spre comentariu
Vizitator Mario_b Postat Decembrie 9, 2006 Partajează Postat Decembrie 9, 2006 OK, mi-am refacut calculele si am vazut ca am facut o greseala stupida, nu aveam cum sa vad ledul cum blinkaie deoarece sta aprins doar 0,006sec sau ceva de genu... :weedman: Link spre comentariu
Postări Recomandate
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 contAutentificare
Ai deja un cont? Autentifică-te aici.
Autentifică-te acum