POR
All' applicazione della tensione di alimentazione, il valore di
questa tensione non sarà istantaneamente quello nominale in ogni punto del
circuito, a causa delle impedenze presenti.
Ancor di più il fenomeno sarà evidente se l' alimentatore, come capita
comunemente, dà tensione al processore partendo da zero e arrivando al massimo
in un certo tempo dovuto alle sue caratteristiche, capacità interne ed esterne,
ecc. (in particolare per essere adeguato ai PIC, questo tempo, detto tempo di
salita e misurato in V/s, deve avere una pendenza di almeno ).
Se la tensione non è al valore corretto, i circuiti a
semiconduttore che costituiscono la logia del microcontroller non potranno
funzionare correttamente.
Dunque è necessario un sistema che blocchi le funzioni del microcontroller fino
a che la tensione non ha raggiunto un minimo adeguato: questa è la funzione del
POR, acronimo di Power On Reset, ovvero reset all' arrivo della tensione di
alimentazione.
I suoi effetti sono:
-
avvia l' esecuzione del programma dalla istruzione contenuta
nella locazione che corrisponde al vettore di RESET
-
avvia il timer PWRT o DRT (a seconda del tipo di chip)
-
sospende la situazione di SLEEP
-
inizializza alcuni SFR
-
viene variato un flag (nello STATUS
o in un altro registro specifico, come PCON,
a seconda del tipo di chip)
-
Il contenuto della RAM non è inizializzato
Dopo che il dispositivo ha ricevuto un Power-On Reset, inizierà
l'esecuzione del codice contenuto nella locazione di memoria programma detta vettore
di reset e che per i PIC è posta tipicamente all' indirizzo 0000h.
POR è il reset per eccellenza e viene generato da un modulo interno.
Questo modulo, che non è disattivabile in alcun modo, ha la funzione di monitorare l' arrivo della tensione Vdd e mantenere l' hardware bloccato fino a che essa non ha superato un certo livello (definito sul foglio dati, attorno a
1-1.8V ). Questo consente ai componenti integrati di partire con un minimo di tensione tale da garantire un funzionamento sicuro di ogni parte della complessa struttura, dall' oscillatore al meccanismo del program
counter.
Come detto, POR dipende dalla tensione di alimentazione: fino a quando è assente, il processore ovviamente non può far nulla. Nel momento in cui la tensione è applicata, essa non appare immediatamente al valore massimo nominale, ma giunge al
chip con una certa rampa, dipendente dalle reattanze del circuito di alimentazione.
Che cosa va considerato qui? Il fattore importante è che l' elettronica integrata, in tecnologia CMOS, è in grado di operare con tensioni molto basse, anche al di sotto di 1.5V, ma lo può fare con sicurezza solamente se è progettata a questo scopo (ad esempio, i core delle moderne CPU). Nel caso dei microcontroller, i progettisti hanno stabilito la necessità di una minima tensione di alimentazione, che, per la maggior parte dei PIC, si situa a
2V o poco meno. Questo vuol dire che nel range tra 2 e 5V il processore opererà regolarmente. Al di sopra di 5V è ammesso un margine del 10% (5.5V) oltre il quale il componente rischia la distruzione. Al di sotto dei 2V, però, è normale che ci sia ancora un funzionamento, ma esso non è garantito, in quanto potrebbe essere attiva in modo regolare solamente parte dei moduli interni e la sicurezza di avere operazioni certe diventa tanto meno probabile quanto più la tensione è al di sotto del minimo.
Quale è la soluzione? Dobbiamo necessariamente mantenere bloccati i circuiti interni del processore fino a che la tensione non raggiunge un valore di sicuro funzionamento. Questa è la prima azione del modulo interno di reset POR.
Vediamo la sua azione in un diagramma. Questo si riferisce specificamente al foglio dati del 16F876/77, ma vale per qualsiasi altro PIC. Va ricordato, comunque, che la diversa struttura delle varie famiglie può introdurre variazioni sui tempi di reset. Inoltre va considerato che il reset agisce anche sulle condizioni di sleep e che sistemi dotati di diverse sorgenti di clock avranno comportamenti tipici che sono conoscibili dal foglio dati.
L' ingresso del comparatore (Vdd Rise Detect ) è collegato direttamente alla Vdd e ne verifica il fronte di salita; fino ad una tensione di soglia, attorno a
1-1.7V, il modulo blocca qualsiasi attività delle altre parti del processore, mantenendo a livello basso la linea Internal Reset.
Si svolgono alcune azioni nel tempo:
-
la tensione Vdd non è presente. Il processore, non alimentato, non può svolgere alcuna operazione
-
la tensione viene applicata; essa inizia ad alimentare le varie parti della logica integrata, ma il modulo di reset mantiene ogni componente bloccato
-
dopo un certo tempo (dipendente dalle reattanze del sistema di alimentazione) la tensione raggiunge il valore di soglia impostato dal costruttore: il modulo di reset avvia le sue operazioni
-
Se è stato abilitato il timer di power on (PWRT) impostando nella configurazione _PWRTE_ON, viene fatto trascorrere un tempo TPWRT pari a circa 72 ms (+ 1024 Tosc di un oscillatore RC interno dedicato, Onchip RC Osc nel diagramma. a 31kHz circa, che è del tutto indipendente dagli altri
oscillatori); esso, seguito da un contatore a 10 bit, determina il tempo base del
reset. Questo tempo non è un fattore di precisione, ma dipende dalla Vdd, dalla temperatura, dalle caratteristiche del processore; si assesta tra 40 e 140 ms - param. #31).
PWRT e l' aggiunta di un tempo "supplementare" per il
reset diventa utile nel caso in cui occorra garantire una ulteriore attesa per l' assestamento della tensione di alimentazione. Ad esempio, nei PIC dotati di PLL, l' avvio di questo richiede un certo tempo di stabilizzazione.
-
Un altro contatore a 10 bit, questa volta alimentato dall' oscillatore principale che è configurato all' avvio come primario, determina il
tempo TOST; questo tempo ulteriore è dedicato esplicitamente alla
stabilizzazione dell' oscillatore. Da notare che TPWRT non dipende dall' oscillatore primario ed è fisso, dato che la frequenza
del suo specifico oscillatore interno è stabilita dal costruttore, mentre TOST è "contabile" solamente quando l'
uscita dell' oscillatore primario è sufficientemente stabile da produrre un segnale accettabile da parte della logica integrata e dipende, in durata, dalla frequenza dell' oscillatore stesso.
-
a questo punto il modulo di reset toglie il livello basso con cui bloccava l' esecuzione del programma
Nel frattempo sono stati settati il vettore di reset a 00h e i default degli
SFR con un valore ben definito, indicato nel foglio dati del componente. La linea interna che effettua queste operazioni dipende dal segnale
Internal Reset, che, come si vede nel diagramma, viene sbloccata alla fine della sequenza di avvio.
Lo stato di tutte le locazioni della memoria RAM sarà
sconosciuto dopo un Power-On Reset.
Il POR azzererà il flag relativo, pure chiamato POR e
porterà a 1 i flag TO e PD.
Se è stato attivato il modulo di Brown-Out (BOR) il relativo
flag non sarà inizializzato.
Questa struttura è presente nei Midrange e nei PIC18, mentre
nei processori Baseline, il timer PWRT non è implementato, sostituito da un
timer DRT, con funzione analoga. La differenza fondamentale è costituita dal
fatto che la presenza di PWRT è programmabile, mentre DRT è fisso.
Vediamo in un diagramma l' azione del POR, con il pin MCLR
disabilitato o collegato alla Vdd
Il funzionamento è analogo a quanto visto in precedenza
-
la tensione raggiunge il livello di soglia del modulo POR.
Il processore viene resettato e si attiva il timer DRT
-
DRT va overflow dopo il tempo fissato (tipicamente 1.25 o
18ms a seconda del tipo di oscillatore configurato) e la linea di Internal
Reset viene rilasciata.
Anche nel caso dei Baseline, come per tutti i PIC, l' azione di
un livello basso applicato al pin MCLR può indurre un prolungamento del tempo
di reset.
-
la tensione raggiunge il livello di soglia del modulo POR.
Il processore viene resettato e si attiva il timer DRT.
Però il livello di MCLR è mantenuto basso da un circuito esterno
(pulsante, condensatore in carica, supervisore di tensione o altro), per cui
la linea Internal Reset è bloccata
-
quando MCLR viene rilasciato, parte il timer DRT
-
al termine del conteggio, se MCLR continua ad essere
rilasciato, anche Internal Reset va a 1 e il processore può cominciare a
lavorare
Le caratteristiche generali del pin POR possono essere
semplificate in una breve lista:
-
è una funzione totalmente interna al processore
-
è attivato dalla tensione di alimentazione
-
non è gestibile dall' utente
-
effettua alcune inizializzazioni di SFR
-
è distinguibile da altre cause di reset per come si
delimita la situazione di alcuni flag
Se abbiamo chiaro che il Reset è l' operazione di azzeramento e riavvio
del microcontroller e che essa è generata da diverse cause, è ben possibile
che l' applicazione possa avere la necessità di determinare quale è stata la
causa di un reset.
Questo è possibile attraverso l' analisi dello stato dei
bit To, PD, POR, BOR che assumono condizioni diverse subito dopo l'evento di
reset.