Microcontrolere PIC on-line GRATIS!

 
 
 
   
Pagina anterioară Conținut Pagina următoare

 

CAPITOLUL 2

Microcontrolerul PIC16F84

Introducere

CISC, RISC
Aplicații
Clock-ul/instrucțiune
Pipelining
Semnificația pinilor

2.1 Generator-oscilator de ceas
2.2 Reset
2.3 Unitatea de procesare centrală
2.4 Porturi
2.5 Organizarea memoriei
2.6 Întreruperi
2.7 Timer-ul liber TMRO
2.8 Memoria de date EEPROM

Introducere

PIC16F84 aparține unei clase de microcontrolere de 8 biți cu arhitectură RISC. Structura lui generală este arătată în schița următoare reprezentând blocurile de bază.

Memoria program (FLASH)-pentru memorarea unui program scris.
Pentru că memoria ce este făcută în tehnologia FLASH poate fi programată și ștearsă mai mult decât odată, aceasta face microcontrolerul potrivit pentru dezvoltarea de componentă.

EEPROM-memorie de date ce trebuie să fie salvate când nu mai este alimentare.
Este în mod uzual folosită pentru memorarea de date importante ce nu trebuie pierdute dacă sursa de alimentare se întrerupe dintr-o dată. De exemplu, o astfel de dată este o temperatură prestabilită în regulatoarele de temperatură. Dacă în timpul întreruperii alimentării această dată se pierde, va trebui să facem ajustarea încă o dată la revenirea alimentării. Astfel componenta noastră pierde în privința auto-menținerii.

RAM-memorie de date folosită de un program în timpul executării sale.
În RAM sunt memorate toate rezultatele intermediare sau datele temporare ce nu sunt cruciale la întreruperea sursei de alimentare.

PORTUL A și PORTUL B sunt conexiuni fizice între microcontroler și lumea de afară. Portul A are 5 pini, iar portul B are 8 pini.

TIMER-UL LIBER (FREE-RUN) este un registru de 8 biți în interiorul microcontrolerului ce lucrează independent de program. La fiecare al patrulea impuls de ceas al oscilatorului își încrementează valoarea lui până ce atinge maximul (255), și apoi începe să numere tot din nou de la zero. După cum știm timpul exact dintre fiecare două incrementări ale conținutului timer-ului, poate fi folosit pentru măsurarea timpului ce este foarte util la unele componente.  

UNITATEA DE PROCESARE CENTRALĂ are rolul unui element de conectivitate între celelalte blocuri ale microcontrolerului. Coordonează lucrul altor blocuri și execută programul utilizatorului.

CISC, RISC

S-a spus deja că PIC1684 are o arhitectură RISC. Acest termen este adeseori găsit în literatura despre calculatoare, și are nevoie să fie explicat aici mai în detaliu. Arhitectura Harvard este un concept mai nou decât von-Neumann. S-a născut din nevoia de mărire a vitezei microcontrolerului. În arhitectura Harvard, bus-ul de date și bus-ul de adrese sunt separate. Astfel este posibil un mare debit de date prin unitatea de procesare centrală, și bineînțeles, o viteză mai mare de lucru. Separarea programului de memoria de date face posibil ca mai departe instrucțiunile să nu trebuiască să fie cuvinte de 8 biți. PIC16F84 folosește 14 biți pentru instrucțiuni ceea ce permite ca toate instrucțiunile să fie instrucțiuni dintr-un singur cuvânt. Este de asemenea tipic pentru arhitectura Harvard să aibă mai puține instrucțiuni decât von-Newmann și să aibă instrucțiuni executate uzual intr-un ciclu.

Microcontrolerele cu arhitectură Harvard sunt de asemenea numite "microcontrolere RISC". RISC înseamnă Reduced Instruction Set Computer. Microcontrolerele cu arhitectura von-Newmann sunt numite "microcontrolere CISC". Titlul CISC înseamnă Complex Instruction Set Computer.

Pentru că PIC16F84 este un microcontroler RISC, aceasta înseamnă că are un set redus de instrucțiuni, mai precis 35 de instrucțiuni (de ex. microcontrolerele INTEL și Motorola au peste 100 de instrucțiuni). Toate aceste instrucțiuni sunt executate într-un ciclu cu excepția instrucțiunilor jump și branch. Conform cu ceea ce spune constructorul, PIC16F84 ajunge la rezultate de 2:1 în compresia cod și 4:1 în viteză în comparație cu alte microcontrolere de 8 biți din clasa sa.

Aplicații

PIC16F84 se potrivește perfect în multe folosințe, de la industriile auto și aplicațiile de control casnice la instrumentele industriale, senzori la distanță, mânere electrice de uși și dispozitivele de securitate. Este de asemenea ideal pentru cardurile smart ca și pentru aparatele alimentate de baterie din cauza consumului lui mic.

Memoria EEPROM face mai ușoară aplicarea microcontrolerelor la aparate unde se cere memorarea permanentă a diferitor parametri (coduri pentru transmițătoare, viteza motorului, frecvențele receptorului, etc.). Costul scăzut, consumul scăzut, mânuirea ușoară și flexibilitatea fac PIC16F84 aplicabil chiar și în domenii unde microcontrolerele nu au fost prevăzute înainte (exemple: funcții de timer, înlocuirea interfeței în sistemele mari, aplicațiile coprocesor, etc.).
Programabilitatea sistemului acestui cip (împreună cu folosirea a doar doi pini în transferul de date) face posibilă flexibilitatea produsului, după ce asamblarea și testarea au fost terminate. Această capabilitate poate fi folosită pentru a crea producție pe linie de asamblare, de a înmagazina date de calibrare disponibile doar după testarea finală, sau poate fi folosit pentru a îmbunătăți programele la produsele finite.

Clock-ul /ciclul instrucțiune

Clock-ul sau ceasul este starter-ul principal al microcontrolerului, și este obținut dintr-o componentă de memorie externă  numită "oscilator". Dacă ar fi să comparăm un microcontroler cu un ceas de timp, "clock-ul" nostru ar fi un ticăit pe care l-am auzi de la ceasul de timp. În acest caz, oscilatorul ar putea fi comparat cu arcul ce este răsucit astfel ca ceasul de timp să meargă. De asemenea, forța folosită pentru a întoarce ceasul poate fi comparată cu o sursă electrică.

Clock-ul de la oscilator intră într-un microcontroler prin pinul OSC1 unde circuitul intern al microcontrolerului divide clock-ul în 4 clock-uri egale Q1, Q2, Q3 și Q4 ce nu se suprapun. Aceste 4 clock-uri constituie un ciclu de o singură instrucțiune (numit de asemenea ciclu mașină) în timpul căreia instrucțiunea este executată.

Executarea instrucțiunii începe prin apelarea unei instrucțiuni care este următoarea în linie. Instrucțiunea este apelată din memoria program la fiecare Q1 și este scrisă în registrul de instrucțiuni la Q4. Decodarea și executarea instrucțiunii sunt făcute între următoarele cicluri Q1 și Q4. În următoarea diagramă putem vedea relația dintre ciclul instrucțiunii și clock-ul oscilatorului (OSC1) ca și aceea a clock-urilor interne Q1-Q4. Contorul de program (PC) reține informația despre adresa următoarei instrucțiuni.

Pipelining

Ciclul instrucțiune constă din ciclurile Q1, Q2, Q3 și Q4. Ciclurile de instrucțiuni de apelare și executare sunt conectate într-un așa fel încât pentru a face o apelare, este necesar un ciclu cu o instrucțiune, și mai este nevoie de încă unul pentru decodare și executare. Totuși, datorită pipelining-ului (folosirea unei pipeline-conductă, și este aducerea unei instrucțiuni din memorie în timp ce se execută alta), fiecare instrucțiune este executată efectiv într-un singur ciclu. Dacă instrucțiunea cauzează o schimbare în contorul programului, și PC-ul nu direcționează spre următoarea ci spre alte adrese (poate fi cazul cu subprogramele jumps sau calling), 2 cicluri sunt necesare pentru executarea unei instrucțiuni. Aceasta este pentru că instrucțiunea trebuie procesată din nou, dar de data aceasta de la adresa corectă. Ciclul începe cu clock-ul Q1, prin scrierea în registrul instruction register (IR). Decodarea și executarea începe cu clock-urile Q2, Q3 și Q4.

TYC0 citește instrucțiunea MOVLW 55h (nu are importanță pentru noi ce instrucțiune a fost executată, ce explică de ce nu este un dreptunghi  desenat în partea de jos).
TCYI execută instrucțiunea MOVLW 55h și citește MOVWF PORTB.
TCY2 execută MOVWF PORTB și citește CALL SUB_1.
TCY3 execută o apelare a subprogramului CALL SUB_1, și citește instrucțiunea BSF PORTA, BIT3. Pentru că instrucțiunea aceasta nu este aceea de care avem nevoie, sau nu este prima instrucțiune a subprogramului SUB_1 a cărei execuție este următoarea în ordine, instrucțiunea trebuie citită din nou.
Acesta este un bun exemplu a unei instrucțiuni având nevoie de mai mult de un ciclu.
TCY4 ciclul instrucțiunii este total folosit pentru citirea primei instrucțiuni din subprogram la adresa SUB_1.
TCY5 execută prima instrucțiune din subprogram SUB_1 și citește următoarea.

Semnificația pinilor

PIC16F84 are un număr total de 18 pini. Cel mai adesea se găsește într-o capsulă de tip DIP18 dar se poate găsi de asemenea și într-o capsulă SMD care este mai mică ca cea DIP. DIP este prescurtarea de la Dual In Package. SMD este prescurtarea de la Surface Mount Devices sugerând că găurile pentru pini unde să intre aceștia, nu sunt necesare în lipirea acestui tip de componentă.

Pinii microcontrolerului PIC16F84 au următoarea semnificație:

Pin nr.1 RA2 Al doilea pin la portul A. Nu are funcție adițională.
Pin nr.2 RA3 Al treilea pin la portul A. Nu are funcție adițională.
Pin nr.3 RA4 Al patrulea pin la portul A. TOCK1 care funcționează ca timer se găsește de asemenea la acest pin.
Pin nr.4 MCLR Resetează intrarea și tensiunea de programare Vpp a microcontrolerului.
Pin nr.5 VSS Alimentare, masă.
Pin nr.6 RB0 Pin de zero la portul B. Intrarea Întrerupere este o funcție adițională.
Pin nr.7 RB1 Primul pin la portul B. Nu are funcție adițională.
Pin nr.8 RB2 Al doilea pin la portul B. Nu are funcție adițională.
Pin nr.9 RB3 Al treilea pin la portul B. Nu are funcție adițională.
Pin nr.10 RB4 Al patrulea pin la portul B. Nu are funcție adițională.
Pin nr.11 RB5 Al cincilea pin la portul B. Nu are funcție adițională.
Pin nr.12 RB6 Al șaselea pin la portul B. Linia de 'Clock' în mod programare.
Pin nr.13 RB7 Al șaptelea pin la portul B. Linia 'Data' în mod programare.
Pin nr.14 Vdd Polul pozitiv al sursei.
Pin nr.15 OSC2 Pin desemnat pentru conectarea la un oscilator.
Pin nr.16 OSC1 Pin desemnat pentru conectarea la un oscilator.
Pin nr.17 RA2 Al doilea pin la portul A. Nu are funcție adițională.
Pin nr.18 RA1 Primul pin la portul A. Nu are funcție adițională.

 

Pagina anterioară Conținut Pagina următoare
 

© Copyright 2003. mikroElektronika. All Rights Reserved. For any comments contact webmaster.