| |
Programmatore di PIC per porta parallela
Vai al forum per
discutere del programmatore. >> vai
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:
- IC-Prog, noto software di
programmazione freeware.
- DL4YHF's PIC
Programmer, un altro programmatore freeware.
Permette di caricare i parametri dei microcontrollori
direttamente dal paccheeto MPLAB di Microchip.
-
WinPIC800
- PICPgm
Programmer ottimo
software con molti dispositivi supportati!
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
|
P>
(*) La tensione applicata al pin MCLR deve essere inferiore a 13,5 V
(absolute maximum rating).
(**) Il PIC16F690 puo'
essere programmato nello zoccolo DIP8, come il
PIC12F629.
(***) 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
-
-
-
WinPIC800 - supporta
vari PIC, inclusi il 12F683 ed il 16F690.
-
|
|