Indice |
Introduzione
Se state leggendo questo articolo lo state facendo (probabilmente)guardando lo schermo di un computer portatile, fisso, netbook o tablet che sia. Tutti saprete che le componenti principali di questo strumento sono ben conosciute: scheda madre, Ram, Processore, HardDisk e scheda video. Sapete anche a cosa serve ognuno di questi componenti. Bene, pensate ora di non avere tutti questi componenti riuniti in un unico chip. Questo è il microprocessore!
Il microprocessore è un insieme intelligente che al suo interno racchiude un processore in grado di effettuare i calcoli, una memoria non volatile che ha registrate tutte le istruzioni di funzionamento del programma, una memoria volatile che serve per le variabili e i dati necessari al funzionamento del programma e una serie di periferiche che gli permettono di comunicare con il mondo esterno. Il tutto in pochi centimetri quadrati.
Di questi microprocessori ne esistono infiniti modelli, più o meno potenti, specifici per applicazioni particolari, in grado di sostituire un computer o talmente piccoli da renderli perfetti per applicazioni specifiche donando una versatilità impensabile con solo circuiteria tradizionale.
Le case Produttrici
Avvicinandoci a questo mondo abbiamo davanti varie scelte, ma le più conosciute e con una maggiore disponibilità di materiale in rete sono 2: Microchip e AVR sono le 2 aziende di riferimento.
- è la scelta che ho fatto io, forse la più grande delle 2 e con una grandissima disponibilità di dispositivi. Sono disponibili microprocessori che spaziano dalle applicazioni per implementare pulsanti ai processori a 32 bit per soluzioni software complicatissime come la gestione di moltissime periferiche e schermi touchscreen.
- è la sua più diretta concorrente. Anche lei propone una gamma di prodotti completa, aggiungendo però prodotti basati su altre architetture. Nell'ambito hobbystico è molto conosciuta grazie al progetto italiano della piattaforma Arduino. Quest'ultima offre, a prezzi ragionevoli, una piattaforma già fatta e testata e un ambiente di sviluppo apposito che implementa un linguaggio leggermente semplificato, e delle librerie adatte a quasi qualsiasi utilizzo. Il tutto con il supporto di una forte e compatta community che propone continuamente nuove idee e dove poter trovare programmi o pezzi di programma già fatti e circuiti pronti per una miriade di applicazioni.
Le famiglie di prodotti di entrambe le aziende si possono suddividere tramite la loro complessità espressa in bit, cioè di quanti bit alla volta possono eseguire i calcoli, o il numero di bit dei numeri di cui viene offerto il supporto nativo. Possiamo quindi dividerli in queste categorie, ordine di potenza di calcolo si intende:
- 8 bit
- 16 bit
- 32 bit
Più in Dettaglio
Visto che questa è la prima lezione di un corso / tutorial che tratterà i PIC, microprocessore della microchip, andiamo ad analizzare nel dettaglio solamente questi dispositivi. Le famiglie che possiamo individuare sono le seguenti:
Le prime 4 famiglie (10F-->18F) sono tutti dispositivi a 8 bit. Le successive 4, sono famiglie che dispongono di processori a 16 bit in cui le famiglie dsPIC sono specifiche per l'implementazine di filtri digitali. Infine PIC 32F sono i più potenti tra i vari PIC.
Quale Scegliere?
Se avete già girato in rete alla ricerca di tutorial che vi aiutino ad imparare come utilizzare i microprocessori, dovreste aver notato che il pic "nave-scuola" per eccellenza è il 16F84. Questo è, però, un modello obsoleto, lento senza molte periferiche.
Negli ultimi tempi la famiglia dei PIC si è allargata aggiungendo nuovi modelli e nuove famiglie facendo scendere i prezzi dei fratelli maggiori. Risultato: Vi consiglio di partire immediatamente con la serie 18F!
Questi ultimi hanno 2 grandi vantaggi:
- sono più potenti sia come processore, che come periferiche
- possiedono un ambiente di sviluppo ottimizzato per la programmazione tramite linguaggio C
L'unione di questi fattori con il loro prezzo ridotto rispetto alla serie 16F li rende i migliori candidati per la piattaforma di apprendimento!
Sui linguaggi di programmazione se ne parlerà in un altro articolo, perché esula dall'obbiettivo di questo argomento; vorrei invece introdurvi alle caratteristiche HardWare dei pic per facilitarvi le scelte e rendervi evidenti a colpo d'occhio le caratteristiche di uno rispetto ad un altro.
Dove trovo l'elenco dei modelli?
Gli strumenti che "mamma" microchip vi mette a disposizione sono molti ed è facile perdersi: sostanzialmente gli strumenti principali sono 2 la tabella riassuntiva e la ricerca per caratteristica.
Andando alla pagina della categoria degli 8 BIT nel menù a sinistra trovate strumenti importanti:
- Alla voce Interactive Product Selection Tool troverete uno strumento per trovare microcontrollore che maggiormente soddisfa le vostre esigenze nella famiglia a 8 bit.
- Selezionando invece la famiglia 18F troverete la Tabella Riassuntiva che vi elenca in maniera chiara tutte le caratteristiche di ogni modello di quella famiglia.
Se nella Tabella Riassuntiva troverete tutte le informazioni che vi servono è però anche vero che non riuscirete a raccapezzarvici se lo utilizzerete per trovare la migliore soluzione. Vi consiglio di dare uno sguardo a tutte le famiglie per trovare le differenze e le peculiarità di tutte le famiglie. Quando saprete quali sono le caratteristiche che il microprocessore dovrà avere andrete ad impostarle negli strumenti di ricerca per ottenere una ristrettissima (si spera) lista di candidati.
- In aiuto a questa ricerca arriva anche il tool di ricerca avanzata di tutti i dispositivi il MAPS: Microchip Advanced Part Selector che mette a disposizione qualche parametro in più anche nella catalogazione per importanza dei risultati.
Le principali Periferiche
Quello che vi serve adesso è capire cosa vogliono dire le varie sigle che troverete nella tabella riassuntiva.
Le voci Principali sono :
- Volume Pricing: da un'indicazione del costo che avrà il micro.Program Memory Kbytes/Kwords: è il quantitativo di memoria a disposizione per memorizzare il programma... maggiormente complesso potrà essere il programma e più cose potrà fare
- RAM: esprime i byte di memoria a disposizione per le variabili. come sopra, più ce n'è maggiori sono le possibilità
- I/O Pins: è il numero di ingressi / uscite a disposizione questo è un numero da controllare per avere abbastanza porte per fare quello che dobbiamo... Meglio controllare adesso che trovarsi senza porte a disposizione nel momento del bisogno!
- Pin Count: è il numero totale di pin.. come vedete alcuni PIN non servono per comunicare col mondo esterno... ad esempio i 2 pin di alimentazione ( V+ e GND)
- Max CPU speed: indica a che velocità può arrivare al massimo la cpu che esegue i calcoli: più è alto maggiore è la velocità di elaborazione
- A/D converters: se presente possiamo effettuare la campionatura di un valore analagico ( la tensione di un potenziometro ad esempio) trasformandola in una informazione digitale elaborabile dal PIC
- Digital Comunication: vi sono elencati i protocolli di comunicazione seriale che è in grado di gestire in hardware, cioè senza che noi dobbiamo occuparci di gestire il protocollo: mooolto più semplice da gestire! :* USB: molti microprocessori hanno la possibilità di comunicare via USB con un computer
- ECCP: esprimono funzionalità avanzate come la gestione del PWM
- Timers: sono dei contatori automatici permettono di contare un periodo di tempo senza alcun nostro intervento e senza disturbare il programma. Sono moolto utili!
- Temperature Range: Se lo utilizzerete in ambienti molto caldi o molto freddi meglio che controlliate che possa funzionare a quelle temperature!
- Voltage Range: a che tensione va alimentato il PIC? di sicuro non a 12V ma alcuni non reggono nemmeno i 5V! Controllate sempre!
- Packages: con che formato viene prodotto? sappiate che i PDIP sono i tipici integrati d montare su basetta millefori o su zoccolino... a meno che non siate a corto di spazio sulla basetta conviene sempre questo formato!
I protocolli seriali
La comunicazione seriale è una tipologia di protocolli che utilizzano l'invio sequenziale dei singoli bit che compongono l'informazione tra 2 dispositivi. Ogni protocollo ha le sue caratteristiche e le sue regole. La potenzialità di un protocollo seriale sta nel fatto che è sufficiente (al limite) un solo filo per trasmettere l'informazione. Anche il protocollo che state utilizzando adesso per navigare su internet è di questo tipo come pure l'usb. Le caratteristiche di ogni applicazione hanno portato a diversi protocolli.
- Per comunicare con il PC troverete molto utile il protocollo RS232 che però va implementato con un chip apposito (MAX232 ad esempio), ma con i nuovi PC sprovvisti di porta parallela viene utilizzato sempre più spesso il protocollo USB;
- per comunicare all'interno della stessa basetta è molto utilizzato il protocollo I2C che richiede soltanto 2 collegamenti e come avete visto è supportato dal nostro PIC necessitando poche istruzioni;
- il protocollo SPI invece è utilizzato per comunicare con le schede di memoria SD.
Il DataSheet
Trovato un dispositivo che faccia al caso nostro è d'obbligo scaricarsi il datasheet ( messo a disposizione gratuitamente e liberamente da Microchip) per controllare alcune informazioni di base. Bisognerebbe controllare sul datasheet la corrispondenza del dispositivo alle nostre necessita facendo un rapido controllo sul numero di tutte le caratteristiche a noi necessarie. Dopodichè si deve passare a studiare un po' più approfonditamente le sue caratteristiche! All'inizio del documento c'è sempre una tabella riassuntiva che mostra la disposizione delle caratteristiche sui rispettivi pin.
Nel momento in cui il modello che maggiormente soddisfa le nostre necessità è stato definito bisogna andare più nello specifico. Quando aprite un datasheet per la prima volta avrete difficoltà ad orientarvi tra le miriadi di voci. Niente panico, controllate i segnalibri del documento PDF e scoprirete che ogni caratteristica è ben individuabile e tutto è organizzato.
Quello che vi propongo adesso è un insieme di consigli e una specie di scaletta che vi permetterà di documentarvi senza perdervi:
- Leggete solo quello che è di interesse per il vostro progetto: se non dovete utilizzare le funzionalità di auto scrittura della memoria di programma perchè dovreste perdere tempo a leggerla? vi confonderebbe solamente le idee!
- Iniziate dalle configurazioni di base del dispositivo
- Come sono distribuite le porte?
- quali sono presenti?
- quali pin sono solamente ingressi?
- quali permettono di funzionare in analogico?
- come faccio a farle diventare digitali?
- Quali sono le porte connesse all’interrupt?
- come devo collegare il MCLR?
- quali hanno le resistenze di Pull-Up?
- e come le abilito se mi servono?
- quali sono i registri di configurazione delle porte?
- quali sono i pin per il collegamento del Quarzo?
- quali sono i valori consigliati per i condensatori che devo usare per collegarlo ( il quarzo) ?
- all’interno del capitolo di un determinato dispositivo, tralasciate tutte quelle informazioni che fanno riferimento a caratteristiche che non utilizzerete.individuate tutti i dispositivi necessari e capitene il funzionamento fino a quando non vi è chiaro, aiutandovi magari con ricerche su internet o chiedendo aiuto alla community
Se riuscirete ad assimilare questo processo di apprendimento troverete le informazioni che vi servono volta per volta in poco tempo e senza perdite di tempo.
Risultati
Con ingegno, conoscenza, abilità e tante tante prove potrete arrivare a realizzare qualcosa di veramente complesso.
Questo video che vi propongo mostra una pennetta usb che interfaccia un accelerometro e un giroscopio per realizzare un joystick reattivo al posizionamento spaziale come i controller della WII, il tutto realizzato con il pic che andremo ad utilizzare in questo tutorial, che non è certo il più potente della gamma!
Links
Per il momento altri articoli li trovate sul mio sito:
Dreamsearcher