Il PIC

Che cosa hanno in comune un televisore recente, un forno a microonde nuovo e una macchina fotografica moderna?
Non molto, rispondereste voi... e non avreste tutti i torti. Tuttavia se confrontate questi apparecchi con il vecchio televisore del nonno, noterete che al posto dei vecchi pulsantoni vi sono dei pulsantini a sfioramento. Non ci sono più nemmeno le molle di ritorno che fanno staccare i tasti quando voi ne premete un'altro; i tasti, infatti, non si occupano più di interrompere un collegamento elettrico, ma di inviare un impulso ad un microchip, che si occuperà poi di "intervenire" sul circuito in modo opportuno.
La prima differenza visibile è che questi pulsanti sono più piacevoli da utilizzare, ma non funzionano senza alimentazione (le vecchie macchine fotografiche meccaniche, invece, usavano le pile solo per far funzionare la fotocellula). Altra differenza, però, è che possono essere multifunzione, cioè, in base alla sequenza di tasti premuti, possono permettere di compiere operazioni differenti: il tasto "OK" del telefonino serve per avviare la comunicazione, ma anche per confermare l'immissione del numero nella rubrica o l'inserimento del corretto PIN...
Gli apparecchi commerciali, hanno in genere dei chip specializzati nel compiere queste funzioni (a volte un unico chip può governare il funzionamento dell'intero apparecchio); si ricorre a questo espediente soprattutto per ragioni di compattezza o di prestazioni; il costruttore fai-da-te, invece, dispone di alcuni chip programmabili; a questa categoria appartengono i PIC della Microchip.
 

Se osserviamo la struttura interna di un PIC (in figura uno dei più semplici, il 16F84)


possiamo assimilare questo dispositivo ad un vero e proprio microcomputer (certamente in grado di eseguire soltanto un numero limitato di semplici istruzioni)!
Distinguiamo una EEPROM (cioè una memoria non volatile) destinata a contenere i dati e il programma (come il disco rigido), dei registri per uso generico, con velocità di accesso ai dati elevata ma incapaci di mantenere le informazioni senza alimentazione, destinati a contenere i dati di lavoro (esattamente come la RAM), una Unità Aritmetico-Logica (ALU) incaricata di effettuare i calcoli e dei registri specializzati in alcune funzioni, entrambi caratteristici di tutti i microprocessori, oltre, naturalmente, delle porte di comunicazione con l'esterno. Esistono anche un oscillatore, un circuito che "congela" quasi tutte le attività del PIC in caso di mancato utilizzo, al fine di ridurre quasi a zero il consumo energetico (utilissimo nell'impiego come telecomando) e un circuito totalmente indipendente dalle altre funzioni che viene continuamente sollecitato dal programma in esecuzione, pena il reset dell'intero dispositivo (in tal modo il PIC resetta automaticamente il programma in caso di blocchi involontari). Un microcomputer nello spazio di qualche centimetro quadro; stupefacente!
La differenza fra le varie versioni di PIC in commercio, consistono essenzialmente nella capienza della memoria interna, nel numero di porte programmabili e nella presenza al suo interno di dispositivi atti a svolgere particolari operazioni (ad esempio un convertitore analogico- digitale).
Disporre di un dispositivo così sofisticato (al costo di pochi euro) in uno spazio così piccolo è già abbastanza sbalorditivo, ma la tecnologia moderna si è spinta molto oltre... Dei circuiti anche abbondantemente più complessi di questi e delle memorie esterne aggiuntive sono state integrate in chip non più grandi della SIM del telefonino (che per altro è essa stessa molto simile ad un PIC) e sono commercializzate in formato "carta di credito"; per esempio la cosiddetta "Goldcard", chiamata così perché è quasi sempre colorata dorata, integra al suo interno un PIC 16F84 e una EEPROM esterna (esterna al PIC, ma sempre integrata) 24C16.
Certamente non tutto ciò che si fa con i dispositivi separati si può anche fare con la card, sia perché i chip sono già interconnessi fra loro, sia perché il numero di piedini (e quindi di porte di comunicazione) disponibili all'esterno è alquanto limitato (la stessa programmazione della card deve essere effettuata seguendo una procedura particolare, in quanto la eeprom non è direttamente accessibile dall'esterno).

La programmazione del PIC si effettua in linguaggio Assembler, il che vuol dire che dovrete conoscere a fondo la struttura interna del dispositivo.
Un'ottima (semplice e completa) guida in italiano per il 16F84 è il "Corsopic by Example" che trovate sul sito http://www.tanzilli.com (in formato HTML... ma in giro per la rete lo trovate anche in formato PDF con il nome di "Corsopicbybiosat").
Altra ottima guida, in inglese, è disponibile sul sito: http://www.mikroelektronika.co.yu
Una volta imparato a programmare il PIC 16F84, per gli altri PIC farete riferimento ai dati tecnici distribuiti dalla casa http://www.microchip.com , dove troverete anche il compilatore MPASM (gratuito) e l'ambiente di sviluppo MPLABIDE (comprendente editor, compilatore asm, simulatore, supporto per compilatori aggiuntivi ecc..).
Un ottimo emulatore di PIC è invece il PicSimulatorIDE (commerciale) sul sito: http://www.oshonsoft.com
Poiché anche le operazioni matematiche si eseguono svolgendo apposite operazioni tra registri ( a differenza dei linguaggi ad alto livello non è possibile dire "somma" o "sottrai") sappiate che su internet si trovano già delle librerie matematiche pronte per l'uso! (alcune anche sul sito della microchip).
Sebbene i Microchip siano i più diffusi, esistono numerosi microcontrollori prodotti da diverse altre case (con nomi diversi da "PIC"). Se non trovate dei manuali specifici per imparare l'assembler, lo studio del PIC16F84 è in ogni caso un ottimo punto di partenza.
È anche possibile scrivere i programmi in C o in una variante del Basic (un compilatore picbasic è incluso anche nell'emulatore sopra citato); Personalmente consiglio questa modalità di programmazione solo a chi conosce molto a fondo i rispettivi linguaggi; i listati per PIC scritti in C, che ho visto in rete, tra l'altro, ricalcano moltissimo la struttura del linguaggio assembler, il che vuol dire che il livello di difficoltà non è molto differente. MPLAB, comunque mette a disposizione delle pseudo-istruzioni di alto livello come IF, WHILE, MACRO che necessitano, per essere compilate correttamente, di opportuni settaggi del compilatore.

 Per caricare il programma sul PIC si utilizza un dispositivo da connettere alla porta seriale del PC il cui nome tecnico è TE-20... più conosciuto però con il nome di Ludipipo (con zoccoletto in grado di accettare PIC differenti) o Multipippo (quest'ultimo in grado di caricare in genere solo il 16F84 ed alcune EEPROM). La versione IsoMultipippo è dotato anche di lettore di Smart Card, capace di caricare anche il PIC integrato nella vostra Gold (ma non la eeprom "esterna"). Occorre anche un apposito programma di comunicazione da installare sul PC (in rete ce n'è tantissimi; il più completo, anche se meno intuitivo da usare è IC-PROG)
 


Bibliografia:


Semplici progetti per il PIC