Note sulla
programmazione dei PIC12F508/9, PIC12F629/675, PIC10F200/2
Alcuni
microcontrollori PIC contengono impostazioni di fabbrica, che
vengono memorizzate in specifiche locazioni in fase di test.
Questi valori non devono essere sovrascritti, altrimenti
vengono perduti definitivamente e non sono piu'
disponibili.
Il
seguente esempio riguarda un PIC12F508 nuovo e mai programmato.
Leggendo il contenuto del microcontrollore si nota la presenza
di un valore non nullo all'ultima locazione di memoria (0x1FF,
cioe' 511). In questo caso vale 0xC1E. Il simbolo 0xC
rappresenta l'istruzione MOVLW, mentre 0x1E e' il valore di
calibrazione.

PIC12F508 letto con DL4YHF's PIC
Programmer
In
fase di reset questa istruzione porta il valore di
calibrazione nel registro W e poi il program counter viene azzerato. A quel
punto e' possibile copiare quel valore nel registro OSCCAL per tarare
l'oscillatore interno, prima che un'altra istruzione modifichi
il valore contenuto in W. Nel caso in cui non si effettui la
calibrazione e' comunque opportuno non sovrascrivere il
valore memorizzato, in modo che sia utilizzabile per
applicazioni successive.
Prima della programmazione del PIC il
valore di calibrazione va letto e conservato, affinche' possa
essere ripristinato nella stessa locazione alla fine del
processo. Questa procedura in alcuni casi e' guidata dal
software.
Il
programmatore DL4YHF's PIC
Programmer controlla direttamente il valore di
calibrazione (se tale opzione e' attiva), preservandone il
contenuto. I PIC non supportati possono essere aggiunti,
copiando il relativo file ".dev" disponibile presso Microchip
(nel pacchetto MPLAB) in un'apposita cartella del
programma.
Anche
IC-Prog gestisce il valore di calibrazione,
limitatamente ai PIC supportati. Ad esempio, programmando un
PIC12F629, un messaggio invitera' l'utente a scegliere se
sostituire il valore pre-memorizzato con quello presente nel
file hex. Invece il PIC12F508 non e' supportato e non e'
compatibile con il PIC12C508A.
In
alternativa e' possibile inserire manualmente il valore di
calibrazione, precedentemente annotato, nell'ultima locazione
di memoria dopo aver trasferito il file hex.
Nota: per il
PIC12F629/675 altri bit contengono impostazioni di
fabbrica e non devono essere cancellati: sono i bit 13 e 12
della configuration word,
denominati Bandgap Calibration bits (BG1, BG0). E' opportuno
annotare il valore originale, insieme a quello per il
registro OSCCAL, e verificare se il software usato li gestisce
automaticamente.

PIC12F629 letto con IC-Prog
In questo
esempio il valore dei bit BG1 e BG0 e' 11, visto che
in notazione binaria la configuration
word
e':
11000110000111.
Come utilizzare il
valore di calibrazione
Nel
caso in cui l'utente scelga di calibrare l'oscillatore interno
con il valore memorizzato, il procedimento puo' cambiare da un
PIC ad un altro. Il data sheet di ciascun dispositivo spiega
come effettuare la calibrazione.
Per il
PIC12F508, dopo il reset
il registro W contiene il valore di calibrazione. E'
sufficiente spostarlo nel registro OSCCAL, con l'istruzione
MOVWF OSCCAL.
Per il
PIC12F629 e 675, nell'ultima locazione di
memoria e' contenuta l'istruzione RETLW xx, ove xx e' il valore
di calibrazione. Il data sheet suggerisce la seguente
procedura: BSF STATUS, RP0 CALL 0x3FF MOVWF OSCCAL BCF STATUS, RP0
In
ogni caso, dopo l'operazione di calibrazione dell'oscillatore inserire una
routine di delay per garantire
che la frequenza si stabilizzi.
Tensione Vpp
I
microcontrollori citati vanno programmati con una tensione
Vpp di 12 V. Nonostante le specifiche
elettriche di questi PIC indichino che la tensione massima
ammessa al pin !MCLR e' di 13,5 V, nella documentazione
relativa alle specifiche di programmazione (vedere ad esempio
il documunto DS41227D-pag.1 per il PIC12F508) e' indicato il
valore tipico di 12 V. Con il programmatore di PIC per porta
parallela presentato alla pagina http://www.eeng.biz/ppp.htm e' possibile impostare
Vpp a 12 V tramite dip-switch.
Lay-out dei
pin
Prima
di programmare un microcontrollore controllare la funzione dei
pin nel data sheet. Ad esempio il PIC12F629 e il PIC10F200
sono entrambi dispositivi a 8 pin, ma vengono programmati su
zoccoli diversi, perche' i pin coinvolti nella programmazione
sono differenti.
Vai al forum
per discutere di questo argomento. >> vai
|