PIC18

 

Il CONFIG nei PIC18


Il CONFIG in dettaglio.

Vediamo in dettaglio alcune funzioni.


;   PORTB A/D Enable bit:
;
CONFIG PBADEN = DIG    ; PORTB<4:0> pins are configured as digital I/O
;CONFIG PBADEN = ANA    ; PORTB<4:0> pins are configured as analog input

Questo assegna ad alcuni pin di PORTB la funzione di ingresso analogico oppure digitale.
Non presente nella maggior parte dei PIC16F, si trova ad essere un punto comune di errore da parte del programmatore che non ha letto a fondo il foglio dati. Infatti, il default assegna ai PORTB la funzione analogica, il che ne rende impossibile l' utilizzo come port digitali.
Se non si vuole sfruttare la funzione analogica, occorre disabiltarla (sarà sempre possibile ri abilitarla durante il programma).
Se non si utilizza il PORTB oppure lo si utilizza come analogico,  questa opzione di configurazione potrà essere ignorata.



;   CCP2 MUX bit:
;
CONFIG CCP2MX = RB3    ; CCP2 input/output is multiplexed with RB3
;CONFIG CCP2MX = RC1    ; CCP2 input/output is multiplexed with RC1

Questo consente di assegnare la funzione CCP2 ad un pin piuttosto che ad un' altro. Anche esiste un default, che dovrà essere variato se serve la funzione alternativa.
Se non si utilizza il modulo CCP2, questa opzione di configurazione potrà essere ignorata.
Da notare che alcuni processori hanno un ampio set di pin assegnabili ad un modulo o ad un altro e, in questo caso,  la lettura del foglio dati è indispensabile.


;   Extended Instruction Set Enable bit:
;CONFIG XINST = OFF      ; Instruction set extension disabled (Legacy mode)
;CONFIG XINST = ON      ; Instruction set extension enabled

Il default esclude il set di istruzioni esteso. A meno di utilizzare una programmazione particolare o un compilatore C che sfrutti queste istruzioni, normalmente questa opzione di configurazione potrà essere ignorata.



;   Background Debugger Enable bit:
;CONFIG DEBUG = ON      ; Background debugger enabled, RB6 and RB7 to ICSP
;CONFIG
DEBUG = OFF      ; Background debugger disabled, RB6 and RB7 as GPIO

Per utilizzare il motore di debug in-circuit, occorre abilitarlo.
Il default esclude il debugger. 



;   Single-Supply ICSP Enable bit:
;
CONFIG LVP = OFF        ; Single-Supply ICSP disabled
;CONFIG LVP = ON        ; Single-Supply ICSP enabled

Il default di consegna dei PIC da parte della fabbrica prevede che la modalità di programmazione a bassa tensione sia abilitata. Dovendo utilizzare il chip in debug ICD e/o in programmazione ICSP, il m odo LVP dovrà essere disabilitato. 



;   Oscillator Selection bits:
;CONFIG
OSC = HS        ; HS oscillator
;CONFIG OSC = HSPLL     ; as above + PLL (Clock Frequency = 4 x FOSC1)
;CONFIG OSC = LP        ; LP Oscillator
;CONFIG OSC = XT        ; XT Oscillator
;CONFIG OSC = HS        ; HS Oscillator
;CONFIG OSC = RC        ; External RC oscillator, RA7 input, CLKO function on RA6
;CONFIG OSC = RCIO      ; External RC oscillator, RA7 input, GPIO on RA6
;CONFIG OSC = EC        ; EC oscillator, RA7 input, CLKO function on RA6
;CONFIG OSC = ECIO      ; EC oscillator, RA7 input, GPIO on RA6
;CONFIG OSC = INTIO2    ; Internal oscillator, GPIO on RA6 and RA7
;CONFIG OSC = INTIO2PLL ; as above + PLL
;CONFIG OSC = INTIO1    ; Internal oscillator, CLKO function on RA6, GPIO on RA7
;CONFIG OSC = INTIO1PLL ; as above + PLL
;

Di capitale importanza è la scelta di uno dei modi di funzionamento dell' oscillatore; una errata selezione rispetto all' hardware utilizzato renderà impossibile o critico il funzionamento del processore.


;   Low-Power Timer1 Oscillator Enable bit:
;CONFIG LPT1OSC = OFF   ; Timer1 configured for higher power operation
;CONFIG LPT1OSC = ON    ; Timer1 configured for low-power operation

Di capitale importanza è la scelta di uno dei modi di funzionamento dell' oscillatore; una errata selezione rispetto all' hardware utilizzato renderà impossibile o critico il funzionamento del processore.


;   Fail-Safe Clock Monitor Enable bit:
;CONFIG FCMEN = OFF     ; Fail-Safe Clock Monitor disabled
;CONFIG FCMEN = ON      ; Fail-Safe Clock Monitor enabled

La funzione di Fail Safe per il clock principale è documentata nei fogli dati. Il default la esclude. Se si abilita occorrerà poi che il software ne possa tenere conto.


;   Internal/External Oscillator Switchover bit:
;CONFIG IESO = OFF      ; Oscillator Switchover mode disabled
;CONFIG IESO = ON       ; Oscillator Switchover mode enabled

Se non si intende utilizzare la possibilità di commutare due diverse sorgenti per il clock, questa linea può essere omessa, in quanto il default da questa opzione.


;   Power-up Timer Enable bit:
 
CONFIG PWRT = ON      ; PWRT enabled
;CONFIG PWRT = OFF      ; PWRT disabled

Solitamente il Power On Timer è utilizzato, ma, in particolari condizioni o durante il debug, deve essere disabilitato.


;   Brown-out Reset Enable bits:
 
CONFIG BOR = ON       ; Brown-out Reset enabled in hardware only (SBOREN is disabled)
;CONFIG BOR = OFF       ; Brown-out Reset disabled
;CONFIG BOR = SOFT      ; Brown-out Reset enabled and controlled by software
;CONFIG BOR = NOSLP     ; Brown-out Reset enabled in hardware only and disabled in Sleep

Il BOR, nei PIC18, può essere definito in varie modalità; il foglio dati ne descrive le varie opzioni.
In particolare, esiste la possibilità di selezionare la tensione di scatto del trigger e almeno due modalità di controllo da programma.


;   Brown-out Reset Voltage bits:
;CONFIG BORV = 0        ; Soglia reset 4.5V
 
CONFIG BORV = 1       ; Soglia reset 4.2V
;CONFIG BORV = 2        ; Soglia reset 2.7V
;CONFIG BORV = 3        ; Soglia reset 2.0V


;   MCLR Pin Enable bit:
;CONFIG MCLRE = OFF     ; RE3 input pin enabled; MCLR disabled
 
CONFIG MCLRE = ON     ; MCLR pin enabled; RE3 input pin disabled

Il pin MCLR può essere programmato come ingresso esterno di reset (e questo è il default) oppure come pin di ingresso digitale. 
La linea può essere omessa se si utilizza la funzione di reset esterno.


;
;   Watchdog Timer Enable bit:
 
CONFIG WDT = OFF      ; WDT disabled (control on SWDTEN bit)
;CONFIG WDT = ON        ; WDT enabled
;
;   Watchdog Timer Postscale Select bits:
;CONFIG WDTPS = 1       ; 1:1
;CONFIG WDTPS = 2       ; 1:2
;CONFIG WDTPS = 4       ; 1:4
;CONFIG WDTPS = 8       ; 1:8
;CONFIG WDTPS = 16      ; 1:16
;CONFIG WDTPS = 32      ; 1:32
;CONFIG WDTPS = 64      ; 1:64
;CONFIG WDTPS = 128     ; 1:128
;CONFIG WDTPS = 256     ; 1:256
;CONFIG WDTPS = 512     ; 1:512
;CONFIG WDTPS = 1024    ; 1:1024
;CONFIG WDTPS = 2048    ; 1:2048
;CONFIG WDTPS = 4096    ; 1:4096
;CONFIG WDTPS = 8192    ; 1:8192
;CONFIG WDTPS = 16384   ; 1:16384
;CONFIG WDTPS = 32768   ; 1:32768

Il waychdog è per default abilitato. In tal caso occorre selezionarne un prerscaler.
Se non si intende utilizzare questa funzione, va disabilitata; in tal caso la scelta del prescaler va omessa.


;   Stack Full/Underflow Reset Enable bit:
;CONFIG  STVREN = OFF   ; Stack full/underflow will not cause Reset
 
CONFIG STVREN = ON    ; Stack full/underflow will cause Reset

Se non si intende utilizzare la possibilità di generare un interrupt per errore nello stack, la funzione va disabilitata.
Se è abiltata occorrerà che il software gestisca questa opzione.


I PIC18 consentono una dettagliata selezione delle aree di memoria che possono essere protette dall lettura esterna o dalla scrittura.
Normalmente queste funzioni sono disabilitate e vanno abilitate in funzione delle proprie necessità di sicurezza.
Durante il debug è opportuno non abilitare queste funzioni.

Determinazione della dimensione del blocco di boot

;   Boot Block Size Select bits:
;CONFIG BBSIZ = BB256   ; 256 Word
;CONFIG BBSIZ = BB512   ; 512 Word
;CONFIG BBSIZ = BB1K    ;1024 Word


Protezione del blocco di boot

;   Code Protection bit Block 0 and 1:
;CONFIG CPx = ON        ; Block x code-protected
;CONFIG CPx = OFF       ; Block x not code-protected
 
CONFIG CP0 = OFF       ; code protection block 0 (ON/OFF)
 
CONFIG CP1 = OFF       ; code protection block 1 (ON/OFF)
;
;   Boot Block Code Protection bit:
 
CONFIG CPB = OFF      ; code protection bootblock  (ON/OFF)

Protezione del contenuto della EEPROM

 ;   Data EEPROM Code Protection bit:
 
CONFIG CPD = OFF      ; code protection eeprom (ON/OFF)

Protezione dalla scrittura durante il funzionamento del programma per alcuni blocchi della Flash

;   Write Protection bit Block 0 and 1:
;CONFIG WRTx = ON       ; Block x write-protected
;CONFIG WRTx = OFF      ; Block x not write-protected
  CONFIG WRT0 = OFF     ; Write protect block 0 (ON/OFF)
 
CONFIG WRT1 = OFF     ; Write protect block 1 (ON/OFF)
 
CONFIG WRTB = OFF     ; Write protect bootblock (ON/OFF)

Protezione dei registri di CONFIG da una possibile modifica durante il funzionamento

;   Configuration Register Write Protection bit:
 
CONFIG WRTC = OFF     ; Write protecte configurations (ON/OFF)

Protezione della EEPROM da una sovrascrittura durante il funzionamento

;   Data EEPROM Write Protection bit:
 
CONFIG WRTD = OFF     ; Write protect eeprom (ON/OFF)

Protezione delle tabelle dalla lettura esterna

;   Table Read Protection bit Block 0 and 1:
;CONFIG EBTRx = ON      ; Block x protected from table reads in other blocks
;CONFIG EBTRx = OFF     ; Block x not protected from table reads in other blocks
 
CONFIG EBTR0 = OFF    ; Read protect table block 0 (ON/OFF)
 
CONFIG EBTR1 = OFF    ; Read protect table block 1 (ON/OFF)

Protezione del blocco di boot dalla lettura esterna

;   Boot Block Table Read Protection bit:
;CONFIG EBTRB = ON      ; Boot block protected from table reads in other blocks
 
CONFIG EBTRB = OFF    ; Boot block not protected from table reads in other blocks



Si ricorda che le linee configurabili in questa sezione possono essere diverse da PIC a PIC in funzione delle periferiche integrate e delle caratteristiche della famiglia.

La lettura dei fogli dati del processore usato è l' unica via per essere a conoscenza delle varie opzioni.
 

 


 

 

 

Copyright © afg. Tutti i diritti riservati.
Aggiornato il 27/03/11.