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 V
pp

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.

 

 
 

 

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.