.
BROWN-OUT RESET (BOR)
Lo scopo di questo circuito interno è quello di generare un reset nel caso
in cui la tensione di alimentazione vada al di sotto di un livello prefissato
durante il normale funzionamento.
A differenza delle famiglie 16F, nei PIC18F BOR può essere programmato in
diversi modi, attraverso i bit BOREN
del registro di configurazione CONFIG2L.
Nello steso registro, i bit BORV1:0 permettono anche di scegliere il livello
della tensione a cui scatta l' intervento, potendo così adattare l' azione a
diverse tensioni di alimentazione, da 2 a 5V.
Se la Vdd scende al di sotto della tensione di soglia programmata per un tempo
maggiore di TBOR (fisso, parametro 35 rilevabile dai fogli dati), BOR resetta il
processore.
Se è stato abilitato il Power Up Timer (PWRT), il suo effetto sarà utilizzato
al momento del ritorno della tensione sopra il livello di soglia, dilazionando
il riavvio del tempo TPWRT (parametro 33 dai fogli dati). Se la Vdd va
nuovamente al di sotto della soglia durante questo tempo, BOR genera un nuovo
reset e il ciclo si ripete impedendo il riavvio del processore fino alla
corretta stabilizzazione di Vdd.
Va notato che BOR e PWRT sono programmabili indipendentemente tra di loro, per
cui sarà possibile disporre di entrambi o uno solo dei due o anche nessuno dei
due a seconda delle proprie necessità. Ad esempi, con l' impiego del MCLR
collegato ad un gestore sterno di reset l' azione di BOR e PWRT potrà essere
superflua.
BOR può essere impostato per 4 diverse modalità operative :
-
disabilitato completamente; è abilitabile riprogrammando il registro di
configurazione
-
abilitato via software
-
abilitato via hardware, ma non quando il processore è in sleep
-
abilitato via hardware; è disabilitabile riprogrammando il registro di
configurazione
Il primo modo è autoesplicativo : in nessun caso il segnale di BOR viene
considerato come fonte di un reset. Per poterlo utilizzare occorrerà
riprogrammare il registro di configurazione.
Nel secondo modo, BOR può essere abilitato dal programma in corso agendo sul
bit SBOREN (del registro RCON) ; questo permette una grande flessibilità,
potendo inserire o disinserire l' azione di BOR a seconda delle necessità del
programma. Inoltre, per quanto piccolo, anche BOR consuma energia e la sua
esclusione nei momenti di non necessità contribuisce al risparmio energetico,
dove necessario.
Va notato che , quando BOR è sotto controllo software, il livello di intervento
predisposto dai bit BORV1:0 è fissato nel registro di configurazione e non è
modificabile da programma.
Il terzo modo prevede che BOR sia attivo durante il funzionamento normale o
lo stato IDLE a basso consumo, ma ne sia escluso l' intervento quando il
processore è in modo SLEEP. Questo è inteso perchè l' azione di BOR è volta
principalmente a proteggere l'integrità delle operazioni del processore quando
questo è in qualche modo attivo e può eventualmente reagire all' avvenuto
reset. Inoltre , in modo SLEEP, l' esclusione di BOR riduce ulteriormente il
consumo di corrente. E' sottointeso che, nel momento in cui il processore esce
dallo stato di SLEEP, BOR viene riabilitato automaticamente.
Nel quarto modo BOR è abilitato in ogni situazione, SLEEP compreso.
L' intervento di BOR è segnalato dal flag !BOR
in RCON. Però, dato che il
flag va a zero anche a seguito di un Power On Reset , la differenziazione tra i
vari eventi è effettuabile verificando sia !POR
che !BOR : se si è avuto cura
di settare !POR a 1 dopo il primo avviamento del sistema, la condizione in cui
!POR è a 1 e !BOR
è a 0 indicherà l' avvenuta azione di quest' ultimo.
Questa funzione è