Tutorials - PIC Peripherals

 

Il RESET


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:

  1. la tensione Vdd non è presente. Il processore, non alimentato, non può svolgere alcuna operazione

  2. la tensione viene applicata; essa inizia ad alimentare le varie parti della logica integrata, ma il modulo di reset mantiene ogni componente bloccato

  3. 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

  4. 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. 

  1. 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.

  2. 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

  1. la tensione raggiunge il livello di soglia del modulo POR. Il processore viene resettato e si attiva il timer DRT

  2. 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.

  1. 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

  2. quando MCLR viene rilasciato, parte il timer DRT

  3. 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

 


Riconoscimento della causa di un Reset

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.

A questo riguardo potete consultare altre pagine dedicate.


 

 

Copyright © afg. Tutti i diritti riservati.
Aggiornato il 28/04/13.