PIC (microcontroler)

De la Wikipedia, enciclopedia liberă.
Salt la navigare Salt la căutare

PIC este o familie de circuite integrate semiconductoare cu funcții de microcontroler fabricate de Microchip Technology . Termenul PIC nu este folosit ca acronim: denumirea sa corporativă este „PICmicro”. Deși în general înseamnă „Programmable Interface Controller”, primul său producător („ Instrumentul general ”) a folosit acronimul pentru „Programmable Intelligent Computer”.
Dezvoltat inițial în 1975 , este capabil să efectueze un set de instrucțiuni redus ( RISC ): versiunea mai mică are 33 de instrucțiuni de asamblare . Dispozitivul oficial de programare pentru microcontrolerele PIC este Pickit .

Până în prezent, sunt disponibile microcontrolere PIC pe 8 biți (seria PIC10, PIC12, PIC16 și PIC18), pe 16 biți (seria PIC24 și dsPIC) și pe 32 de biți (PIC32), acestea din urmă având o arhitectură radical diferită, deoarece se bazează pe un nucleu MIPS32 M4K.

PIC1655A al Instrumentului general

Versiuni pe 8 biți

Diverse PIC-uri cu ferestre

De-a lungul timpului, o mare varietate de versiuni de PIC-uri pe 8 biți au fost puse la dispoziție, diferind în ceea ce privește tehnologia de construcție, forma fizică (numărul de pini ), cantitatea sau tipul de memorie , precum și funcțiile de intrare și ieșire.

În ceea ce privește memoria programului, există versiuni cu program pe ROM mascat, deci nu sunt reprogramabile, versiuni CMOS programabile odată OTP , versiuni EPROM cu fereastră pentru ștergere prin raze UV și versiuni cu memorie flash .

Versiunile CMOS au un C în numele componentei (de exemplu, PIC16C505), versiunile ROM au CR (de exemplu, PIC16CR57A), iar versiunile flash au un F (de exemplu, PIC18F452). Rețineți că seria C este acum depășită, deci cele mai utilizate versiuni sunt cele cu memorie FLASH, care pot fi programate de multe ori într-un timp scurt prin intermediul unui programator ICSP (In-Circuit Serial Programming).
Cel mai cunoscut PIC este PIC16F84: acum a fost înlocuit de cel mai complet PIC16F88, cu care este aproape complet compatibil (este necesar doar să schimbați inițializarea perifericelor și să recompilați codul pentru maparea corectă a registrelor) . 16F88 găzduiește multe periferice, cum ar fi USART , 3 temporizatoare , 2 comparatoare și un A / D. cu 7 canale . De asemenea, are un oscilator intern și, prin urmare, porturile OSC1 și OSC2 pot fi utilizate ca intrări sau ieșiri (RA6, RA7); dacă nu este necesar, portul de resetare / programare (MCLR) poate fi folosit ca intrare generică (RA5), dar nu și ca ieșire. În plus, memoria programului (și nu doar datele EEPROM) poate fi citită și scrisă direct din cod.

Cu același pinout ca 16F84, pe lângă 88 menționate anterior (și 87, la fel ca 88, dar fără A / D), există 627/628 / 648A, 716 și 818/819. Există și alte versiuni similare, dar cu mai mulți pini de intrare și ieșire (de exemplu versiunile 16F876 și 16F877). Această ultimă serie garantează un set mult mai mare de periferice, un consum mai mic și mai ales costuri mai mici. Echivalentul direct al 16F84 este 18F1220, care include și un USART, un MSSP, intrări analogice și multe altele.

Seria specială 18FJ, care nu are EEPROM la bord, este cea mai ieftină serie produsă de Microchip. De fapt, prin utilizarea microcontrolerelor cu mai multă memorie de program decât este de fapt necesar, este posibil să scrieți acestuia din urmă, rezervând o zonă pentru utilizarea de tip EEPROM.

Apoi, există microcontrolere PIC care se remarcă pentru utilizarea într-o aplicație specifică: de exemplu, 16F1455 și 18F2550 au suport hardware pentru stiva USB 2.0 , la fel cum PIC18F67J60 integrează un controler Ethernet în timp ce 16F1933 sunt adesea utilizate în controlul afișajului până la 60 de segmente datorită unui driver integrat.

Cele mai recente serii, așa-numitele „Enhanced” și „Enhanced Mid-Range” (12F1xxx, 16F1xxx, 18F1xxx) măresc în continuare numărul de periferice disponibile: PIC 16F1769, de exemplu, adaugă DAC-uri , celule logice programabile, amplificatoare integrate operațional pe DIE, detectoare cu trecere zero și capacitatea de a furniza mai mult curent pe I / O, totul pentru a reduce numărul de piese și, prin urmare, costul total al proiectului.

Instrucțiuni

Setul de instrucțiuni PIC include 33 în versiunile cu consum redus și până la 77 în cele mai performante. Pentru executare, fiecare instrucțiune durează 4 cicluri de ceas , cu excepția instrucțiunilor care implică un salt în interiorul memoriei ( GOTO , CALL , RETLW ), care durează 8 cicluri; în versiunile recente există alte instrucțiuni care durează 8 cicluri, precum cele de transfer de date între memorie și memorie ( MOVFF ).

Arhitectura internă

Arhitectura este de tip Harvard cu autobuze separate; autobuzele de date și control sunt de 8 biți , în timp ce instrucțiunile au un format de 12, 14, 16 sau 32 de biți.

În cele mai recente versiuni, a fost implementată o arhitectură pe 16 biți sau pe 32 de biți. Există, de asemenea, magistrala de tip stack care începe de la 9 biți și mai mult.

Amintiri

Datorită arhitecturii RISC , unde adresa de stocare sau salt este inclusă în instrucțiune pe lângă semnificație, memoria este segmentată. Pentru a schimba segmentul utilizat este necesar să acționați pe registre speciale, ceea ce complică programarea PIC folosind limbajul de asamblare , dar nu și cel cu limbaje de nivel înalt.

RAM

RAM are o lățime de 8 biți și o adâncime variind de la câțiva octeți (25 în PIC16C5x) până la câțiva kilobyți .

De program

Lățimea cuvântului program variază de la 12 biți (de exemplu, în PIC16C54) la 14 biți (de exemplu, în PIC16F628) la 16 biți (de exemplu, în PIC18F4520). Adâncimea sa variază de la 512 octeți la 128 kibibiți (KiB).

Grămadă

Stiva este un tip de memorie, separată de cea principală, caracterizată printr-o anumită metodă de acces ( LIFO ). Este echipat cu propriul autobuz a cărui adâncime merge de la 2 poziții la 8 poziții și ajunge la 31 din PIC-urile din seria 18. Lățimea sa începe de la 9 biți.

EEPROM

În versiunile cu memorie flash poate exista o memorie internă de tip EEPROM accesibilă ca și cum ar fi un periferic pentru a putea stoca date care, dacă nu sunt șterse explicit, sunt păstrate timp de cel puțin 40 de ani. Capacitatea sa variază de la 64 la 1024 octeți .

Periferice

Prezența perifericelor pe cip este unul dintre aspectele care fac diferența între un microprocesor și un microcontroler . În PIC pornim de la I / O digitale simple pentru a ajunge la funcții complexe trecând printr-o varietate considerabilă de alte funcții.

I / O paralel

Funcția de intrare și ieșire a datelor digitale a fost prima funcție implementată. În PIC-uri este împărțit în porturi de 8 sau mai puțini biți fiecare. Fiecare bit poate fi programat ca intrare sau ca ieșire individual.

În unele cazuri, este posibil să se activeze rezistențe interne (slab pull-up) pentru a facilita conexiunea cu butoane și comutatoare.

Noile PIC au, de asemenea, celule logice programabile, cum ar fi un CPLD mic.

I / O serie

Poate exista o mare varietate de porturi seriale: I²C , USART , SPI , CAN / LIN, USB și Ethernet .

I / O analog

Există PIC-uri cu comparatoare , ADC- uri , DAC-uri , generatoare de rampă (PRG), detectoare de trecere zero (ZCD), generatoare de forme de undă complementare (CWG / COG), amplificatoare operaționale integrate și multe altele.

PWM

Pot exista mai multe canale PWM de obicei 10 sau 12 biți.

Temporizator

Cel puțin un temporizator de 8 biți este implementat pe toate versiunile. Acesta atinge până la 5 temporizatoare cu lățimi de 8 sau 16 biți. Un cronometru special este, de asemenea, implementat pe toate, numit WDT ( Watch Dog Timer ), care este utilizat (dacă este utilizat) pentru a reporni microcontrolerul în cazul blocării programului. Cronometrul funcționează pe baza frecvenței de lucru a PIC și / sau poate utiliza, printr-un pin special, unul diferit de cel de lucru printr-un oscilator extern. Mai mult, fiecare temporizator poate fi asociat cu un divizor de frecvență integrat numit PRESCALER, care împarte frecvența de lucru la: 2, 4, 8, 16, 32, 64, 128, 256 de ori.

Particularitățile arhitecturii

RAM este tratat total ca și cum ar fi un registru și fiecare dintre membrii săi se numește registru de fișiere sau pur și simplu fișier .
Nu există un acumulator real, dar un registru numit W (Registrul de lucru) și rezultatele tuturor operațiilor aritmetice logice pot fi plasate fie în operandul fișierului, fie în W.

Compilatoare cu limbi avansate

PIC-urile sunt în general programate în C sau în Asamblare , acestea din urmă fiind comune mai ales cu PIC-uri de generație mai veche sau, mai general, cu versiuni cu o memorie redusă sau adâncimea stivei.

Microchip oferă compilatoare oficiale pentru ambele limbi: MPASM, XC8, XC16, XC32, integrate cu MPLAB X IDE. Mediul de dezvoltare, compilatoarele și driverele de programare sunt acum disponibile pentru Windows , MacOS și Linux [1] .

În orice caz, PIC are o lungă tradiție de compilatoare terțe atât pentru C (MikroElektronica, CCS), cât și pentru limbaje mai puțin „canonice” din punctul de vedere al programării încorporate, cum ar fi BASIC sau Pascal .

Există, de asemenea, compilatoare open source: SDCC și Jal , precum și propriul XC32 al Microchip.

Notă

  1. ^ MPLAB- X IDE | Microchip Technology Inc. , la www.microchip.com . Adus la 28 aprilie 2016 .

Elemente conexe

Alte proiecte

linkuri externe

Controlul autorității LCCN (EN) sh2017003126 · GND (DE) 4571742-4
Informatică Portal IT : accesați intrările Wikipedia care se ocupă cu IT