See also ebooksgratis.com: no banners, no cookies, totally FREE.

CLASSICISTRANIERI HOME PAGE - YOUTUBE CHANNEL
Privacy Policy Cookie Policy Terms and Conditions
PIC (microcontrollore) - Wikipedia

PIC (microcontrollore)

Da Wikipedia, l'enciclopedia libera.

PIC è una famiglia di circuiti integrati a semiconduttore con funzioni di microcontrollore.

Microchip Technology non usa il termine PIC come un acronimo; il suo nome aziendale è: "PICmicro". Anche se generalmente sta per "Programmable Interface Controller", il suo primo produttore la "General Instrument" usava l'acronimo per "Programmable Intelligent Computer".
Inizialmente sviluppato nel 1975 è in grado di svolgere un set di istruzioni ridotto (RISC), la versione più piccola ha 33 istruzioni assembly.

PIC1655A della General Instrument
PIC1655A della General Instrument

Indice

[modifica] Versioni

Vari PIC finestrati
Vari PIC finestrati

Nell'arco del tempo ne è stata resa disponibile una ampia varietà di versioni, diverse sia come tecnologia costruttiva, come forma fisica (numero di piedini) che come quantità o tipo di memoria, oltre alle funzioni di ingresso uscita.
Ne esistono versioni con programma su ROM mascherata, quindi non riprogrammabili, versioni CMOS programmabili una sola volta OTP, versioni EPROM con finestra per cancellazione tramite raggi UV e versioni con memoria flash.
Le versioni CMOS hanno all'interno del nome del componente una C (es.PIC16C505), le versioni ROM hanno CR (es.PIC16CR57A) e le versioni flash hanno una F (es.PIC18F452).
La serie C è ormai obsoleta per cui le versioni più usate sono quelle con memoria di tipo FLASH, che si possono programmare tantissime volte in breve tempo.
Il PIC più conosciuto è il PIC16F84, è stato sostituito dal 16F627, del quale è quasi completamente compatibile, inoltre al suo interno ospita numerosissime periferiche come l'USART, 3 temporizzatori e 2 comparatori. Inoltre ha anche un oscillatore interno e le porte OSC1 e OSC2, possono essere usate come ingressi o uscite (RA6, RA7). Un'ultima cosa, la porta di reset/programmazione (MCLR), se non serve può essere utilizzata come ingresso generico (ma non come uscita).
Con la stessa piedinatura del 16F84 oltre al già citato 627 ci sono i 628, 648, 818 e 819. Poi ci sono altre versioni simili, ma con maggiori piedini di ingresso e di uscita ad esempio le versione 16F876 e 16F877.
Le versioni viste finora lavorano su dati a 8 bit ma vi sono anche versioni a 16 e 32 bit come le famiglie dsPIC30F, dsPIC33F, PIC24F e PIC24H a 16 bit e la famiglia PIC32MX a 32 bit.

[modifica] Istruzioni

Il set di istruzioni del PIC ne comprende 33 nelle versioni di bassa potenza e fino a 77 in quelli con prestazioni più elevate. Ogni istruzione per essere eseguita impiega 4 cicli di clock. Tranne le istruzioni che comportano un salto all'interno della memoria (GOTO, CALL, RETLW) che impiegano 8 cicli, nelle versioni recenti vi sono altre istruzioni che impiegano 8 cicli come quelle di trasferimento dati tra memoria e memoria (MOVFF).

[modifica] Architettura interna

L'architettura è di tipo Harvard a bus separati; i bus dati e controllo sono a 8 bit le istruzioni hanno un formato a 12, 14 o 16 bit.

Nelle ultime versioni è stata implementata un'architettura a 16 bit. Esiste anche il bus dello stack a partire da 9 bit in su.

[modifica] Memorie

A causa dell'architettura RISC, dove nell'istruzione oltre al significato è compreso anche l'indirizzo di memorizzazione o di salto, la memoria viene segmentata. Per cambiare segmento in uso occorre agire su appositi registri, fatto questo che complica la programmazione dei PIC tramite linguaggio assembly piuttosto che tramite linguaggi di alto livello.

[modifica] RAM

La RAM ha una larghezza di 8 bit e una profondità che varia da pochi byte (25 nei PIC16C5x) fino a qualche kilobyte.

[modifica] Di programma

La larghezza della parola di programma varia da 12 bit (ad esempio, nel PIC16C54) a 14 bit (ad esempio, nel PIC16F628) a 16 bit (ad esempio, nel PIC18F4520).
La sua profondità varia da 512 byte a 128 kibibyte (KiB).

[modifica] Stack

Lo stack è un particolare tipo di memoria, separata da quella principale, caratterizzata da un particolare metodo di accesso (LIFO), con un suo bus la cui profondità parte dalle 2 posizioni passa per 8 posizioni e giunge alle 31 nei PIC della serie 18. La sua larghezza parte da 9 bit.

[modifica] EEPROM

Nelle versioni con memoria flash può essere presente una memoria interna di tipo EEPROM accessibile come fosse una periferica per potervi memorizzare in maniera indelebile (minimo 40 anni) dei dati. La sua profondità varia da 64 a 1024 byte.

[modifica] Periferiche

La presenza di periferiche a bordo del chip è quella che fa la differenza tra un microprocessore ed un microcontrollore. Nei PIC si parte da dei semplici I/O digitali per arrivare a funzioni complesse passando attraverso una notevole varietà di altre funzioni.

[modifica] I/O paralleli

La funzione di ingresso e uscita di dati digitali è stata la prima funzione implementata. Nei PIC è divisa in porte da 8 o meno bit ognuna. È possibile programmare ogni bit come ingresso o come uscita singolarmente.
In alcune versioni è possibile avere degli ingressi con conversione analogico digitale (ADC) da 10 o 12 bit. In altre gli ingressi analogici vengono diretti a dei comparatori. Se non bastano le porte di un PIC si possono aggiungere infinite porte usando dei registri a scorrimento, e facendo lo shift di un BYTE, WORD da una sola porta. Volendo con un PIC16F84, che ha 13 porte, se ne possono aggiungere infinite.

[modifica] I/O seriali

Possono essere presenti grande varietà di porte seriali: I²C, USART, SPI, CAN, USB.

[modifica] PWM

Si arriva fino a 5 canali PWM a 10 bit.

[modifica] Timer

Su tutte le versioni e implementato almeno un temporizzatore da 8 bit. Si arriva fino a 5 temporizzatori con larghezze a 8 o 16 bit. Su tutte è inoltre implementato un temporizzatore speciale chiamato WDT (Watch Dog Timer), serve (se utilizzato) a far ripartire il microcontrollore in caso di blocco del programma. Il timer funziona in base alla frequenza di lavoro del PIC e/o può esserne data, tramite un apposito piedino, una diversa da quella di lavoro tramite un oscillatore esterno. La funzione timer ha inoltre, la possibilità di avere un divisore di frequenza integrato chiamato PRESCALER, esso divide la frequenza di lavoro di: 2, 4, 8, 16, 32, 64, 128, 256 volte

[modifica] Particolarità

La RAM è trattata totalmente come fosse un registro ed ogni suo membro è chiamato file register o più semplicemente file.
Non esiste un accumulatore vero e proprio ma un registro chiamato W (Working register) e i risultati di tutte le operazioni logico aritmetiche possono essere messi indifferentemente nel file operando o in W.

[modifica] Compilatori di terze parti

Attualmente sono stati creati nuovi linguaggi per semplificare la programmazione di questi microcontrollori. Sono disponibili infatti molti compilatori di linguaggi con sintassi simili al BASIC oppure compilatori di C. Esistono anche linguaggi gratuiti come Jal e SDCC.

[modifica] Voci correlate

[modifica] Collegamenti esterni

16x84] Guida per principianti per PIC 16x84 ed elettronica.


aa - ab - af - ak - als - am - an - ang - ar - arc - as - ast - av - ay - az - ba - bar - bat_smg - bcl - be - be_x_old - bg - bh - bi - bm - bn - bo - bpy - br - bs - bug - bxr - ca - cbk_zam - cdo - ce - ceb - ch - cho - chr - chy - co - cr - crh - cs - csb - cu - cv - cy - da - de - diq - dsb - dv - dz - ee - el - eml - en - eo - es - et - eu - ext - fa - ff - fi - fiu_vro - fj - fo - fr - frp - fur - fy - ga - gan - gd - gl - glk - gn - got - gu - gv - ha - hak - haw - he - hi - hif - ho - hr - hsb - ht - hu - hy - hz - ia - id - ie - ig - ii - ik - ilo - io - is - it - iu - ja - jbo - jv - ka - kaa - kab - kg - ki - kj - kk - kl - km - kn - ko - kr - ks - ksh - ku - kv - kw - ky - la - lad - lb - lbe - lg - li - lij - lmo - ln - lo - lt - lv - map_bms - mdf - mg - mh - mi - mk - ml - mn - mo - mr - mt - mus - my - myv - mzn - na - nah - nap - nds - nds_nl - ne - new - ng - nl - nn - no - nov - nrm - nv - ny - oc - om - or - os - pa - pag - pam - pap - pdc - pi - pih - pl - pms - ps - pt - qu - quality - rm - rmy - rn - ro - roa_rup - roa_tara - ru - rw - sa - sah - sc - scn - sco - sd - se - sg - sh - si - simple - sk - sl - sm - sn - so - sr - srn - ss - st - stq - su - sv - sw - szl - ta - te - tet - tg - th - ti - tk - tl - tlh - tn - to - tpi - tr - ts - tt - tum - tw - ty - udm - ug - uk - ur - uz - ve - vec - vi - vls - vo - wa - war - wo - wuu - xal - xh - yi - yo - za - zea - zh - zh_classical - zh_min_nan - zh_yue - zu -