I PIC (sul significato originale dell'acronimo non c'è consenso: secondo alcuni sta per Peripheral Interface Controller altri invece propongono Programmable Interface Controller o anche Programmable Intelligent Computer) costituiscono una delle famiglie più diffuse e usate di microcontrollori. Si tratta di microcontrollori con architettura Harvard prodotti da Microchip Technology. Sono molto popolari sia in ambito industriale che nelle applicazione hobbystiche per il basso costo e la grande disponibilità di software e di strumenti di sviluppo disponibili.
La seguente tabella mostra alcune fra le diverse famiglie di PIC esistenti sul mercato, suddivise in base alla loro architettura interna e prestazioni:
Family | ROM [Kbytes] | RAM [bytes] | Pins | Clock Freq. [MHz] | A/D Inputs | Resolution of A/D Converter | Compar- ators | 8/16 – bit Timers | Serial Comm. | PWM Outputs | Others |
Base-Line 8 - bit architecture, 12-bit Instruction Word Length | |||||||||||
PIC10FXXX | 0.375 - 0.75 | 16 - 24 | 6 - 8 | 4 - 8 | 0 - 2 | 8 | 0 - 1 | 1 x 8 | - | - | - |
PIC12FXXX | 0.75 - 1.5 | 25 - 38 | 8 | 4 - 8 | 0 - 3 | 8 | 0 - 1 | 1 x 8 | - | - | EEPROM |
PIC16FXXX | 0.75 - 3 | 25 - 134 | 14 - 64 | 20 | 0 - 3 | 8 | 0 - 2 | 1 x 8 | - | - | EEPROM |
PIC16HVXXX | 1.5 | 25 | 18 - 20 | 20 | - | - | - | 1 x 8 | - | - | Vdd = 15V |
Mid-Range 8 - bit architecture, 14-bit Instruction World Length | |||||||||||
PIC12FXXX | 1.75 - 3.5 | 64 - 128 | 8 | 20 | 0 - 4 | 10 | 1 | 1 - 2 x 8 1 x 16 | - | 0 - 1 | EEPROM |
PIC12HVXXX | 1.75 | 64 | 8 | 20 | 0 - 4 | 10 | 1 | 1 - 2 x 8 1 x 16 | - | 0 - 1 | - |
PIC16FXXX | 1.75 - 14 | 64 - 368 | 14 - 64 | 20 | 0 - 13 | 8 or 10 | 0 - 2 | 1 - 2 x 8 1 x 16 | USART I2C SPI | 0 - 3 | - |
PIC16HVXXX | 1.75 - 3.5 | 64 - 128 | 14 - 20 | 20 | 0 - 12 | 10 | 2 | 2 x 8 1 x 16 | USART I2C SPI | - | - |
High-End 8 - bit architecture, 16-bit Instruction Word Length | |||||||||||
PIC18FXXX | 4 - 128 | 256 - 3936 | 18 - 80 | 32 - 48 | 4 - 16 | 10 or 12 | 0 - 3 | 0 - 2 x 8 2 - 3 x 16 | USB2.0 CAN2.0 USART I2C SPI | 0 - 5 | - |
PIC18FXXJXX | 8 - 128 | 1024 - 3936 | 28 - 100 | 40 - 48 | 10 - 16 | 10 | 2 | 0 - 2 x 8 2 - 3 x 16 | USB2.0 USART Ethernet I2C SPI | 2 - 5 | - |
PIC18FXXKXX | 8 - 64 | 768 - 3936 | 28 - 44 | 64 | 10 - 13 | 10 | 2 | 1 x 8 3 x 16 | USART I2C SPI | 2 | - |
La sigla di riconoscimento contiene tre X (es. PIC16FXXX) che corrispondono a una sigla numerica (es. PIC16F690): la lettera F indica la presenza di una EEPROM Flash sull'integrato, cioè di una memoria non volatile e riscrivibile elettricamente per contenere il programma (questo è ormai di gran lunga il caso più comune). Gli integrati appartenenti alla stessa serie si differenziano fra loro per la quantità di memoria RAM e ROM disponibile, per la frequenza di clock di funzionamento, per la dotazione circuitale e per il costo.
La tabella precedente suddivide le famiglie in base alla lunghezza di una parola di istruzione (Instruction Word Lenght) che, a seconda dei casi, vale 12, 14 o 16 bit.
Il set di istruzioni del PIC comprende 33 istruzioni nelle versioni base 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 che impiegano 8 cicli.
L'architettura interna è di tipo Harvard a bus separati; i bus dati e controllo sono a 8 bit le istruzioni hanno, a seconda del modello del PIC, un formato a 12, 14, 16 o 32 bit.
La memoria RAM, con parole da 8 bit, varia, a seconda del modello, da pochi byte fino a qualche chilobyte. La EEPROM, per la memorizzazione del programma, varia da alcune centinaia di byte fino ad alcuni chilobyte e può essere facilmente cancellata e riscritta con apposito software.
La RAM è trattata internamente come fosse costituita da un insieme di registri ed ogni suo membro è chiamato file register o più semplicemente register. 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 registro operando o in W, come vedremo meglio in seguito.
Nei capitoli successivi tratteremo più nel dettagli l'architettura e il funzionamento dei PIC della serie 16FXXX e in particolare del PIC16F690 (che appartiene alla categoria dei Mid-Range PIC secondo la classificazione di MicroChip). La maggior parte delle considerazioni che verranno fatte sono però per lo più valide anche per gli altri PIC.
Sito realizzato in base al
template offerto da
http://www.graphixmania.it