Pic Micro, Arduino, Atmel, Microchip, Freescale, Texas Instrument, ecc. Strumenti di sviluppo, firmware e progetti.
#10741
Cercavo "in giro" un metodo "alternativo" per programmare un PIC18F47Q10 e mi sono imbattuto in questa pagina di GitHub.

Si tratta di un programmatore esclusivamente in modalità LVP (Low Voltage Programming) formato da uno "sketch" (pp.ino) da flashare su una comune scheda Arduino Uno e di un programma di controllo lato PC (sia versione Linux che Windows) che conta più di 400 PIC compatibili (almeno in teoria, in quanto solo alcuni sono stati verificati).

Il PIC che mi interessava era dichiarato nella lista, anche se non verificato.

Così preparo il tutto e faccio un primo test. Nulla... Il programma di controllo mi dice che riscontra un Device Id sbagliato.

Strano... controllo il file che contiene la lista dei Device Id e mi accorgo che rispetto a quanto riportato sul datasheet il device ID risulta scambiato con quello di un PIC18F27Q10. Correggo il file, ritento e... funziona!!!

Però mi accorgo anche di un'altra cosa. Il programmatore a riposo pone il pin VPP/MCLR del connettore ICSP ad uno stato HIGH. Non sto a guardare il codice ma verifico con un led nel caso fosse dovuto ad un pullup interno. No, è proprio HIGH.

Hmmm... non mi piace. Questo può essere fastidioso perché può iniettare una corrente se la scheda target non è alimentata.

Per curiosità verifico cosa succede su uno MPLAB PicKit 4 e su uno MPLAB SNAP, e vedo che su entrambi il pin VPP/MCLR è normalmente a GND o comunque non HIGH.

Così modifico lo sketch (pp.ino) in modo da aggiungere uno switch che possa lasciare il programmatore in uno stato di "standby" nel quale tutti i pin della interfaccia ICSP sono a Low (o comunque non a HIGH). In questo stato è possibile collegare o scollegare una scheda target non alimentata senza problemi (come tra l'altro è consigliato sul manuale del MPLAB Pickit 4). Inoltre faccio in modo che il led "utente" sulla scheda Arduino Uno lampeggi in questo stato di standby.
Prima di effettuare la programmazione lanciando il programma di controllo sul PC, lo switch dovrà essere spostato su PROG

Quando, a programmazione effettuata, si vuole passare dalla modalità di programmazione a quella di standby (per scollegare la scheda target dopo averla disalimentata) bisogna non solo riportare lo switch su STBY ma anche premere il reset sulla scheda Arduino Uno (a questo punto il led lampeggia per confermare lo stato di standby).

Insomma alla fine questa è la "shield" (usando il gergo arduinico...) fatta "a mano" su un ritaglio di millefori da applicare sull'Arduino UNO (sul lato dei connettori POWER a ANALOG) per usarlo come programmatore di PIC:

20210418_110442.jpg


20210418_110422.jpg


20210417_155718.resized.jpg


20210417_155447.resized.jpg


Per concludere ho allegato un file .zip con tutto quanto necessario per usare Arduino Uno come programmatore di PIC con le modifiche già apportate e lo schema elettrico della "shield".
Ho anche preparato un PCB della "shield". I gerber sono nello stesso file allegato (attenzione: non ho ancora avuto modo di verificarli su una scheda effettivamente prodotta).

1373581618928704068.jpg


Saluti.

J4F
Allegati
(278.38 KiB) Scaricato 13 volte
competente69, ilguargua ringraziano
Dimmer su aspirazione

Ciao a tutti ho una ventola di aspirazione in came[…]

Visita il nostro canale telegram