all' arrivo della tensione, ci si aspetta che il sistema si
avvii ed inizi ad eseguire le istruzioni del programma che la sua memoria
contiene.
Per poter fare questo occorre che, raggiunto un livello di
tensione adeguato a far funzionare correttamente il circuito, un meccanismo interno predisponga i registri in modo tale
che essi assumano valori definiti, detti di default, e che costituiscano una
base sicura da cui le operazioni possano iniziare; tra questi, dovrà essere
predisposto il contatore programma (Program
Counter) per puntare sulla prima
istruzione da cui iniziare la scansione dei codici e la loro
esecuzione.
Occorre anche che, se la tensione cade oltre un livello minimo
al di sotto del quale l' elettronica non avrebbe certezza di operare regolarmente, il funzionamento del processore sia
interrotto.
Tutte queste operazioni sono svolte dalla circuiteria di RESET, che
è integrata nel microcontroller.
Dunque, il RESET è:
-
Una condizione, solitamente dipendente
dalla tensione di alimentazione
-
Cessata la causa del RESET, il
processore partirà ad eseguire il programma contenuto nella sua memoria
programma.
e ha lo scopo di:
-
"azzerare" la situazione interna
del processore e portarla ad un punto definito, predisponendo la logica interna alle condizioni necessarie alla partenza
-
pre settare vari bit dei registri interni (i cosiddetti default al POR)
-
caricare il program counter con il valore del vettore di
reset
E nei PIC ?
Sarebbe più corretto dire i RESET, in quanto i PIC
dispongono di una gamma considerevole di sorgenti del RESET.
Possiamo individuare le principali le cause principali in:
-
una azione esterna sul pin MCLR (Master Clear
Reset)
-
una azione interna dovuta al sistema di supervisone della
presenza-assenza della tensione di alimentazione (POR - Power On
Reset)
-
una azione interna dovuta al sistema di supervisione del
livello di tensione BOR - Brown Out Reset
-
intervento del modulo di Watch Dog
-
a seguito di un cambio di livello su alcuni pin pre
definiti oppure dell' uscita del comparatore
-
a seguito di una istruzione specifica
-
a seguito di un overflow dello stack
Non tutti questi meccanismi sono presenti in tutti i PIC delle
varie famiglie; ad
esempi, gli ultimi due non sono disponibili nei Baseline e nei Mid-Range.
Per esemplificare, ecco lo schema logico del modulo di RESET
del PIC10F206 (Baseline)
del PIC16F88 (Midrange)
del 12F1822 (Enhanced Midrange)
e del 18F2321 (High End PIC18)
Gli schemi qui sopra indicano in modo semplificato (!) le possibili
fonti del RESET: osserviamo che, con l' aumentare delle prestazioni del chip, aumenta anche
la complessità del suo sistema di reset.
In tutti i chip sono presenti tre sorgenti base:
-
POR Power-On Reset da arrivo della tensione di alimentazione
Reset
-
MCLR Master Clear Reset dovuto al pin MCLR portato a livello basso
durante il funzionamento
normale o durante il funzionamento
in risparmio energetico
-
WDT WatchDogTimer Reset dovuto al time out del watchdog
Nei Baseline si aggiungono altre relative alla filosofia di
funzionamento di questi chip:
-
a seguito di un cambio di livello su alcuni pin pre
definiti
-
a seguito di un cambio di livello dell' uscita del
comparatore
Nei PIC della famiglia 18F4321 sono disponibili, oltre ai tre
fondamentali, altri tre tipi diversi, alcuni comuni con i Midrange, altri propri
della famiglia High End :
-
Reset dovuto ad una sotto tensione di alimentazione (BOR
- Brown Out Reset)
-
Reset in seguito all' istruzione RESET
-
Reset dovuto ad un overflow o underflow dello stack
A parte l' iniziale POR al momento dell' avviamento, le altre sorgenti di
reset sono principalmente delle "emergenze" che forzano il riavvio
del sistema a seguito di una situazione anormale (BOR, watchdog, stack
overflow) oppure interrompono lo stato di sleep a causa del rilevamento di un
qualche evento (variazione di livello su pin o sul comparatore).