OSCILLATORE ESTERNO
Si può fare ricorso ad un oscillatore esterno,
il cui segnale andrà applicato al pin OSC1 mentre OSC2 sarà libero ed
utilizzabile a seconda delle possibilità di configurazione del processore.
Quando usare questa configurazione ? Essenzialmente :
-
quando è già disponibile un generatore clock nel
circuito, ad esempio condiviso con altri processori o periferiche,
per cui si può risparmiare il quarzo ed i componenti associati
-
quando si richiede una precisione o una stabilità
maggiore di quella ottenibile con cristalli o risonatori ceramici:
oscillatori esterni TCXO o OCXO permettono stabilità e precisioni molto
superiori ai normali quarzi.
-
quando è necessario eliminare lo start up time dell'
oscillatore al Reset o all' uscita dalla condizione di Sleep, dato
che è possibile scegliere un oscillatore esterno con tempo di
avviamento minimo
Con Start Up Time si intende il tempo necessario
dall' arrivo della tensione di alimentazione all' entrata in funzionamento
dell' oscillatore : questo tempo, pur essendo breve, non è immediato e
potrebbe essere inadeguato per applicazioni particolarmente critiche (mentre
nella maggior parte dei casi è del tutto trascurabile).
Esistono essenzialmente due modi per ricorrere all'
oscillatore esterno : EC (External
Clock) ed ECIO (External Clock with
I/O).
Modo |
Descrizione |
Configurazione |
EC |
EC prevede che lì ingresso del segnale di clock sia OSC1,
mentre da OSC2 esso viene prelevato per altri usi, diviso per 4 |
|
ECIO |
In questo modo il pin OSC2 diventa un general purpose I/O,
solitamente RA6 del PORT A |
|
Con "external clock" si intende una qualsiasi sorgente di clock
esterna al processore e che disponga di forma d'onda e livelli adeguati. Il
clock esterno può essere condiviso con altre periferiche, curando il fan
out del generatore. In applicazioni a batteria, va considerato il consumo
del generatore esterno che può essere non trascurabile.
OSCILLATORE RC
Un modo economico per attivare l' oscillatore è quello che
prevede l' impiego di una rete R-C esterna, collegata al pin OSC1.
Anche qui sono possibili diverse configurazioni :
Modo |
Descrizione |
Configurazione |
RC |
La rete RC è applicata al pin OSC1 e dal pin OSC2 è
prelevabile la frequenza divisa per 4
|
|
RCIO |
COme sopra, con il pin OSC2 che assume funzioni di GPIO,
solitamente assegnato come RA6 |
|
Lo schema di principio indica come dispositivo di scarica
del condensatore un MOSFET N il cui gate è azionato dall' uscita del
trigger.
In questo modo la frequenza di oscillazione dipende da :
Il valore di R deve essere compreso tra 3 e 100Kohm, mentre
quello di C tra 20 e 300pF.
Ovviamente, contro una notevole riduzione del costo
rispetto ai cristalli, l' oscillatore RC offre parametri di stabilità e
precisione di gran lunga inferiori.
La precisione dipende infatti in buona parte dalle tolleranze di R e C e, se
resistenze stabili e precise (1% o meglio, a strato metallico) sono
facilmente reperibili e ad un costo molto limitato, è ben nota la difficoltà
di trovare condensatori con precisione maggiore del 5% e stabilità NPO per
tutti i possibili valori necessari.
Tensione e temperatura di funzionamento sono altri elementi che influiscono
sensibilmente sul valore della frequenza generata.
La selezione RC permette di avere una "copia" del
clock (FRC/4) del processore sul pin OSC2 e questo è utile sia per
diagnostica sia necessità un clock per altre periferiche.
Se questo non serve, la selezione RCIO mette a disposizione un I/O ,
il che è sempre ben accetto sopratutto nei chip con un basso numero di pin.
Sui alcuni data sheet si trovano curve indicative
del rapporto RC e frequenza ed il campo in cui spazia il clock generabile
varia tra 25 kHz e 4 MHz circa.
Ad esempio, queste curve sono date nel foglio dati della
famiglia 18Fxx2, 39564c.pdf.
Si nota subito che l' andamento della frequenza non è
lineare, principalmente per bassi valori di R (ovvero frequenze alte) ed è
fortemente dipendente dalla tensione di alimentazione.
E questo è confermato da un' altro diagramma:
dove viene espressamente sconsigliato di ottenere frequenze
superiori ai 4 MHz e l' andamento delle curve è sempre legato fortemente
alla tensione di alimentazione; e anche un calcolo supponendo un
normale circuito di carica-scarica di un condensatore, con la solita
formula:
f = 1 / ( 2 pi R C)
da risultati molto approssimativi.
Non pare però che la documentazione Microchip dettagli in
alcun punto una formula di calcolo dei componenti dell' oscillatore RC
esterno e, comunque, non nel foglio dati che stiamo studiando.
in altri documenti si rileva la seguente formula:
f = 950 / ( R + 1.25) (C + 12)
dove:
-
f è in
MHz
-
R è in kohm
-
C è in
pF
Probabilmente questa modalità non è particolarmente
considerata, in quanto troppo dipendente dalle tolleranze dei componenti
usati, dalla tensione di alimentazione e dalla temperatura.
In effetti, da prove effettuate, si sono ottenuti risultati in range
abbastanza ampi:
|
5 k |
10 k |
100 k |
20 pF |
circa 5 MHz |
circa
2.5
MHz
|
circa
350
MHz
|
100 pF |
circa 1.3 MHz |
circa
750
kHz
|
circa
80
kHz
|
300 pF |
circa 400 kHz |
circa
250
kHz
|
circa
25
kHz
|
con una variazione di circa lo 0.2% per K di temperatura e
tra 10 e 25% per variazione di tensione di alimentazione da 3.3 a 5 V.
In effetti, negli enhanced che dispongono di un RC interno e
quindi possono lavorare senza componenti aggiunti, l' RC esterno non ha
particolare senso.
L' RC interno permette una discreta scelta tra i valori più comunemente
usati gestibile interamente da programma. Inoltre va ricordato che la frequenza
dell' oscillatore interno è aggiustabile attraverso il registro OSCTUNE , mentre un aggiustamento dell' oscillatore
RC esterno deve essere effettuata variando fisicamente i componenti.
Il
modo RC esterno può essere preso in considerazione solamente quando sia necessario
ottenere a basso costo una frequenza al di fuori di quelle possibili
attraverso l' oscillatore interno.