PROGRAMMATORI DI PIC
Questo è un campo molto vasto. Nel titolo mi riferisco in particolare all'oggetto elettronico che collegato ad un computer permette tramite apposito software di trasferire un programma (firmware) nella memoria del microcontrollore. Vorrei subito precisare che qui mi limiterò a fornire alcuni dettagli e consigli per quello che è stata ed è la mia esperienza personale. Vi sono siti in cui l'argomento "programmazione pic" viene trattato in modo molto chiaro ed esteso, con diversi schemi, consigli e progetti. Stessa cosa per quanto riguarda il software da abbinare al programmatore. Non entro in merito al fatto che a volte si possono rischiare "bidoni" (soprattutto con progetti molto semplici) e al consiglio di studiare un po' l'argomento, magari visitando più siti prima di decidere come procedere. Do inoltre per scontato che chiunque si proponga di autocostruire un programmatore di pic... per lo meno abbia una idea di come questi funzionino e di quali segnali occorrano per la programmazione. Questo aiuta molto anche a comprendere il funzionamento del programmatore stesso e la scelta di quale schema adottare.
In tutta onestà quando qualche tempo fa ho voluto fare il grande "salto", ossia di dedicarmi anche ai pic e non solo all'elettrronica "classica", dopo aver studiato un po' di schemi e dopo aver letto un po' di siti sull'argomento ho... semplicemente acquistato il mio primo programmatore!! Perchè?! Semplicemente perchè da inesperto di programmazione di microcontrollori volevo avere almeno la certezza di una corretta e sicura procedura. Se poi il circuito o il pic non avessero funzionato... bè, almeno avrei saputo con certezza che si trattava di un errore del programma, o della elettronica. Di certo non del programmatore.
La scelta è caduta sul PICKit2 della Microchip stessa. Lo vedete in questa immagine:
E' un oggettino molto carino, piccolo, leggero. Il prezzo non è poi eccessivo (circa 55 euro). Si collega alla porta USB del computer, quindi è adattissimo anche per portatili che non dispongono ormai quasi più di porte RS232 o parallela. Ed in effetti ora quello in abbinamento ad un portatile è diventato il suo uso principale. Non posso che dirmi soddisfatto... MA (c'è quasi sempre un "ma")... qualche problema è sorto in seguito, con l'uso. Il fatto è che si tratta di un oggetto abbastanza sofisticato, dotato lui stesso di un firmware originale Microchip, addirittura con la possibilità di aggiornamento dal sito proprietario. Supporta pertanto anche i pic di ultimissima generazione senza problemi. Il "MA" di prima era però riferito al fatto che questo programmatore riconosce in modo totalmente automatico il modello del pic vergine da programmare in base al suo firmware. Purtroppo se si desidera utilizzare qualche modello di pic diciamo non troppo recente, o che la Microchip considera ormai "obsoleto" allora iniziano i problemi! Il programmatore risponde semplicemente con un bel "Dispositivo non supportato" e si rifiuta di programmarlo.
A me ad esempio è capitato con dei notissimi 16F84 (ne ho recuperato un certo numero a prezzo irrisorio). Il PICKit2 riconosce e programma perfettamente il 16F84A, ma non vuole assolutamente saperne di fare il suo lavoro con il modello che non riporta la A finale. Il 16F84-04/P tanto per intenderci.
Ovviamente non si può pensare ad un aggiornamento al contrario del firmware del programmatore! E allora?? Rinunciare ad utilizzare quella dozzina di pic che mi ero procurato?? Non sia mai detto!!! E qui è nata l'esigenza di autocostruire un programmatore che fosse più di bocca buona e che programmasse senza troppe storie anche questi integrati più vecchiotti (e pensare che l'unica differenza con la versione "A" è la frequenza di clock, che nel caso dell'A può salire sino a 20 MHz mentre nello 04/P si ferma a 4 MHz, comunque sufficenti per moltissime applicazioni!).
Dopo una buona ricerca tra siti e articoli, ho scartato i programmatori che mi parevano troppo semplici e/o specifici per funzionare senza problemi. Per intenderci tutti quelli che si connettono alla seriale e che sono costituiti solo da qualche resistenza. In questo caso il problema principale è dato dalla tensione di programmazione, che è al limite e a volte non arriva al valore necessario, creando problemi anche a "intermittenza" (a volte programmano altre no) e dando il classico errore 0000h (tristemente noto a chi ha un minimo di esperienza).
Alla fine ho optato per un primo tentativo del genere "semplice", anche se modificato con un paio di transistors. Mi piaceva l'idea di riuscire ad alzare un po' la tensione... Lo schema si trova facilmente in rete. Non ho modificato quasi nulla, comunque lo riporto qui sotto.
Come si vede nulla di trascendentale. Connessione via seriale, pochi componenti e niente alimentazione esterna. Ho costruito la prima versione di test su un piccolo ritaglio di millefori
Nonostante la semplicità e l'assenza di alimentazione esterna il circuitino si è da subito dimostrato efficace nella programmazione dei famosi 16F84-04/P, sia impiegandolo con Icprog sia con WinPic (entrambi settati come JDM Programmer nella scelta del programmatore). Il tutto da pc desktop. Per cronaca (ma era ovvio ed atteso) riferisco del completo fallimento utilizzandolo su un portatile con RS232 "simulata" (via USB).
In ogni caso non ho avuto fallimenti su diversi esemplari di quel tipo di pic. Devo però assolutamente aggiungere che questo piccolo programmatore l'ho sperimentato SOLO ED ESCLUSIVAMENTE sui 16F84-04/P e su nessun altro pic! Non so quindi se il regolare comportamento si mantiene o meno su tutta la gamma di microcontrollori.
Alla fine (visto il buon funzionamento per quello che mi serviva) ho montato il tutto su CS e inscatolato in un piccolo contenitore, rendendolo un po' più presentabile, robusto e trasportabile. Ve ne mostro il risultato qui sotto anche se è solo un montaggio "alla buona".
In tutti i casi consiglierei questo tipo di programmatore a chi ne desidera uno realmente semplice, di immediata realizzazione e davvero poco costoso (si costruisce con i pezzi che ciascuno ha già nel cassetto!). Ma lo ritengo adatto solo ad usi abbastanza specifici, senza troppe pretese. Insomma adatto a chi vuole programmare solo saltuariamente, magari proprio il tipo di pic che ho usato io, e se serve un qualcosa che probabilmente si userà qualche volta e poi mai più.
Per quanto mi riguarda, pur soddisfatto desideravo un programmatore più "serio", dotato di alimentazione esterna, che supportasse il maggior numero possibile di pic e magari anche le memorie I2C. Proprio mentre cercavo un progetto adatto mi sono imbattuto (per altri motivi) nel sito di Sergio Fiocco (www.fisertek.it) e qui, oltre ad un numero veramente incredibile di informazioni utili e di spiegazioni, ho trovato dettagli, schema e disegno CS del "Fiser's Programmer". Programmatore derivato dal modello "ProPic" con modifiche e migliorie. In pratica era esattamente ciò che cercavo! Lo stampato è un po' complicatino, ma se si utilizza la fotoincisione non ci sono problemi. L'ho subito assunto quale progetto da mettere in pratica. E non è stato uno sbaglio! Schema, stampato e spiegazioni sono assolutamente corretti, infatti il programmatore una volta montato ha funzionato al primo colpo, sia con i software indicati prima che con il più moderno meProg. Grosso modo è possibile la gestione della maggior parte dei pic (compresi i modelli con la "A" finale) e delle I2C senza problemi. Certo non è troppo "portatile" (a causa della necessità dei 220V) e richiede una porta parallela, ma per il laboratorio casalingo lo trovo perfetto e mi sento di consigliarne la realizzazione a tutti coloro che vogliono sperimentare seriamente con i microcontrollori pic. Un dettaglio interessante: ho potuto sperimentare (e di fatto lo uso regolarmente) il programmatore anche usando un PC portatile (XP Pro SP2 come sistema operativo) privo di porta parallela utilizzando allo scopo un adattatore PCMCIA/Parallela (ATTENZIONE! NON un emulatore via USB!). In questo caso il software ICProg NON ha affatto funzionato, ma con meProg nessun problema!! Il Fiser's Programmer dunque non ha problemi neppure usato con questo accorgimento su una parallela ricavata dalla PCMCIA.
Riporto giusto un paio di foto del mio programmatore, uguale del resto a quello dell'autore citato. E' differente solo il trasformatore di alimentazione (secondario circa 15V-300 mA) perchè ne ho adattato uno non specifico da stampato. Inoltre (solo per mia comodità) ho sostituito il connettore da 10 poli per programmazione in-circuit con uno identico ma a vaschetta, in modo da avere un verso obbligato di inserimento dei connettori. Cosa che è comunque fattibile con le indicazioni di Fisertek.
Infine (mi piaceva esteticamente) ho montato la basetta su un basamento in legno (compensato marino passato con impregnante noce e poi due mani di flatting) tramite distanziali esagonali cromati. Per tutti i dettagli, schema, circuito stampato e montaggio vi rimando ovviamente al sito di Sergio dove troverete tutto quanto vi occorre sapere.
Nonostante possegga il programmatore "originale" Microchip PICKit2 il Fiser's Programmer è subito diventato il mio programmatore preferito e quello che uso per la maggior parte dei miei esperimenti. Il PICKit2 come detto è molto comodo per la portatilità (piccolissimo e leggero) e per richiedere solo la USB disponibile ormai dovunque. A patto però di usarlo con i pic "riconosciuti" dal suo firmware! Il Fiser's al contrario è un vero muletto: funziona sempre e un po' con tutto!! Provatelo e non ne potrete più fare a meno.
Eccovi qualche foto del mio esemplare terminato. Se cliccate le foto le potete vedere ingrandite (800x533 px).
Sono come sempre disponibile per ogni informazione o chiarimento.