Tutorials - PIC18 by Data Sheet

 

Pagina 41-52

 


 

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  :

  1. Reset dovuto al pin MCLR portato a livello basso (durante il funzionamento normale o durante il funzionamento in risparmio energetico)

  2. Reset da arrivo della tensione di alimentazione (Power-On Reset o POR)

  3. Reset dovuto ad una sotto tensione di alimentazione (BOR Brown Out Reset)

  4. Reset in seguito all' istruzione RESET

  5. Reset dovuto al time out del watchdog (WDT)

  6. 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 :

  • inizializzare in modo definito l' hardware del chip 

  • portare il program counte ad un indirizzo preciso da cui iniziare la lista delle istruzioni da eseguire

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

 


 

 

 

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