catalin004 Postat Noiembrie 28, 2017 Partajează Postat Noiembrie 28, 2017 Va salut....cum am intampinat o problema de curand, rog a se detalia modul de configurare a registrilor unui uC...m-am referit strict la PIC, limbaj C, insa nu este obligatorie...probabil ca sunt la fel ...nu ma intereseaza comenzile din librarii gen define sau TRISA.F1 = 1; sau TRISA1_bit = 1; Atasez mai jos cateva exemple, un uC oarecare ...de exemplu PortulA, sa fie definit ca intrare Tabelul 3 : Registri asociati portului PORTA Cum se va scrie in binar aceasta comanda? Dar in HEX? Astept cu nerabdare explicatiile dvs.multumesc Link spre comentariu
nico_2010 Postat Noiembrie 28, 2017 Partajează Postat Noiembrie 28, 2017 Care comanda? L.E.: Adica ai vrea sa afli cum se scrie, de exemplu, in assembler comanda "TRISA.F1 = 1"? Daca este asa atunci ai: bsf 0x02, 0x85 // unde 0x85 = 85h = adresa registrului, iar 0x02 = 00000010 bitul setat (1) fiind cel aferent TRISA1 Link spre comentariu
catalin004 Postat Noiembrie 28, 2017 Autor Partajează Postat Noiembrie 28, 2017 (editat) Nu....as vrea sa stiu ce insemna: PORTA = 0b00000000;//probabil ca aici RA este definit ca iesire.... si PORTA = 0x7F; Exemplele sunt la intamplare...nu stiu ce definesc fiecare... Editat Noiembrie 28, 2017 de catalin004 Link spre comentariu
nico_2010 Postat Noiembrie 28, 2017 Partajează Postat Noiembrie 28, 2017 Registrul care defineste directia portului este TRIS (0 = intrare, 1 = iesire) Valoarea atribuita portului (re)seteaza latch-urile, adica, in ipoteza in care portul X este iesire, starea lui poate fi 0 sau 1 In exemplul anterior am gresit (nu sunt familiarizat cu PIC-urile) si am facut corectia. In exemplul tau: PORTA= 0B0000000 -> daca portul este definit ca iesire (cu TRISA = 0b0001111), atunci nivelul logic pe cei 4 pini ai acestui port este "0" PORTA =0x7F = 0111111 -> daca portul este definit ca iesire (cu TRISA = 0b0001111), atunci nivelul logic pe cei 4 pini ai acestui port este "1" (0111111 -> ce este inrosit nu are niciun efect si nici nu este recomandat, conform tabelului postat de tine) Link spre comentariu
catalin004 Postat Noiembrie 28, 2017 Autor Partajează Postat Noiembrie 28, 2017 (editat) Repet am scris 0x7F fara nici o treaba, doar ca exemplu...Bun... Ce insemna 0b din fata celor 8 biti? Deci mai pe romaneste nu inteleg cum se aleg zerourile acelea... Editat Noiembrie 28, 2017 de catalin004 Link spre comentariu
nico_2010 Postat Noiembrie 28, 2017 Partajează Postat Noiembrie 28, 2017 0b inseamna format binar, 0x sau h inseamna format hexazecimal Cum se aleg iti este descris in foaia de catalog, functie de registru si de functiile care trebuie (dez)activate Link spre comentariu
catalin004 Postat Noiembrie 28, 2017 Autor Partajează Postat Noiembrie 28, 2017 Am inteles...nu stiam ce face 0b acela in fata....si cum este mai bine, sa se scrie in binar sau in hex? banuiesc ca atunci cand vad: 0x6C este tot una cu 0b01101100; ? Multumesc Link spre comentariu
Elison Postat Noiembrie 28, 2017 Partajează Postat Noiembrie 28, 2017 (editat) Cand portul A este definit ca iesire valoarea lui TRISA este TRISA = 0b0000000. 1 este asociat ci I de la input si 0 cu O de la output. Editat Noiembrie 28, 2017 de Elison Link spre comentariu
nico_2010 Postat Noiembrie 28, 2017 Partajează Postat Noiembrie 28, 2017 Da, este acelasi lucru. Poate este mai bine sa folosesti sistemul binar, iti ofera o imagine mai clara asupra bitilor din registrul respectiv. Pentru userul Elison: Corect, scuze, le-am incurcat un pic. Link spre comentariu
Elison Postat Noiembrie 28, 2017 Partajează Postat Noiembrie 28, 2017 Registrul care defineste directia portului este TRIS (0 = intrare, 1 = iesire) Valoarea atribuita portului (re)seteaza latch-urile, adica, in ipoteza in care portul X este iesire, starea lui poate fi 0 sau 1 In exemplul anterior am gresit (nu sunt familiarizat cu PIC-urile) si am facut corectia. In exemplul tau: PORTA= 0B0000000 -> daca portul este definit ca iesire (cu TRISA = 0b0001111), atunci nivelul logic pe cei 4 pini ai acestui port este "0" PORTA =0x7F = 0111111 -> daca portul este definit ca iesire (cu TRISA = 0b0001111), atunci nivelul logic pe cei 4 pini ai acestui port este "1" (0111111 -> ce este inrosit nu are niciun efect si nici nu este recomandat, conform tabelului postat de tine) Aici nu este acelasi lucru. Link spre comentariu
catalin004 Postat Noiembrie 28, 2017 Autor Partajează Postat Noiembrie 28, 2017 Ok...am inteles perfect...Acum avem mai jos un alt exemplu:PIC16F877 Pentru selectia pe RA3 a unei tensiuni de referinta pozitica si tensiune de referinta negativa ground-ul selectia registrilor va fi: ADCON1 = 0b00000001; ? Cand portul A este definit ca iesire valoarea lui TRISA este TRISA = 0b0000000. 1 este asociat ci I de la input si 0 cu O de la output. Rog un exemplu.... Link spre comentariu
Elison Postat Noiembrie 28, 2017 Partajează Postat Noiembrie 28, 2017 Cu ADCON1 definesti daca pinii asociati portului A sunt pini digitali sau analogici. Link spre comentariu
catalin004 Postat Noiembrie 28, 2017 Autor Partajează Postat Noiembrie 28, 2017 Cand portul A este definit ca iesire valoarea lui TRISA este TRISA = 0b0000000. 1 este asociat ci I de la input si 0 cu O de la output. Deci cum se scrie pana la urma ca RA1 este ca intrare? codul exact.... Link spre comentariu
nico_2010 Postat Noiembrie 28, 2017 Partajează Postat Noiembrie 28, 2017 TRISA = 0b00000010; Sper sa nu mai fiu aerian, iar... Link spre comentariu
Elison Postat Noiembrie 28, 2017 Partajează Postat Noiembrie 28, 2017 Daca dorim ca bitul 1 din portul A sa fie intrare si restul de biti sa fie iesiri scriem TRISA = 0b0000010 sau putem face asta la nivel de bit:TRISA0=0, TRISA1=1,TRISA2=0,TRISA3=0,TRISA4=0 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