Adattatore multizoccolo per PICkit 2


Scritto da Giovanni Bernardo in data 24 ottobre 2009

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

Programmare i PICmicro 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:

pinout_pickit2Vpp, 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”:

programmare_eeprom_con_pickit2

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:

differenze_eeprom_24lcxx_24cxx

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:

corrispondenza_pin_pickit2_eeprom_24lcxx

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:

corrispondenza_pin_pickit2_eeprom_25lcxxQuindi 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:

programmare_picmicro_eeprom_con_pickit2_corrispondenza_pin

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:

adattatore_pickit2_multizoccolo_02

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.

Articoli che potrebbero interessarti:

L'articolo ti è piaciuto o ti è stato utile per risolvere un problema? Supporta e mantieni in vita questo sito, ci basta soltanto un caffè o una birra

  1. #1 da pirvcb il 18 novembre 2009

    Davvero un buonissimo lavoro il tuo!!!!! Poco tempo fa ho dovuto sviluppare un progetto HW e SW su 16F877 e non avevo bene idea di cosa fossero e come funzionassero i Micro. Per sviluppare il SW alla fine ho scelto un tool grafico (flowcode) ma, ben presto, mi sono reso conto dei limiti della gestione a basso livello. (nella fattispecie il settaggio accurato del timer overflow; tua LEZIONE 5 se ricordo bene).
    L’esigenza dell’approccio al PIC con il C mi s’è fatta subito evidente e, sebbene abbia portato a termine il lavoro con FC m’è rimasta la voglia di confrontarmi col C. Il tuo corso è uno dei migliori lavori introduttivi che abbia mai visto (e ti garantisco che di materiale didattico ne ho esaminato parecchio). Soprattutto è la prima volta che vedo integrato, spiegato ed esemplificato in maniera semplice l’utilizzo dei flags unito al concetto di contatore e multitasking. La gestione delle periferiche è sicuramente importante ma, i concetti di base circa l’architettura di un’applicazione lo sono altrettanto.
    BRAVO!!!! DAVVERO MOLTO BRAVO. E GRAZIE!!!!!!

  2. #2 da Giovanni il 6 gennaio 2010

    Sono un neofita e autodidatta in materia, ho seguito anche altri corsi, è indubbio che la programmazione dei pic va fatta in C e ovviamente con il datasheet relativo al pic che si vuole programmare cosi come spiegato nella parte introduttiva. Questo corso è veramente capillare in quanto anche se con semplici esempi di programmazione il codice viene spiegato riga per riga e per quanti approcciano a questo tipo di linguaggio non ci può essere cosa migliore. Di notevole interesse la lezione n.4 riguardante gli interrupt. Non posso che complimentarmi per la cura del lavoro svolto fino a questo momento e ti esorto a continuare. BRAVO!!!!!!!!!!!!!!!!!.

    • #3 da Giovanni Bernardo il 8 gennaio 2010

      “Le” pic?!? “I” PIC!!
      Ho specificato che in questo corso ho preferito utilizzare l’Hitec-C perchè è conforme allo standard ANSI (cosa che il MikroC non è) per cui è ovvio che molte parti di codice scritte in ansi c non possono funzionare con un compilatore che non rispetta gli standard e viceversa.
      La define “XTAL_FREQ” è utilizzata unicamente dalle routine delay.C, non ho idea di come si definiscano col mikroc (ma mi sembra sia uguale…), ma sul manuale ci dovrebbe essere scritto, forse non accetta il “MHZ” scritto dopo? se è cosi basta che scrivi la frequenza per esteso e modifici delay.c e delay.h per eliminare la moltiplicazione eseguita nel caso trova scritto MHZ dopo il valore. Per l’operatore XOR non ti so dire perchè non va, io non ci vedo nulla di strano… Prova a fare LED0^=1; oppure LED0=~LED0…. insomma un modo qualsiasi per invertire lo stato del bit… (in hitec-c, per esempio, se fai LED0=~LED0 non viene dato nessun errore, ma intanto sul circuito non funziona…)

  3. #4 da Nicola il 4 aprile 2010

    Ottimo sito. Davvero complimenti. Volevo sapere se la scheda multizoccolo va bene anche per il picKit3.

    Grazie!

  4. #6 da freddie il 9 aprile 2010

    Complimenti!! Ho sempre “sfiorato” l’argomento pic, ma il tuo sito mi ha dato la spinta che mi mancava. Grazie a te ho acquistato il Pickit2 e la Freedom II e seguo passo passo le lezioni…spero continuerai a trasmettere tutte le tue preziose conoscenze. Grazie

  5. #7 da capotamar il 10 luglio 2010

    Giovanni Bernardo :
    Il Pickit 3 ha lo stesso identico pinout del 2

    Ho provato ad usare il PicKit 3 per programmare una Eeprom seriale tipo 25LC640A, ma senza esito, ecco un breve sunto:
    - apro MPLAD IDE (versione 8.43) e seleziono il programmatore PicKit 3;
    - quindi seleziono la periferica di cui sopra, e non ho nessun led “verde” (quelli che indicano la compatibilità tra periferiche ed software e/o apparecchiature), in ogni caso do OK;
    - al che mi appare una finestra in cui mi si dice che il PicKit 3 non è adatto a programmare la periferiche da me selezionata e che verrà scaricato.

    Inoltre mi sorge un’altro dubbio…visto che le eeprom della serie 25XX ammettono sui loro pin un valore di tensione massimo pari a Vcc+1 V (letto dal manuale), ed il PicKit sul terminale Vpp da i 13 V di programmazione non si finisce per danneggiare la eeprom!!

    A questo punto giro la domanda a voi che siete sicuramente più esperti di me:
    come posso fare a programmare la mia Eeprom?

    Grazie per l’attenzione e scusate se mi sono dilungato

    • #8 da Giovanni Bernardo il 10 luglio 2010

      Il problema è questo: il pickit3 non ha ancora la GUI come il pickit2. Il software del pickit2 è fatto proprio per permettere la programmazione anche di vari tipi di eeprom ecc ecc, da li si seleziona il tipo di dispositivo e quindi i vari livelli di tensione vengono adattati in automatico. Da MPLAB suppongo che la cosa sia limitata ai soli pic. Il software del pickit2 non va bene col pickit3, ma se cerchi bene nel forum della Microchip avevano rilasciato una versione beta nell’attesa che venga pubblicata la definitiva. Avevo il link segnato da qualche parte, se lo trovo lo posto qui.

    • #9 da Giovanni Bernardo il 13 luglio 2010

      Ho trovato la discussione sul forum microchip dove è stata rilasciata la beta della GUI per il pickit3:

      http://www.microchip.com/forums/tm.aspx?m=500342

      prova con questa

      • #10 da capotamar il 24 luglio 2010

        Perdona la latitanza, ma problemi lavorativi mi hanno impedito di rispenderti prima.
        Non appena ho un attimo provo e ti faccio sapere se funziona.
        A presto e grazie per il link

  6. #11 da Giovanni il 28 agosto 2010

    Potresti per favore darmi lo schema elettrico dell’adattatore multizoccolo per pickt2. Grazie.

(non verrà pubblicata)
  1. Ancora nessun trackback

Fusion theme by digitalnature | Articoli (RSS) e Commenti (RSS) ^