e-die: dado elettronico con PIC12F683 (low quality preview).

 

'Knight-Rider' esperimento con LED e PIC16F628A.

 

 

 


Programmatore di PIC per porta parallela

 

Cenni sul metodo di programmazione dei microcontrollori PIC

I microcontrollori PIC vengono programmati in modo seriale attraverso due linee, chiamate DATA e CLOCK. La modalita' di programmazione viene impostata portando la linea !MCLR ad una certa tensione Vpp  (specificata fra le caratteristiche dei PIC).  

Altri pin coinvolti sono: la tensione di alimentazione positiva Vdd e quella negativa collegata a massa, GND.

Disposizione dei pin (visti da sopra)

I pin utili per la programmazione sono evidenziati con diversi colori e la loro funzione e' spiegata nella seguente tabella:

Pin Nome Segnale
4 !MCLR Vpp
5 alimentazione negativa GND
12 RB6 CLOCK
13 RB7 DATA
14 alimentazione positiva Vdd
9/10 RB3/RB4 PGM


Programmatore per porta parallela

Il programmatore si basa sullo schema di David Tait. I segnali per la programmazione attivati via software e disponibili su determinati pin della porta parallela sono applicati a dei buffer per non caricare la porta parallela. Possono essere impiegati indifferentemente buffer invertenti o non-invertenti, configurando opportunamente il software. Invece e' importante scegliere i componenti rispettando le loro specifiche elettriche e termiche (tensioni ammesse, potenza dissipabile, ecc.).

I programmatori paralleli necessitano di una alimentazione esterna per generare la tensione di programmazione.

I microcontrollori che supportano la modalita' LVP o Low Voltage Programming utilizzano anche un altro pin, detto PGM, e tale modalita' e' selezionata per default in un chip nuovo; inoltre, cancellando il chip la LVP viene re-impostata. Questo programmatore lavora in modalita' standard (High Voltage) e il pin PGM e' collegato a massa tramite un resistore, per garantire che si trovi a livello logico basso durante la programmazione e che la LVP non venga eseguita accidentalmente, anche per causa di disturbi o rumore.


Schema del programmatore in formato pdf


Lista dei componenti (v1.3.4)

Componente Valore o tipo Componente Valore o tipo
D1 1N4001 o eq. U2 LM7805
D2, D3 1N4148 U3 SN7406
LED1 LED verde Q1, Q2 BC307 (BC556, BC557)
R1, R5, R6 4700 ohm J1 connettore DB25F
R2 1500 ohm C1 100mF - 50 V elettrolitico
R3, R4, R10, R11 10k ohm C3, C6 10mF - 25 V elettrolitico
R8 3300 ohm C2, C4, C5 10 nF ceramici
R9 15k ohm zoccoli DIP DIP8, DIP18
R12, R13 47k ohm SW1 deviatore
U1 LM7812 SW2 dip-switch 2 vie

Osservazioni

  • La tensione di programmazione, Vpp, viene ricavata con un regolatore LM7812 con il terminale comune collegato alla serie di due diodi 1N4148, polarizzati dalla resistenza R1. Attraverso un dip-switch e' possibile scegliere fra tre valori: 12 V (switch B chiuso, switch A indifferente); 12,7 V (switch A chiuso, switch B aperto); 13,4 V (switch A aperto, switch B aperto). Importante: i componenti sono soggetti a tolleranze; in particolare il 7812 genera 12 V con un errore massimo di 0,6 V (in piu' o in meno rispetto al valore nominale). Nel caso peggiore la tensione Vpp puo' essere 14 V. Questo valore e' tollerato dai PIC16F84A, PIC16F628A, PIC16F88, ma non e' ammesso dalle specifiche dei PIC12F629/675 e PIC12F508, ad esempio. La tensione di programmazione di 12,7 V e' adatta alla maggior parte dei microcontrollori. Impostare Vpp prima di dare alimentazione al programmatore.
  • Alimentando il circuito con almeno 16 V DC si garantire una buona regolazione della tensione da parte del primo regolatore. Una piccola aletta metallica puo' essere necessaria su U1 per migliorare la dissipazione termica.
  • Un secondo regolatore, LM7805 , e' applicato in serie ad U1. In questo modo la caduta tra ingresso e uscita e' circa 7,4 V (max). Il package di tipo TO-220 consente una migliore dissipazione.
  • I cinque buffer utilizzati sono contenuti nel medesimo chip, denominato 7406. E' stato scelto perche' le sue uscite sono di tipo open collector ad alta tensione (30 V max); si nota che la porta che pilota il transistor Q1 commuta tra 0 e 13,4 V. Il 7407, che contiene buffer non invertenti e' utilizzabile al posto del precedente, modificando le impostazioni dei software (IC-Prog o altro).
  • Non ci sono LED e capacita' collegati ai pin coinvolti nella programmazione del microcontrollore. Il software solitamente fornisce sufficienti informazioni sullo schermo.
  • L'interruttore SW1 permette di staccare l'alimentazione quando il circuito non e' in uso. In questo modo e' possibile alimentare il ciruito con due pile da 9 V in serie; altrimenti queste avrebbero una breve durata, poiche' il circuito consuma una corrente significativa anche in standby.

Per alimentare il circuito dalla rete elettrica, tramite un trasformatore, vanno previsti un ponte raddrizzatore e un condensatore elettrolitico opportuno .

Test del circuito

E' possibile verificare le tensioni ai pin direttamente sugli zoccoli, con un tester digitale, prima di usare il programmatore. I software dispongono di una funzione denominata "Hardware Check" (o "Interface Test" e simili) che permette di attivare selettivamente ciascuna linea.


Software e sua configurazione

Il programmatore e' stato usato con:

Il software va configurato per un programmatore su porta parallela con 7406 + pnp transistor; i segnali DATA OUT, DATA IN, CLOCK devono essere negati.

IC-Prog

DL4YHF's PIC Programmer setup

PICPgm Programmer consigliato per PIC recenti!


Dispositivi programmati

Il programmatore e' stato utilizzato inizialmente per programmare i PIC16F88 nella configurazione con oscillatore esterno (quarzo), con Vpp = 13,4 V. Altri microcontrollori sono potenzialmente programmabili; e' opportuno leggere i data sheet ed altra documentazione per conoscere le specifiche, in ciascun caso. Prevedendo ulteriori zoccoli, e' possibile programmare PIC con 40 pin (20+20), con 14 pin (7+7) e con 8 pin (4+4), adeguando i collegamenti verso Vdd, GND, !MCLR, DATA, CLOCK, PGM come indicato nei rispettivi data sheet.

Questa lista viene aggiornata con i microcontrollori programmati e ri-programmati con successo:

Dispositivo Configurazione

Vpp

 

Altro

PIC16F84A oscillatore: XT

13,4 V

 
PIC16F88 oscillatore: XT

12,7 / 13,4 V

disabilitare la modalita' LVP
oscillatore: RC interno
MCLR off

12,7 / 13,4 V

PIC16F628 PIC16F628A oscillatore: XT, HS

12,7 / 13,4 V

disabilitare la modalita' LVP
oscillatore: RC interno
MCLR off

12,7 / 13,4 V

PIC12F508 oscillatore: RC interno
MCLR off

12 / 12,7 V (*)

vedere le note di programmazione
PIC12F629 PIC12F675 oscillatore: XT e RC interno con MCLR off

12 / 12,7 V (*) 

vedere le note di programmazione
PIC12F683 oscillatore: RC interno con MCLR off

12 / 12,7 V (*) 

DL4YHF's PIC programmer, WinPIC800, PICPgm Programmer
PIC16F690(**) oscillatore: HS

12 / 12,7 V (*) 

WinPIC800, PICPgm Programmer
PIC16F887 (***) oscillatore: HS

12 

PICPgm Programmer

(*) La tensione applicata al pin MCLR deve essere inferiore a 13,5 V (absolute maximum rating).

(**) Per il PIC16F690, i pin della programmazione sono in posizione analoga ai PIC12F629/675 e PIC12F683. Puo' essere previsto un solo zoccolo per programmare tutti questi PIC.

(***) I due pin Vdd del PIC16F887 sono stati collegati direttamente a 5 V all'uscita del regolatore 7805.

Nota: il 'pin-out' dei microcontrollori a 8 pin non e' unico.

PIC12F629/675, PIC12F508/9, PIC12F683 

  

PIC10F200 (non provato)

 

PIC16F690 

 

   


Riepilogo delle caratteristiche

Tensione di alimentazione

Vin

18 V (es: due pile da 9 V in serie)
Tensione di programmazione

Vpp

tre valori: 12 - 12,7 - 13,4 V
Connessione

-

porta parallela, tramite DB25F + cavo
Zoccoli

 -

DIP8, DIP18 per i PIC piu' comuni

Data sheet

Link


 

 

 
 

 

Si declina ogni responsabilita' per errori ed inesattezze contenute in questa documentazione e per danni di qualsiasi natura derivanti dall'uso dei circuiti e dei programmi descritti. Nomi e marchi citati appartengono ai rispettivi proprietari.