Tutorials - PIC18 by Data Sheet

 

Pagina 41-52


Numerose sono le sorgenti che possono richiamare un RESET; alcune sono sempre attive, altre sono abilitabili dal CONFIG e programmabili.

 


 

POWER ON RESET (POR)

Il modulo interno POR , non accessibile dall' esterno, produce un reset quando la tensione di alimentazione è al di sotto un certo livello. Questo consente, indipendentemente dalla presenza di altri segnali di reset esterni, di inizializzare correttamente il processore nel momento in cui viene applicata la tensione di alimentazione. Per molte applicazioni, quindi, la presenza di un segnale esterno di reset non è necessaria.

Un flag !POR nel registro RCON (Reset CONtrol register) viene azzerato a seguito di una azione del circuito di power on reset.

Questa funzione è sempre attiva


 

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 :

  1. disabilitato completamente; è abilitabile riprogrammando il registro di configurazione

  2. abilitato via software

  3. abilitato via hardware, ma non quando il processore è in sleep

  4. 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 è abilitabile e programmabile



RESET PER ISTRUZIONE

I processori della serie 18F dispongono di una specifica istruzione del set che ha come scopo il RESET del processore. 
Non si tratta di un semplice salto all' indirizzo 0000H di partenza, ma di un vero e proprio reset hardware che coinvolge la maggior parte dei registri interni.

Una serie di tabelle sul foglio dati indicano quali registri sono modificati e come a seconda dell' origine del reset.

Questa funzione è dipende dall' uso dell' istruzione relativa.  

 


 

RESET CAUSATO DAL WATCHDOG

L' intervento del watchdog per esaurimento del tempo impostato, genera un reset. Una trattazione più completa è contenuta nel capitolo dedicato a questa funzione.

Questa funzione è abilitabile e programmabile.

 


 

RESET CAUSATO DALLO STACK

Una particolarità della famiglia 18F è quella di disporre di un meccanismo per intervenire nel caso il programma abbia creato un overflow o un underflow dello stack. 
Ovviamente questa è una condizione limite, dovuta a gravi errori nel flusso del programma, ma che impedirebbe il regolare procedere delle istruzioni seguenti; quindi l' azione di un reset è del tutto giustificata.

Quindi, nel momento in cui il contatore dello stack si trova a indicare una posizione oltre il limite massimo o minimo, può essere generato un reset. A questo punto, una analisi delle cause del reset, comprendente anche la situazione dello stack, diventa indispensabile per fornire gli elementi necessari ad implementare una manovra correttiva (modifica del sorgente o altro).

Questa funzione è abilitabile con il bit STVREN del registro di configurazione CONFIG4L. La causa (overflow o underflow) è identificata dai flag STKFUL e STKUNF nel registro STKPTR.

 


 

 

 

Copyright © afg. Tutti i diritti riservati.
Aggiornato il 01/11/10.