Documente noi - cercetari, esee, comentariu, compunere, document
Documente categorii

Microcontroler - Porturi

Microcontroler - Porturi

Portul se refera la un grup de pini ai unui microcontroler ce pot fi accesati simultan, sau la care putem seta combinatia dorita de zero-uri si unu-uri, sau de la care putem citi o stare existenta. Fizic, portul este un registru in interiorul unui microcontroler ce este conectat cu fire la pinii microcontrolerului. Porturile reprezinta conexiunea fizica a Unitatii de Procesare Centrala cu lumea exterioara. Microcontrolerul le foloseste pentru a monitoriza sau controla alte componente sau aparate. Datorita functionalitatii, unii pini au rol dublu ca  RA4/TOCKI de exemplu, care este simultan al patrulea bit la portul A si o intrare externa pentru contorul liber (free-run). Selectia uneia din aceste doua functii ale pinului se face in unul din registrii configurationali.  O ilustratie a acesteia este al cincilea bit T0CS in registrul OPTION. Selectand una din functii cealalta este dezactivata.



Toti pinii portului pot fi definiti ca intrare sau iesire, conform cu nevoile unui montaj ce este in dezvoltare. Pentru a defini un pin ca pin de intrare sau ca pin de iesire, trebuie scrisa combinatia corecta de zero-uri si unu-uri in registrul TRIS. Daca in locul potrivit este scris '1' logic in registrul TRIS, acel pin este pin de intrare, iar daca este valabil contrariul, este un pin de iesire.  Fiecare port are registrul lui TRIS. Astfel, portul A are TRISA la adresa 85h, iar portul B are TRISB la adresa 86h.

PORTB

PORTB are 8 pini legati la el. Registrul adecvat pentru directia datelor este TRISB la adresa 86h. Setarea unui bit in registrul TRISB defineste pinul portului corespunzator ca pin de intrare, si resetarea unui bit in registrul TRISB, defineste pinul portului corespunzator ca pin de iesire. Fiecare pin la PORTB are un rezistor slab intern pull-up (scoatere) (rezistor care defineste o linie la unu logic) care poate fi activat prin resetarea celui de-al saptelea bit RBPU in registrul OPTION. Acesti rezistori 'pull-up' se inchid automat cand pinul portului este configurat ca o iesire. Cand porneste microcontrolerul, 'pull-up'-ii sunt dezactivati. 

Patru pini ai portului PORTB, RB7:RB4 pot cauza o intrerupere, care se intampla cand starea lor se schimba de la unu logic la zero logic si invers. Numai pinii configurati ca intrare pot cauza aceasta intrerupere sa se intample (daca fiecare pin RB7:RB4 este configurat ca o iesire, nu va fi generata o intrerupere la schimbarea starii). Aceasta optiune de intrerupere cu rezistorii 'pull-up' fac mai usoara rezolvarea problemelor din practica, ca de exemplu o tastatura matriceala. Daca randurile tastaturii sunt conectate la acesti pini, fiecare apasare a unei clape va cauza o intrerupere. Microcontrolerul va determina care clapa este apasata in timp ce se proceseaza o intrerupere. Nu se recomanda sa apelati la portul B in timp ce se proceseaza intreruperea.



Exemplul de mai sus arata cum pinii 0, 1, 2, si 3 sunt declarati ca intrare, si pinii 4, 5, 6 si 7 ca iesire.

PORTA

PORTA are 5 pini legati la el. Registrul corespunzator pentru directia datelor este TRISA  la adresa 85h. Ca si la portul B, setarea unui bit in registrul TRISA defineste de asemenea pinul portului corespunzator ca un pin de intrare, si resetarea unui bit in registrul TRISA defineste pinul portului corespunzator ca pin de iesire. 
Al cincilea pin al portului A are functie duala. La acel pin se afla de asemenea o intrare externa pentru timer-ul TMRO. Una din aceste doua optiuni este aleasa prin setarea sau resetarea bitului TOCS (TMR0 Clock Source Select bit-bit de Selectie a Sursei Ceasului TMRO). Acest pin permite timer-ului TMRO sa-si creasca starea fie de la oscilatorul intern fie prin impulsuri externe la pinul RA4/T0CKI.

Exemplul arata cum pinii 0, 1, 2, 3, si 4 sunt declarati ca intrare iar 5, 6 si 7 ca pini de iesire.