Tutorials - PIC

 

Una introduzione ai Microcontroller PIC


Chi è il PIC ?

I PIC sono un prodotto della Microchip Technology, che è una società produttrice di semiconduttori soprattutto microcontrollori, ma anche memorie EEPROM, amplificatori operazionali, dispositivi per comunicazione wireless, per radio frequenza e dispositivi per la gestione dell'alimentazione di potenza. 
 
La sua sede è a Chandler (Arizona). 

I PIC sono un' ampia famiglia di microcontroller da 8 a 32 bit.

PIC, anche se non ufficiale, può essere acronimo di Programmable Interface Controller  o Peripheral Intelligent Controller o simili (il costruttore non ha mai chiarito questo punto) e PIC è diventato un nome più che un acronimo.
Da un unto di vista storico, il predecessore degli attuali PIC è un componente chiamato PIC1650 (Peripheral Interface Controller) e prodotto dalla General Instruments attorno al 1976 come periferica intelligente per il suo sistema di microprocessore CP1600. Circa 10 anni dopo, GI liquida il suo dipartimento microprocessori e il progetto dei PIC passa in gestione alla Microchip (Arizona Microchip), che lo sviluppa fino a fargli assumere l' ampiezza attuale.

Dal punto di vista logico, si tratta di dispositivi di tipo RISC, ovvero con un numero ridotto di istruzioni essenziali (RISC = Reduced Instructions Set - Set di istruzioni ridotto) ed eseguite in un numero ridottissimo di cicli macchina (per la maggior parte uno solo), il che consente prestazioni dell' ordine dei 5-10 MIPS e più.
 Le numerose varianti progettate da Microchip si differenziano tra di loro per il numero di bit (12, 14, 16 che indicano non la lunghezza del dato, ma quella di una istruzione), la quantità di memoria interna e la complessità delle funzioni implementate (generatori di clock, timers, I/O, convertitori AD, PWM, interfacce seriali, I2C, SPI, USB, ecc). 

Inoltre sono state realizzate nel tempo successive evoluzioni, passando da dispositivi inizialmente dotati di memoria OTP (One Time Programmabile - programmabile una sola volta) o EEPROM-UV ai più recenti dotati di memoria Flash riprogrammabile più volte, anche durante il funzionamento. 

Sono disponibili in packages DIP (Dual In-line Pins - il classico chip da inserire su zoccolo o saldare) da 4 a 40 pin, in PLCC e nei vari formati per SMD (Surface Mounting Devices) fino a 80 pin. Ne esistono anche serie che implementano funzioni speciali, come  DSP (Digital Signal Processor).


Perchè i PIC ?

Perchè il PIC, tra tutti i microcontrollers disponibili ?  

Essenzialmente perchè le caratteristiche interessanti di questi dispositivi e i costi accessibili, assieme ad una abile politica commerciale della Microchip, hanno fatto si che i PIC si diffondessero a macchia d' olio e fossero adottati in una miriade di applicazioni. 
Questa diffusione è anche dovuta alla loro relativa facilità di uso, alle buone prestazioni ed alla reperibilità, oltre al fatto che il costruttore ha messo a disposizione in modo gratuito o a basso costo potenti tools di sviluppo, permettendone l' impiego anche in applicazioni dove il numero non è tanto elevato da compensare il costo esorbitante dei sistemi di sviluppo di altri prodotti. 
Questo ne ha favorito l' adozione da parte di una grande massa di hobbisti, che hanno fatto da cassa risonante; basta digitare -PIC-  o -PIC Microchip- o simili su Google o un altro motore di ricerca per ottenere almeno 2.9 milioni di pagine di link.

Per cui, attorno ai PIC abbiamo :

  • ambiente di sviluppo e di programmazione gratis

  • tool di programmazione e debug a costi limitati

  • tools professionali per chi ci deve costruire qualcosa seriamente a costi abbordabili

  • una ampia gamma di linguaggi di programmazione, anche ad alto livello, gratis o basso costo

  • una enorme quantità di persone che lavorano o hanno lavorato su questi microcontrollers, scrivendo milioni di linee di codice che si trovano disponibili in rete

  • moltissimi forum di discussione tra utenti e siti di informazione, corsi propedeutici, ecc

  • centinaia di siti commerciali per l' acquisto di parti, kit, accessori, ecc


E' la scelta migliore ?

Non è una domanda seria !

  • Dal punto di vista delle prestazioni, esistono microcontroller più performanti. 

  • Dal punto di vista del costo esistono famiglie meno costose. 

  • Dal punto di vista della difficoltà di uso esistono sistemi meno ostici. Ecc.

Però, alla domanda si può rispondere che, visto quanto detto al paragrafo precedente, nessun altra famiglia di microcontrollori ha:

  1. la stessa diffusione tra il pubblico e 

  2. lo stesso mix di prestazioni, facilità di reperimento anche per piccole quantità, varietà di modelli, disponibilità, ampiezza del supporto e basso costo. 

Sicuramente un fan di ST6 o di AVR sosterrà che meglio del suo prediletto non c'è altro, ma qui non stiamo trattando di fazioni o tifoserie, bensì di come affrontare razionalmente la scelta di oggetto da utilizzare per l' apprendimento.
Comunque, si può fare un riassunto dei pro e dei contro :

PRO

  • sono ragionevolmente economici 

  • essendo dotati di flash, un solo chip è riutilizzabile in molte sperimentazioni

  • sono diffusi e si trovano con facilità anche per quantità unitarie

  • il costruttore mette a disposizione gratuitamente un potente ambiente di sviluppo, MPLAB, comprensivo di Macro Assembler, simulatore, linker, ecc.

  • tools di sviluppo, emulatori, programmatori, breadboards , anche professionali, sono offerti a costi più che ragionevoli : in rete è disponibile una grandissima scelta 

  • sono disponibili da varie sorgenti compilatori di linguaggi ad alto livello, come C, BASIC e Pascal

  • molti tools di sviluppo funzionano anche in ambiente Linux e non solo per Windows

  • in rete si trova una massa impressionante, in larga parte gratuita, di esempi di codice, corsi, application, progetti, utilities, forum

  • università, corsi professionali, istituti tecnici, usano i PIC per istruzione

  • esistono numerosissimi modelli di PIC con le più varie disponibilità di risorse di memoria e I/O tra cui scegliere

  • esistono numerosi PIC con la stessa piedinatura (pin to pin compatibili), anche appartenenti a famiglie diverse per cui ci si può sbizzarrire senza dover cambiare ogni volta hardware 

  • gli I/O possono erogare 25mA , quindi comandare direttamente LED e piccoli relè senza bisogno di altri integrati esterni,

  • sono interni clock, reset, comparatori, A/D, PWM, port di comunicazione, così che il chip può lavorare praticamente da solo o con pochissimo hardware di contorno

  • svolgono la maggior parte delle istruzioni in un solo ciclo e quindi sono efficienti e veloci

  • spostare un programma da un chip ad un' altro richiede un limitato numero di modifiche

  • sono disponibili in SMD, ma anche in DIP, adatti quindi sia per produzione che per sviluppo

  • sono disponibili anche per range di temperatura automotive  -40/+125C

  • esistono famiglie dotate di DSP, per cui ci si può addentare anche in questo campo operando sulle stesse basi dei PIC comuni

CONTRO

  • chi arriva da altri processori può trovare ostica la struttura dei PIC (nei Mid-range divisione dei registri a banchi e mancanza di un sistema pratico per sopperire a questo, indirizzamento indiretto poco funzionale, mnemonici delle istruzione diversi da quelli classici 8051/6800, mancanza di stack, ecc.)

  • tendenza dei progettisti a mescolare, in modo per lo meno bizzarro, nello stesso registro flag di segnalazione e bit di comando e di variare posizione/funzione ad alcuni registri nelle diverse famiglie , il che non rende sempre immediato tanto al logica d'uso quanto il trasferimento da un chip all' altro

  • come tutti i chip complessi, di qualsiasi produttore, anche alcuni PIC hanno bugs hardware, solitamente molto marginali, ma se ci si incappa... 
    Per cui vale sempre la pena di leggere i Silicon Errata del costruttore e i vari suggerimenti riguardo ai più comuni gotchas in cui si può inciampare.

  • spostare un programma da un chip ad un' altro richiede poche modifiche, ma bisogna comunque farle e se non sono chiare le differenze l' impresa diventa complessa

A conti fatti, i pro sono ampiamente superiori ai contro: la prevalenza della diffusione del PIC riscontrabile in rete rispetto agli altri microcontroller dovrebbe essere sufficientemente indicativa del fatto che chi vuole cominciare ad avvicinarsi a questi dispositivi difficilmente trova una via migliore, sopratutto per la disponibilità di materiale on line (tra cui anche questo corso...). 

La scelta di altri sistemi, certamente più efficienti o complessi o economici in produzione di quantità, richiede strumenti e risorse per lo sviluppo molto più costosi e potrà essere dettato da altri tipi di necessità, ad esempio per applicazioni che sfruttano caratteristiche specifiche non presenti nei PIC.


Vediamo maggiori dettagli.


 

 

Copyright © afg. Tutti i diritti riservati.
Aggiornato il 01/04/13.