Tutorials - PIC18 by Data Sheet

 

Introduzione


Cercando sulla rete, si troverà una massa di informazioni, siti, applicazioni, tutorial, veramente notevole, per i processori di Microchip. E il più gettonato è il PIC16F84

Una ricerca generica con Google con la semplice richiesta "PIC16F84" produce più di 150.000 link.

Un sito di riferimento riporta addirittura la seguente frase:
"The simplest chip to program, find code for, learn on is the 16F84".

Sono  buone ragioni per scegliere oggi questo componente ?

In effetti non più ! Vediamo perchè.

Sicuramente è un "simplest chip" e PIC16F84 è un ottimo prodotto, ma è stato realizzato molti anni fa.
Successore del PIC16C84, era uno dei primi embedded riprogrammabile, grazie alla memoria Flash, e quindi ideale per studio, prototipi, hobbistica: riprogrammabile vuol dire poter essere programmato più volte, e quindi servire a molti esperimenti, e senza l' ausilio di attrezzi particolari o costosi. 
Questo, nuovo nel panorama dei microcontrollori dell' epoca, assieme ad una oculata (e positiva) politica tecnico-commerciale e di bassi costi con cui Microchip l' ha reso accessibile ad un largo pubblico, ha fatto si che un numero molto elevato di utilizzatori lo abbia scelto (anni fa !) e ci abbia lavorato, e scritto negli anni una ampia messe di applicazioni e pagine sul WEB, oltre a libri, corsi e pubblicazioni varie.

Ma da quando queste pagine sono state scritte, ne è passato di tempo

Oggi la scelta di un componente di vecchia generazione non è certamente la scelta migliore: nel frattempo Microchip ha esteso ampiamente la sua produzione, aggiungendo via via famiglie nuove che, mantenendo una buona portabilità del software da un modello all' altro, offrono notevoli miglioramenti.

PIC16F84 è un componente semplice, con un ragionevole numero di funzioni che lo rendevano adeguato anche per chi voleva iniziare a mettere le mani nei processori embedded.
Questo all' epoca della sua uscita sul mercato, perchè già da tempo è stato molto più interessante (e oltretutto meno costoso) scegliere un dispositivo analogo di una generazione successiva, ad esempio il PIC 16F628, che dispone di migliori prestazioni a parità di pinout.

Ma anche qui si tratta di un processore di quella che Microchip definisce famiglia mid-range, esistente già da tempo, mentre da tempo sono in produzione altre famiglie ben più recenti, performanti, facili da usare e,  perfino, più economiche.

Perchè. allora, continuare ad insistere sulla famiglia mid-range, che Microchip comincia a considerare "superata" ?

Sia per chi inizia, sia per chi sta già lavorando con i PIC, vale veramente la pena di considerare la famiglia enhanced, i PIC18.

Chi affronta gli embedded di Microchip, sia per la prima volta, sia arrivando da altri processori, ha sempre trovato alcuni punti particolarmente ostici. 
In particolare la divisione dei registri a banchi e la mancanza di un sistema pratico per sopperire a questo, un indirizzamento indiretto poco funzionale, una memoria programma a pagine con la relativa necessità di gestire il program counter, ecc.  

Inoltre il set di istruzioni dei mid-range è di soli 34 opcodes, non molti anche per un RISC. 
Tutto questo, associato magari al problema del R-M-W, richiede al programmatore di mantenere una costante attenzione a particolari troppo legati al processore e distoglie le energie dal programma vero e proprio, appesantisce i sorgenti, richiede di mettere in atto trucchi e macro in abbondanza.
Anche volendo saltare le asperità di un Assembler per passare a linguaggi evoluti come il C si scontrano con le risorse di RAM e FLASH dei mid-range, che non sono molto ampie e supportano a fatica i compilatori.

Questo vale sia per il professionista, che sa come cavarsela, ma ancora di più per chi inizia, dato che l' esperienza deve ancora farsela.

Tra PIC16 e PIC18 c'è un sensibile gap di prestazioni e anche di prezzi ( favore di questi ultimi, però), tale da non poter dare adito a dubbi. E qui trovate un articolo su queste differenze.

Certamente sul WEB la massa dell' informazione verte ancora sui PIC16, ma questo dipende dal fatto che si tratta di pagine datate. Per chi ha un attimo la pazienza di cercare, informazioni anche valide sulle nuove tecnologie non sono poi così rare.

Ma anche parlando solo dei mid-range, pochi conoscono componenti come il PIC16F1827, piccolo mostro così zeppo di funzioni da richiedere un manuale di 406 pagine.
E i PIC18F/18K costituiscono per la maggior parte degli appassionati, ma anche di operatori del settore, un punto interrogativo.

 


Ma è tutto in inglese...

Certamente, c'è da ricordare che siamo in Italia: la vergognosamente scarsa disposizione ad apprendere i rudimenti di un' altra lingua è, nel nostro paese, un serio problema.

Perchè l' elettronica (e la tecnologia in generale), per varie ragioni, parla inglese e, a meno che vogliate imparare il cinese (ha una grammatica semplicissima...), l' opposizione alla lingua straniera rende impossibile accedere innanzitutto alla lettura dei fogli dati dei componenti, poi alla massa enorme di articoli, pubblicazioni, libri, siti web.
Se pure si tratta di un inglese tecnico molto semplice (chi scrive fogli dati non è certo Joyce!), ugualmente il problema della lingua può essere uno scoglio difficilmente superabile.

Anche perchè, di fronte a data sheet massicci, che vanno dalle 310 pagine del PIC18F1230 alle 482 del PIC18F2682, e più, molti si trovano sconcertati e rinunciano ad affrontare il nuovo componente.

Ed è grave, perchè è impossibile utilizzare un componente complesso come un embedded senza averne letto con cura il foglio dati.

 


Cosa vogliamo fare qui ?

Da quanto detto, avendo rilevato queste carenze e difficoltà, proviamo a pubblicare un sito che sia di aiuto reale per chi voglia passare dai PIC16 ai PIC delle famiglie superiori e, nello stesso tempo, fornisca qualche informazione indispensabile sul come si può procedere a lavorare con gli embedded ed ottenere una vera soddisfazione dal proprio lavoro.

Anche con un PIC16C si sono fatte e si possono fare cose eccellenti, ma è tanto più semplice farle con un PIC18, sopratutto per chi comincia. Stessa cosa per chi lavora su questi embedded: il passaggio da mid-range a enhanced non può che essere vantaggioso.

Quindi cercheremo di:

  • Comprendere le basi del funzionamento dei PIC enhanced

  • Conoscere il set di istruzioni enhanced

  • Comprendere l' organizzazione della memoria e i meccanismi di accesso

  • Leggere un foglio dati

  • Imparare a scrivere un semplice programma in Assembler

  • Utilizzare i tools di sviluppo (MPLAB, Pickit, Real ICE, ecc)

  • Utilizzare i compilatori C

Microchip fornisce un ambiente di sviluppo integrato (MPLAB IDE) molto potente e, non cosa secondaria,  gratuito (!) e costantemente aggiornato.
inoltre vende a costi contenuti dei tools di debug/programmazione efficaci e integrati nell' ambiente di sviluppo, adatti sia per Assembly che per C.
Quindi, quanto scritto in queste pagine farà riferimento a MPLAB, al macroassembler MPASM e al C di Microchip,  e le esercitazioni saranno supportate dai PicKit o ICD.

Certamente si potrà opporre che esistono altri ambienti di sviluppo, altri assembler, altri C, oltre ad una buon numero di linguaggi diversi, dal BASIC al Pascal al Forth allo Jal.
A parte che alcuni di questi sono a pagamento, altri sono belle esercitazioni di interesse puramente ludico-scientifico, altri sono solo giochetti, non esiste alcuna ragione per non utilizzare i mezzi che il costruttore dei chip (e quindi, si suppone, l' agente più qualificato) mette a disposizione gratis o per pochi euro. Sopratutto per iniziare.

Poi, avendo una esperienza sufficiente per poter fare delle valutazioni sensate, ci si potrà indirizzare diversamente.
Non hanno neppure senso le comparazioni tra le performances di questo o quel C: questo interesserà forse un produttore, ma per quanto riguarda un approccio iniziale o un uso non professionale, il fatto che l' oggetto eseguibile occupi 10 bytes in più o in meno non ha alcun peso.

Altrettanto e ancor più il discorso vale per i "programmatori" di PIC, di cui il WEB è strapieno e che sembrano fare a gara non tanto ad ottenere il risultato voluto (la programmazione del chip) quanto ad utilizzare il minor numero di componenti, con risultati che non sono sempre in linea con le attese.

Quindi, sicuramente, qui non troverete programmatori di PIC.

Anche perchè, come vedremo,  il "programmatore di chip" NON è certo il primo elemento di cui si deve disporre.
Anzi, al limite se ne può perfino fare a meno !
Ed imparare comunque a programmare questi embedded molto meglio che con la tecnica dello "scrivo il sorgente-programmo il chip-resto lì a guardare il circuito che non funziona". La via corretta è diversa.

E, come in tutte le cose,  la corsa alla cosa che costa meno paga solo in molto limitate circostanze e l' auto costruzione ha senso solo quando si sa a sufficienza cosa si sta facendo.


Alcune risposte

Quindi, perchè viene scritto questo corso ?

Perchè ci sembrava che in rete ci fosse poco, anche in lingua inglese, di sufficientemente dettagliato sui PIC18.
Ritenendo che non sia più sensato continuare a versare tempo e ingegno su componenti datati come i vecchi mid-range, proviamo ad offrire un tutorial in lingua italiana che serva ad una prima conoscenza con i PIC18 e faccia da ponte verso i componenti delle famiglie più avanzate.

Perchè seguire un foglio dati ?

Partiamo dal seguire abbastanza strettamente quanto è scritto sul foglio dati (Datat Sheet) di un PIC18F tipico in modo da dimostrare che la lettura di queste documentazioni, nonostante la lingua inglese, non è poi così insuperabile come troppi pensano

A chi è indirizzato ?

E' indirizzato a chi conosce già qualcosa dei microcontroller e dei PIC. In particolare a chi sta ancora usando i PIC16 ed è ora che migri verso qualcosa di meglio. Però ci sono dettagli che dovrebbero essere sufficienti anche per chi comincia.
 

Limiti ?

  • Non intende essere un tutorial di tutto lo scibile elettronico!  Si presume che chi si avvicina ai microcontroller embedded qualcosa, almeno di elettrologia, conosca già. Quindi non è scopo di questo corso fare una replica di quanto si sarebbe dovuto fare a scuola nell' ora di Fisica.
     
  • Non è neppure un tutorial sulla storia dei PIC o dei computer in generale o un corso di programmazione.
     
  • E neanche un corso di elettronica base. O sulla corrente alternata, le logiche booleane, la legge di Ohm, le tecniche di saldatura, la preparazione dei circuiti stampati, come leggere il codice dei colori delle resistenze, i valori dei condensatori o simili. 
    Per questo esistono in rete numerosi e fin troppi corsi e tutorial, anche in italiano, tali da non dover sentire la necessità di ripetere qui queste cose, se non dove serve alla comprensione del capitolo.
     
  • e poi ha tutti i limiti di una cosa scritta su pagine Internet.

Ci sarebbe ancora molto da dire, ma è il caso di passare a elencare quello che ci serve per cominciare.


 

 

Copyright © afg. Tutti i diritti riservati.
Aggiornato il 23/10/10.