Adattatore multizoccolo per PICkit 2
In questo articolo presento una semplice scheda che ho fatto per potermi interfacciare col PICkit2 e programmare numerosi tipi di PICmicro (e non solo) disponendoli sull’opportuno zoccolo.
In realtà la realizzai tempo fa per poter leggere il contenuto di alcune memorie EEPROM di tipo SPI (ovvero quelle la cui sigla inizia per 25) utilizzate come BIOS su alcune schede madri e ho ben pensato di ampliarla, facendo una scheda in cui predisporre gli zoccoli per i vari tipi di PICmicro e per le memorie EEPROM I2C (quelle inizianti per 24) – ricalcando in un certo qual modo l’idea di Sergio Fiocco per il suo “Fiser’s Programmer” – oltre che per le memorie SPI.
Questa idea, in effetti, può anche essere d’aiuto a tutte quelle persone che, avendo acquistato un pickit2 per iniziare a programmare i microcontrollori della Microchip, non sanno come vanno collegati i pin. In realtà tale collegamento pickit2 => picmicro non è affatto la cosa più ostica del mondo se si conosce il significato delle sigle riportate sul picmicro e sul pickit2 e si da uno sguardo ai datasheet.
Indice dei contenuti
Programmare i PIC con il PICKit2
Innanzitutto, per quanto riguarda la parte software di questo argomento (come vanno impostati i programmi e come si aggiorna il firmware del pickit2) , vi consiglio di leggere le lezioni 2 e 3 del nostro corso di programmazione di PICmicro in C.
I pin del pickit2 vanno collegati ai pin del picmicro che vogliamo programmare e recanti la stessa sigla:
Vpp, anche detto MCLR (Master CLeaR) è il pin che porta la tensione di programmazione: i famosi 13.5 V necessari per far entrare il PICMicro in modalità programma, e va collegato al pin del picmicro riportante appunto la scritta “MCLR”.
Vdd è la tensione di alimentazione: sono i 5 volt per alimentare il pic, e vanno collegati al pin del picmicro denominato appunto “Vdd”, altri la indicano come +5V oppure come Vcc
Vss idem come sopra, si tratta del terminale di massa, altri lo indicano come 0V o GND
ICSPDAT/PGD è il terminale che porta i dati di programmazione (In Circuit Serial Programming DATa oppure ProGram Data). Va collegato al pin del picmicro che riporta la sigla “PGD” oppure la sigla “ICSPDAT”, generalmente è sempre il terminale RB7 (su altri è RB0, sui picmicro ad 8 pin generalmente è il terminale GP0).
ICSPCLK/PGC è il terminale che porta il clock di sincronismo per la programmazione (In Circuit Serial Programming CLocK oppure ProGram Clock). Va collegato al pin del picmicro che riporta la sigla “PGC” oppure la sigla “ICSPCLK”, generalmente è sempre il terminale RB6 (su altri è RB1, sui picmicro ad 8 pin generalmente è il terminale GP1).
Il terminale AUXiliary generalmente non viene utilizzato per i PICmicro, ma lo si usa per programmare alcuni tipi di EEPROM e quando si utilizza il PICkit2 come analizzatore logico.
Quindi: basta avere a portata di mano il datasheet del picmicro che vogliamo programmare: nelle prime pagine è riportato sempre un diagramma con la disposizione e il nome dei pin.
Programmare le EEPROM I2C (24Cxx e 24LCxx) con il PICKit2
La corrispondenza dei pin tra PICkit2 e EEPROM, invece, è in alcuni casi in realtà un po’ più complicata da desumere dal datasheet, per questo motivo la Microchip nel readme allegato all’installazione del PICkit2 (cercate in “C:\Programmi\Microchip\PICkit 2 v2” il file chiamato “PICkit 2 Readme.txt”) è indicato come vanno collegati al PICkit2 i vari dispositivi.
Innanzitutto, quando vogliamo programmare un dispositivo col PICKit2, dal suo software dobbiamo sempre scegliere il tipo di dispositivo da programmare selezionandolo dal menù “Device Family”:
Il PICKit2 è in grado di programmare le EEPROM I2C di tipo 24LCxx, in realtà sono riuscito a programmare anche le 24Cxx, sebbene nelle caratteristiche non sia specificato. L’unica differenza, difatti, tra le memorie 24LC e le 24C sta nel range di tensione di lavoro e nella frequenza massima di comunicazione, vi riporto qui un estratto di un datasheet per farvi capire quali sono le differenze:
La Microchip probabilmente non menziona più le 24C nei documenti perchè le ha tolte dalla propria produzione, ma si trovano ancora nei negozi di componenti elettronici e sono ancora prodotte da altre case costruttrici.
Per la programmazione delle memorie 24, facciamo sempre riferimento al readme del pickit2:
Da questo schema si capisce chiaramente che: il pin2 (Vdd) del PICkit2 va collegato al pin 8 (Vcc) della EEPROM, e così via.
Per le memorie I2C dovremo collegare una resistenza di pullup sul pin 5 della EEPROM (il pin SDA delle EEPROM I2C è difatti a collettore aperto, e richiede una resistenza di pullup, io ne utilizzo una da 10KΩ) e, contrariamente alle aspettative, il pin SDA non va pilotato con PGD ma con AUX!
I pin 1,2,3 delle EEPROM I2C servono a definire l’indirizzo di ogni singola eeprom quando ne andiamo a collegare più d’una su un bus I2C, in questo caso mettiamo tutti e 3 questi terminali a massa essendo l’unico dispositivo presente sul bus quando andiamo a programmare. Lasceremo quindi deselezionati i tre checkbox sul software di programmazione che permettono di impostare l’indirizzo.
In realtà, leggendo alcuni datasheet, non ci sarebbe bisogno di mettere questi pin a massa dal momento che lasciandoli scollegati si assume che siano a massa, ma dal momento che non ho idea se questa regola vale per tutte le eeprom prodotte da tutte le case, nel dubbio li collego a massa.
Programmare le EEPROM SPI (25LCxx) con il PICKit2
Vediamo sempre il file readme del PICKit2 cosa ci dice:
Quindi niente di particolare, ma in questo caso, come vedete, utilizzeremo tutti i pin del pickit2. I pin 8,7 e 3 della eeprom spi vanno collegati con il pin 2 del pickit2 (Vcc = Vdd !), il resto dovrebbe essere abbastanza chiaro.
Ho detto sopra che avevo utilizzato questo sistema per leggere le eeprom di alcune bios. In realtà ci sono riuscito in parte dal momento che le bios che ho provato a leggere non erano in realtà supportate dal PICKit2, per cui, avendo le eeprom una capacità maggiore della eeprom di capacità più alta disponibile nella lista del pickit, ne sono riuscito a leggere soltanto la prima parte, e ovviamente in questo caso non si può nemmeno riprogrammare.
Circuito adattatore multizoccolo
Illustro qui uno schemino che ho ricavato da vari datasheet e dal readme del pickit2, che mostra dove vanno collegati i pin del programmatore della microchip sui vari dispositivi:
Questo dovrebbe aiutare molto chi ha le idee confuse. Sotto ai vari zoccoli sono indicati i più comuni pic aventi quella piedinatura, purtroppo però alcuni pic meno comuni non seguono queste regole per cui è sempre bene che controllate il datasheet del dispositivo che avete sottomano per essere sicuri di cosa si sta facendo, io non mi assumo responsabilità.
Il prototipo l’ho realizzato su una semplice millefori:
Da notare: non ho inserito gli zoccoli da 14 e da 8 pin, dal momento che la posizione dei pin interessati è la stessa di quello da 20 pin, per cui i picmicro aventi 14 e 8 pin possono benissimo essere inseriti nello zoccolo da 20 mettendoli in alto.
Ho indicato il primo pin dove va collegato il pickit2 (ovvero quello indicato con la freccia sul corpo del programmatore) con un pallino nero (vedi anche foto a inizio articolo).
La resistenza di pullup da 10KΩ per le eeprom 24xx l’ho resa disinseribile con un jumper, dal momento che questo va ad impattare su tutti pin collegati con il terminale AUX, non so fino a che punto questo sia necessario, in realtà potrebbe anche non essercene bisogno.
Ho previsto più in basso un altro connettore ICSP avente la stessa piedinatura proposta da Sergio Fiocco sul suo programmatore parallelo e utilizzato su alcune schede di sviluppo.
Come il grande Sergio Fiocco insegna, ho rimosso dagli zoccoli tutti i pin inutilizzati, in maniera tale che sia più semplice sfilare gli integrati e ridurre così il rischio di rotture dei pin.
Programmare altri dispositivi con il PICKit2
Il Pickit2 è inoltre in grado di programmare altri tipi di dispositivi, oltre a quelli (12F,16F,18F,24xx,25xx) fin’ora esposti:
- KEELOQ HCS
- MCP250xx CAN Devices
- Memorie 11LC
- Memorie 93LC
Più oltre, naturalmente, i PIC delle famiglie 10F, PIC24, PIC32, dsPIC30, dsPIC33.
Fate riferimento sempre al datasheet (per i microcontrollori) e al readme per le memorie e i dispositivi KEELOQ per capire come vanno collegati al pickit2.