PICkit : errore “Target has invalid calibration data”

Ho dovuto programmare un PIC12F508 per un amico con un HEX da lui fornito. Dato che ho avuto qualche problema con la programmazione, riporto qui sul mio blog le operazioni fatte per riuscire a programmarlo.

Innanzitutto il PICkit 2 non è in grado di programmare questo dispositivo anche con l’ultimo aggiornamento firmware/software/device file ufficiale, il 12F più piccolo (in termini di sigla) che ha in elenco è il 12F609. Andiamo quindi di PICkit 3

Magari è possibile programmare il PIC12F508 modificando il device file con il tool Device File Editor. Ma dato che avevo il PICkit3 non mi sono applicato in questa soluzione. Se voi l’avete fatto, lasciate un commento. Se siete interessati a scaricare le ultime revisioni software/firmware del PICkit2 o la vecchia applicazione stand-alone del PICkit3 potete andare nella pagina di MPLAB X Ide, scorrere giù dove c’è il riquadro “Features\Downloads\Documentation\Download Archive\Webinars”, premere su “Download Archive” e scorrere verso il basso: ci sono tutte le cose vecchie e stravecchie di cui avete bisogno.

Come saprete da quando non esiste più MPLAB IDE, si usa MPLAB X Ide, che ha integrato, nell’installazione, l’utile tool MPLAB IPE che sta per Integrated Programming Environment. Come ben si intuisce, è un software stand-alone che serve per programmare/leggere i dispositivi di mamma Microchip utilizzando uno dei suoi programmatori, qualsiasi esso sia.

Non avrei mai immaginato che quel 12F mi facesse penare tanto!
Non avrei mai immaginato che quel 12F mi facesse penare tanto!

Appena avviato MPLAB IPE, dato che il PICkit 3 rispetto al fratello minore è molto snob, bisogna passare in modalità avanzata dal momento che di default il PICkit 3 non fornisce l’alimentazione al circuito target. Difatti se il circuito target non è alimentato, hai voglia a premere il pulsante “Program”, che verrà sempre restituito l’errore Target Vdd not detected:

target_vdd_not_detected

Questo problema lo si ha anche in MPLAB X

Per passare in modalità avanzata si clicca su Settings -> Advanced mode. Si presenta una finestra che invita a digitare una password, che di default è “microchip” come riporta anche la finestra stessa.

In modalità avanzata compaiono una serie di pulsanti sulla sinistra che permettono di modificare manualmente tutti i parametri di programmazione.

Innanzitutto nella schermata principale (Operate) bisogna premere il pulsante “Connect” per collegarsi al programmatore selezionato nell’elenco “Tool”. Selezionare il pic da programmare nel menù “Device”, e quindi caricare l’HEX da programmare premendo il pulsante “Browse” al di sotto dei tasti di programmazione/verifica/cancellazione.

La tensione si abilita premendo il pulsante Power e abilitando il segno di spunta sulla voce Power target circuit from tool:

Power target circuit from tool
Power target circuit from tool

Tornando al menù principale (pulsante “Operate”) possiamo provare a premere il tasto “Program”. Se siete fortunati, fila tutto liscio. Nel mio caso non è stato così: ricevevo un errore che indicava che la tensione letta sul pin VDD del pic target era 4.75V anzichè 5:

target_vv_4dot75_volts

Questo errore può essere dovuto o al fatto che la porta USB a cui è collegato il PICkit non eroga abbastanza corrente (può capitare con le porte USB frontali dei PC, che sono limitate in corrente rispetto a quelle posteriori) oppure il dispositivo/circuito target sta assorbendo troppa corrente, che il PICkit 3 non è in grado di fornire.

Questo problema, con il PICkit 3 lo si ha sempre. SEMPRE! Anche da MPLAB X. A volte mi capita di programmare picmicro compatibili con il PICkit 2, il PICkit 3 fa storie con la tensione misurata troppo bassa, lo stacco e al suo posto collego il PICkit 2, sulla stessa porta USB, e tutto va bene.

In questi casi è necessario alimentare il circuito dall’esterno con un alimentatore da 5V e quindi deselezionare il segno di spunta dalla voce “Power Target Circuit from Tool” presente nel menù Power.

Anche così non riuscivo a programmare il pic: continuavo a ricevere il fastidioso errore Invalid Calibration Data seguito da Failed to program device:

invalid_calibration_data

Googlando un po’ ho trovato rimedi un po’ assurdi tra cui riprogrammare il PICkit 3 con un firmware vecchio (soluzione che non ho proprio preso in considerazione considerando anche il fatto che il PICkit 3 viene riprogrammato dai suoi software in base alla famiglia di picmicro da programmare) o usare una vecchia e specifica versione di MPLAB IDE (questo perchè a qualcuno, con una botta di fortuna, avrà funzionato, ma non era sicuramente quello il problema!).

Ho tenuto in considerazione soluzioni più plausibili come quella di mettere un grosso condensatore elettrolitico tra Vdd e Vss. Così sono riuscito a programmarlo senza problemi. Ho anche chiuso e riaperto il programma più volte, usato un altro pic, un’altra porta USB per verificare, dumpato l’HEX dal picmicro e confrontato con l’originale. Giusto per essere sicuri al 100%

Finalmente!
Finalmente!

 

 

Se questo articolo ti è piaciuto, condividilo su un social:
Se l'articolo ti è piaciuto o ti è stato utile, potresti dedicare un minuto a leggere questa pagina, dove ho elencato alcune cose che potrebbero farmi contento? Grazie :)