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.
|