Tutorials - PIC18 by Data Sheet

 

Pagina 41-52

 


 

IL TEMPO DEL RESET ALL' ACCENSIONE

Particolare che viene raramente preso in considerazione è il tempo necessario allo svolgersi della fase di reset al momento della messa sotto tensione del processore : normalmente questo tempo non riveste particolare importanza, ma posso esistere applicazioni critiche in cui, invece, se ne debba tenere conto.

Nei PIC18F sono da considerare fondamentalmente 3 tempi :

  • il tempo di power up

  • il tempo di stabilizzazione dell' oscillatore

  • il tempo di stabilizzazione del PLL

Sul foglio dati, nelle page 46-47, il costruttore riporta i diagrammi delle temporizzazioni in varie condizioni.

Il tempo di stabilizzazione del power up, ovvero dell' applicazione della tensione di alimentazione, è abilitabile o disabilitabile al momento della configurazione. Questo tempo viene valutato da un contatore interno a 11 bit alimentato dal clock INTRC. Alla frequenza di 31 kHz, il tempo richiesto è circa 66 ms, ovvero da quando la tensione applicata ha raggiunto un nvalore sufficiente a mettere in funzione INTRC, vengono contati 66 ms prima di rilasciare la linea di reset. Questo tempo, necessario per assicurare una stabilizzazione della tensione di alimentazione e la predisposizione di tutte le funzioni interne può venire omesso disabilitando !PWRTEN nel registro CONFIG2L.

Un secondo tempo richiesto riguarda l' oscillatore scelto per il clock, in quanto è noto che, dal momento della messa sotto tensione a quando l' oscillazione si stabilizza, è richiesto un certo tempo. Questo tempo riguarda i modi di oscillazione HS, XT, LP e HSPLL, ovvero quelli che fanno uso di un cristallo o risonatore esterno, ma non interessa i modi RC, EC e INTIO, ovvero questi oscillatori sono valutati come privi della necessità di un tempo di stabilizzazione alla messa sotto tensione.
Per gli altri, questo tempo viene valutato da un contatore interno che misura 1024 clock dell' oscillatore (quindi dipende dalla frequenza dello stesso) prima di rilasciare la linea di reset.
Il tempo di stabilizzazione dell' oscillatore non è disabilitabile e viene accodato al tempo di power up se questo è abilitato.

Il terzo tempo è quello necessario al PLL per agganciarsi alla giusta frequenza ed è valutato in 2 ms. Ovviamente va conteggiato solamente se è prevista una modalità con PLL. Anche questo tempo non è disabilitabile e va sommato ai precedenti.

La tabella seguente raccoglie quanto detto finora :

Oscillatore

 Power Up e Brown Out

Uscita dalle modalità
a risparmi energetico

!PWRTEN = 0

!PWRTEN = 1

HSPLL

66 ms + 1024 TOSC + 2 ms

1024 TOSC + 2 ms

1024 TOSC + 2 ms

HS, XT, LP

66 ms + 1024 TOS

1024 TOSC

1024 TOSC

EC, ECIO

66 ms

-

-

RC, RCIO

66 ms

-

-

INTIO1, INTIO2

66 ms

-

-

I fogli dati riportano una serie di diagrammi delle varie possibili sequenze di power up .
A questi tempi sono da aggiungere eventuali tempi addizionali generati dal condensatore o dall' eventuale supervisore di tensione collegati al pin MCLR.

 


 

Lo stato dei registri al reset

Per numerose applicazioni può essere importante conoscere lo stato che i registri interni del PIC assumono dopo un RESET.

Ci viene ancora in aiuto il foglio dati (page 48 e seguenti) in cui sono raccolti, in tabelle, i registri del processore e il valore che i vari bit assumono dopo una condizione di RESET.

Nella tab. 4.3 sono indicati il Program Counter e i bit del registro PCON. Al RESET, qualunque ne sia la causa, il PC punta alla locazione 0000h, da cui parte la prima istruzione del programma.
I bit di RCON sono settati o resettati in dipendenza della causa del RESET e, come abbiamo visto, permetto di riconoscerla da programma ed attivare eventuali procedure.

La TABLE 4.4 elenca gli altri registri e le condizioni dei bit dopo il RESET, che è suddiviso in tre gruppi :

  • Power-On Reset e Brown-Out Reset
     

  • MCLR Reset, WDT Reset, istruzione RESET, Stack Reset
     

  • Wake up da Watchdog o da interrupt

Da notare che la situazione dei bit può essere molto differente a seconda della causa del Reset e che in alcune condizioni, lo stato di vari bit non viene alterato (unchanged).

Da notare pure che non tutti i bit in tutte le condizioni sono posti a 1 o a 0: alcuni, o per alcune condizioni, assumono un valore indeterminato (ovvero 1 o 0 casuali, dipendenti dalle particolarità costruttive del chip o alla sequenza di eventi o di arrivo delle alimentazioni).

A cosa serve una serie così complessa di dati ?

Sostanzialmente, permette di capire che, dopo un evento di reset, si può rendere necessaria la ri configurazione o inizializzazione di registri e periferiche, mentre in altri no.
Questo può essere sfruttato per una programmazione avanzata in cui la valutazione dei tempi di re inizializzazione ha importanza.

 

 


 

 

 

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