IL RESET
E sarebbe più corretto dire i RESET, in quanto, similmente ai clock, i PIC18F
dispongono di una gamma considerevole di sorgenti del RESET.
Lo schema qui sopra indica in modo semplificato (!) le possibili cause del
RESET nei PIC della famiglia 18F4321.
Sono disponibili almeno 6 tipi diversi :
-
Reset dovuto al pin MCLR portato a livello basso (durante il funzionamento
normale o durante il funzionamento
in risparmio energetico)
-
Reset da arrivo della tensione di alimentazione (Power-On Reset o POR)
-
Reset dovuto ad una sotto tensione di alimentazione (BOR Brown Out Reset)
-
Reset in seguito all' istruzione RESET
-
Reset dovuto al time out del watchdog (WDT)
-
Reset dovuto ad un overflow o underflow dello stack
Le temporizzazioni relative al RESET sono derivare dall' oscillatore INTRC
e/o dall' oscillatore primario. Il registro RCON contiene alcuni bit che
permetto di verificare la situazione .
Quali sono le funzioni del RESET ? Essenzialmente due :
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).
MCLR
Il pin MCLR permette un reset dovuto ad un segnale esterno.
Occorre innanzitutto considerare che c'è una differenza sensibile tra il POR (Power On
Reset), che inizializza il processore al momento del collegamento con la
tensione di alimentazione e un segnale esterno di reset.
Ovvero, per inizializzare il processore al
momento dell' arrivo della tensione di alimentazione, è necessario e
sufficiente il segnale interno POR, che è generato da un modulo integrato e non
dipende nè necessita di pin esterni.
Quindi utilizzare il pin MCLR come semplice POR non è particolarmente utile.
Diversa è la considerazione nel caso in cui l' applicazione richieda un
segnale di reset , ad esempio per "resettare"
il circuito manualmente o in conseguenza di qualche evento esterno, per
sincronizzare l' avviamento con altri circuiti, per temporizzare la partenza del
processore o nel caso in cui la tensione di alimentazione sia tale da creare
problemi al POR interno (ad esempio per il suo tempo di salita o per le
incertezze del livello).
Il metodo più
semplice per utilizzare questo pin anche come POR è collegarlo a livello alto (Vdd) con una
resistenza di pull up (valore consigliato < 40 kohm., usato tipicamente 10
kohm). All' interno del processore, un circuito di filtraggio del rumore
consente di eliminare eventuali disturbi di breve durata.
|
Il circuito può essere ampliato aggiungendo un condensatore, il cui
tempo di carica manterrà a livello basso MCLR per un certo tempo dopo l' arrivo della
tensione di alimentazione e da un diodo che ha lo scopo di scaricare
rapidamente il condensatore al mancare della Vdd. Questa aggiunta può
rendersi necessaria nel caso in cui il tempo di salita della Vdd sia
eccessivamente lento o soggetto a irregolarità o, per qualsiasi motivo,
si voglia dilazionare il reset per un tempo pari a quello necessario alla
sufficiente carica di C..
La connessione tra la resistenza R e il pin MCLR potrà essere portata a
livello basso con un pulsante per disporre di un reset manuale.
|
In generale, però, si può dire che la presenza del condensatore (e dell' eventuale
diodo) non è necessaria, in quanto al momento dell' applicazione della tensione
di alimentazione anche il segnale interno POR collabora alla generazione del
reset. Inoltre, la funzione interna di BOR (Brown Out Reset), che
è programmabile sia come azione che come livello di intervento, è più che
adeguata per generare reset nel caso di fluttuazioni eccessive della tensione
durante il funzionamento.
Quindi, la presenza di C potrà essere utile solo se
si intendono allungare i tempi del reset iniziale.
Non ha "effetti di
filtraggio": semplicemente la tensione al pin MCLR arriverà dopo un
tempo dipendente da R e da C.
Comunque , il tempo di salita previsto per la tensione di alimentazione Vdd è
di 5mV per ms, ovvero ci si aspetta che Vdd raggiunga da zero il valore nominale
in circa 100ms (a 5V) e il condensatore dovrà essere calcolato adeguatamente
nel caso si abbia a che fare con fronti di salita più lenti.
Certamente
utilizzando un condensatore di elevata capacità, si neutralizzeranno picchi
brevi di variazione della tensione di alimentazione o una sua salita
irregolare. Ma questa situazione non è per niente ideale e, nel caso
il tempo di salita della tensione di
alimentazione sia eccessivo o irregolare
e dove sia richiesta una particolare precisione e
temporizzazione di intervento, la soluzione corretta e unica possibile per il pin MCLR
è quella di farlo gestire dal segnale proveniente da un chip di reset o supervisore della
tensione.
Ce ne sono disponibili sul mercato moltissime varietà, dai
semplici a tre pin in package TO92 o SOT23, tipo transistor, a quelli più complessi e dotati
di altre funzioni addizionali.
La stessa Microchip ne produce diversi
modelli. L' uso di uno di questi integrati, se pure fa lievitare il costo del
sistema, è garanzia del sicuro reset in tempi e modi ben definiti,
necessari in
applicazioni industriali, automazione e in ogni campo dove è
richiesta una elevata sicurezza di funzionamento anche in ambienti
elettricamente non perfetti.
Va ricordato che un dispositivo che funziona bene sul banco, collegato ad un
alimentatore da laboratorio o a buone batterie, potrà avere problemi una volta
posto in ambiente reale di lavoro, sopratutto se alimentato in modo non
ideale.
Così pure il pin MCLR è necessario quando è richiesto un sincronismo di
avviamento dipendente da altri circuiti, ad esempio bloccando il processore fino
a che le periferiche non saranno nelle condizioni di funzionamento
adeguate. Ad esempio, una interfaccia RS-232 con alimentazione charge pump
avrà un ritardo di alcuni millisecondi per diventare operativa dopo l'
applicazione dell' alimentazione e in quel tratto di tempo non avrà la
possibilità di trasmettere segnali adeguati, per cui può essere utile far
dipendere l' avviamento del PIC da questo ritardo.
Però , come detto, va tenuto presente che un circuito esterno di reset non
è obbligatorio nei PIC18F: se le condizioni dell' applicazione non richiedono
un segnale esterno di reset, il pin MCLR può essere programmato come ingresso digitale per
uso generico, attraverso il bit MCLRE del registro di configurazione CONFIG3H,
diventando RE3. In queste condizioni, il pin MCLR viene escluso dalla funzione di
reset e il POR è generato internamente in modo del tutto adeguato per molta
parte delle applicazioni.
AVVERTENZA:
Va osservato che RE3 funziona solamente
come
ingresso e non è
programmabile come uscita.
|
Invece il pin MCLR è necessario per la Vpp durante la
programmazione in-circuit (ICSP)
nel modo HV.
In questa condizione, condensatori o altri
circuiti collegati a MCLR dovranno essere separati adeguatamente dal segnale
dell' ICSP. Ad esempio, una resistenza R1 in serie (tipicamente 1kohm) è utile
a limitare la
corrente al pin e lo isola nel caso in cui si utilizzi una
programmazione ICSP che invierà una tensione più elevata (Vpp) rispetto
alla Vdd. Allo stesso scopo, questa resistenza può essere sostituita
vantaggiosamente con
un diodo shottky (bassa caduta di tensione).