PIC tips & tricks
 
  Box
PIC18F2550/4550
Configurazione tipi oscillatore del clock

La configurazione del clock nei PIC18F2550/4550 (e nei fratelli PIC18F2455/4455), rispetto al PIC16F877A, che ho usato fino ad ora, è un pò più complicata e merita più attenzione da parte dell'utente.
Mentre, nel PIC16F877A, esiste un solo registro di configurazione, nei PIC18F2550/4550, per configurare il clock, sono previsti 4 registri (2 di configurazione e 2 di controllo).
I registri di configurazione sono CONFIG1L e CONFIG1H, i quali selezionano l'oscillatore e le opzioni dei prescaler e postscaler.
I registri di controllo sono OSCCON e OSCTUNE.
OSCCON seleziona il clock attivo e OSCTUNE è usato per correggere la frequenza di INTOSC, oltre a selezionare la fonte di clock a bassa frequenza.

Modi di oscillatore

Ci sono, a disposizione, 12 modi diversi di oscillatore, 4 di questi, comportano l'uso di 2 tipi di oscillatore insieme.
Il modo oscillatore si sceglie impostando i bits FOSC3:FOSC0 che si trovano nel registro CONFIG1H.

 
Modo FOSC3:FOSC0 Descrizione
XT 000x QUARZO / Risonatore ceramico
HS 110x QUARZO / Risonatore ceramico (alta velocità)
EC 0101 Clock esterno con Fosc/4 in uscita su RA6
ECIO 0100 Clock esterno con RA6 come I/O
XTPLL 001x QUARZO / Risonatore ceramico e PLL attivo
HSPLL 111x QUARZO / Risonatore ceramico (alta velocità) e PLL attivo
ECPLL 0111 Clock esterno con Fosc/4 in uscita su RA6 e PLL attivo
ECPIO 0110 Clock esterno con RA6 come I/O e PLL attivo
INTXT 1010 Oscillatore interno usato come clock del microcontroller e XT come clock dell'USB
INTHS 1011 Oscillatore interno usato come clock del microcontroller e HS come clock dell'USB
INTCKO 1001 Oscillatore interno usato come clock del microcontroller ed EC come clock dell'USB con Fosc/4 in uscita su RA6
INTIO 1000 Oscillatore interno usato come clock del microcontroller ed ECIO come clock dell'USB con RA6 come I/O
 


click per ingrandire

Nella figura a sinistra, si può vedere lo schema delle fonti di clock, tratto dal datasheet Microchip.
Cliccare sull'immagine per ingrandire.


Nei PIC18F2550/4550, l'oscillatore primario è parte del modulo USB e non si può associare a nessun'altra fonte di clock. Perciò, il modulo USB, deve essere controllato dalla fonte primaria, mentre, gli altri moduli ed il microcontroller, possono essere controllati da fonti secondarie od oscillatori interni.

A causa dei requisiti di temporizzazione imposti da USB, quando il modulo USB è abilitato, è richiesto un clock interno di 6 MHz o 48 MHz.
Fortunatamente, il microcontroller e le altre unità periferiche, non hanno la necessità di andare a questa velocità di clock, quando si usa l'oscillatore primario.

Ci sono numerose scelte per soddisfare i requisiti di clock del modulo USB ed offrire ancora flessibilità per pilotare il resto del dispositivo dalla fonte di oscillatore primaria.

Oscillatore a quarzo/risonatore ceramico

Nei modi XT, XTPLL, HS e HSPLL, il quarzo o il risonatore ceramico, sono connessi a OSC1 ed OSC2 per stabilire l’oscillazione.
Un postscaler interno permette di selezionare una frequenza di clock oltre a quella del quarzo o risonatore. La divisione di frequenza è determinata dai bits di configurazione di CPUDIV, con i quali, si può selezionare una frequenza di clock uguale alla frequenza dell’oscillatore, oppure 1/2, 1/3 o 1/4 della stessa.

Fonte di clock da oscillatore esterno

Quando il microcontroller è nel modo di oscillatore HS, si può usare anche un clock da fonte esterna.

In questo caso, il pin di OSC2/CLKO risulta aperto.

I modi EC, ECIO, ECPLL ed ECPIO richiedono un segnale di clock esterno connesso al pin OSC1. Non c’è bisogno di un oscillatore di "messa in marcia" dopo un azzeramento o uscendo dal modo sleep.

Nei modi EC ed ECPLL, viene ottenuta, nel pin OSC2, la frequenza dell’oscillatore, divisa per 4.

Questo segnale si può usare per prove o per sincronizzare gli altri moduli. La figura mostra le connessioni per il modo oscillatore EC.

Nei modi ECIO ed ECPIO, l’oscillatore funziona come nei modi EC ed ECPLL, eccetto che il pin OSC2 diventa un pin di I/O per uso generale.

Il pin I/O diventa il bit 6 di PORTA (RA6). La figura mostra le connessioni per il modo oscillatore ECIO.
I postscaler interni, che sono usati nei modi XT e HS, si possono usare anche nei modi EC ed ECIO.

Moltiplicatore di frequenza PLL

I PIC18F2550/4550 includono un circuito Phase Locked Loop (PLL). Questo è usato specialmente per applicazioni USB con oscillatori a bassa velocità e può anche essere usato come fonte di clock per il microcontroller.

click per ingrandire

(Cliccare sull'immagine per ingrandire)
Il PLL è attivo nei modi XTPLL, HSPLL, ECPLL ed ECPIO.
È progettato per produrre un segnale di riferimento a 96MHz, con un ingresso fisso di 4MHz. L'uscita può essere divisa ed usata, sia per USB, che per il clock del microcontroller.

Avendo, il PLL, una frequenza di ingresso fissa, ci sono otto opzioni di prescaler, per scegliere la frequenza di ingresso al PLL.

C’è anche un’opzione postscaler separata per derivare il clock del microcontroller dall'uscita PLL.
Questo permette, al modulo USB ed al microcontroller, di usare lo stesso ingresso di oscillatore ed operare a differenti velocità di clock.

A differenza del postscaler per i modi XT, HS ed EC, le scelte disponibili sono 1/2, 1/3, 1/4 ed 1/6 dell’uscita PLL.

I modi HSPLL, ECPLL ed ECPIO usano frequenze fino a 48MHz. Il prescaler divide il segnale di entrata fino a 12 volte per produrre i 4MHz che pilotano il PLL.
Il modo XTPLL può usare solo una frequenza di ingresso di 4MHz, per pilotare direttamente il PLL.

Impostazione oscillatore per operazioni USB

Quando il PIC18F4550 è usato per applicazioni USB, deve avere un clock a 6 MHz o a 48 MHz per le operazioni USB, dipendente da quale modo, Low-Speed o Full-Speed, si deve usare. Questo richiede attenzione, nel selezionare una frequenza di oscillatore e programmare il dispositivo.

OPERAZIONE USB LOW-SPEED

Il clock, per il modo USB Low-Speed, è derivato dalla catena dell’oscillatore primario e non direttamente dal PLL. Esso è diviso per 4, per produrre il richiesto clock a 6 MHz.

Questo perchè, il microcontroller, può usare solo una frequenza di clock a 24 MHz, quando il modulo USB è attivo e la fonte clock, del controller, è uno dei modi dell’oscillatore primario (XT, HS o EC, con o senza PLL).

Questa restrizione non si applica se la fonte di clock, del microcontroller, è l’oscillatore secondario o il blocco oscillatore interno.

Tabella uso modi XT, HS, EC, ECIO
 
Freq.
ingresso
Divisione clock MPU
CPUDIV1:CPUDIV0
Freq.
Microcontr.
USB
Low-speed
USB
Full-speed
48MHz 1 (00)
2 (01)
3 (10)
4 (11)
48MHz
24MHz
16MHz
12MHz
-
6MHz
-
-
48MHz
-
-
-
40MHz 1 (00)
2 (01)
3 (10)
4 (11)
40MHz
20MHz
13,33MHz
10MHz
-
-
-
-
-
-
-
-
24MHz 1 (00)
2 (01)
3 (10)
4 (11)
24MHz
12MHz
8MHz
6MHz
6MHz
-
-
-
-
-
-
-
20MHz 1 (00)
2 (01)
3 (10)
4 (11)
20MHz
10MHz
6,67MHz
5MHz
-
-
-
-
-
-
-
-
16MHz 1 (00)
2 (01)
3 (10)
4 (11)
16MHz
8MHz
5,33MHz
4MHz
-
-
-
-
-
-
-
-
12MHz 1 (00)
2 (01)
3 (10)
4 (11)
12MHz
6MHz
4MHz
3MHz
-
-
-
-
-
-
-
-
8MHz 1 (00)
2 (01)
3 (10)
4 (11)
8MHz
4MHz
2,67MHz
2MHz
-
-
-
-
-
-
-
-
4MHz 1 (00)
2 (01)
3 (10)
4 (11)
4MHz
2MHz
1,33MHz
1MHz
-
-
-
-
-
-
-
-
 
OPERAZIONE USB CON CLOCK DIVERSO DAL MICROCONTROLLER

Il modulo USB, in entrambi i modi Low-speed e Full-speed, può funzionare in modalità asincrona, rispetto al microcontroller ed agli altri moduli.

Questo significa che, le applicazioni, possono usare l'oscillatore primario per il clock USB, mentre il microcontroller funziona, con una fonte di clock separata, ad una velocità più bassa.

Se è necessario gestire l’applicazione interamente solo da una fonte di clock, la modalità Full-speed offre una più grande selezione di frequenze di clock del microcontroller.

Tabella uso modi XTPLL, HSPLL, ECPLL, ECPIO
 
Freq.
ingresso
Divisione PLL
PLLDIV2:PLLDIV0
Divisione clock MPU
CPUDIV1:CPUDIV0
Freq.
Microcontr.
USB
Low-speed
USB
Full-speed
48MHz 12 (111) 2 (00)
3 (01)
4 (10)
6 (11)
48MHz
32MHz
24MHz
16MHz
-
-
6MHz
-
48MHz
48MHz
48MHz
48MHz
40MHz 10 (110)
24MHz 6 (101)
20MHz 5 (100)
16MHz 4 (011)
12MHz 3 (010)
8MHz 2 (001)
4MHz 1 (000)
 

Il blocco oscillatore interno

I PIC18F2550/4550 includono un blocco oscillatore interno che genera 2 differenti segnali di clock; ognuno può essere usato come fonte di clock per il microcontroller.
Se il modulo USB non è usato, l’oscillatore interno elimina la necessità di un circuito oscillatore esterno sui pin OSC1 e/o OSC2.

(Cliccare sull'immagine per ingrandire)

L’uscita principale (INTOSC) è una fonte di clock a 8 MHz che può essere usata per pilotare direttamente il clock del micro. Essa pilota anche il postscaler INTOSC, che può selezionare frequenze da 31 kHz a 4 MHz.

L’uscita INTOSC è abilitata quando viene selezionata una frequenza da 125 kHz a 8 MHz.

L’altra fonte clock è l’oscillatore interno RC (INTRC), che fornisce una frequenza nominale di 31 kHz.
INTRC è abilitata se viene selezionata come fonte clock del micro.

La frequenza della fonte di clock (INTOSC diretta, INTRC diretta o INTOSC postscaler), è selezionata configurando i bit IRCF del registro OSCCON.

Modi dell'oscillatore interno

Quando l'oscillatore interno è usato come fonte di clock del microcontroller, uno degli altri modi di oscillatore (clock esterno o quarzo/risonatore ceramico) devono essere usati come fonte clock USB. La scelta della fonte clock USB è determinata dal particolare modo di oscillatore interno.
Ci sono 4 distinti modi disponibili.
Di questi 4 modi, solo INTIO libera un pin addizionale (OSC2/CLKO/RA6) per uso come port I/O.

Modo INTXT
Il clock per USB è dato dall’oscillatore in modo XT con quarzo/risonatore ceramico.
Con questo modo, la massima frequenza di ingresso è di 4MHz e, siccome non viene usato il PLL, è impossibile usarlo per USB, nonostante il datasheet lo indichi.

Modo INTHS
Il clock per USB è dato dall’oscillatore in modo HS con quarzo/risonatore ceramico.
Con questo modo, la massima frequenza di ingresso è di 24MHz, che è anche l'unica che è possibile usare per USB low-speed (6MHz) perchè viene divisa per 4.

Modo INTCKO
Il clock per USB è dato da un clock esterno con ingresso sul pin OSC1/CLKI; sul pin OSC2/CLKO si ottiene FOSC/4.

Modo INTIO
Il clock per USB è dato da un clock esterno con ingresso sul pin OSC1/CLKI; il pin OSC2/CLKO funziona come I/O digitale (RA6).

In queste due modalità, la frequenza massima d'ingresso è di 48MHz, che verrà divisa per 2 dal postscaler dell'oscillatore, e poi divisa per 4 per essere usata per USB low-speed (6MHz).
Per applicazioni USB low-speed, si possono usare, in pratica, solo fonti a 48MHz e 24MHz.
Per applicazioni USB full-speed, è possibile usare una fonte esterna soltanto da 48MHz, che piloterà direttamente il modulo USB.

Tabella uso modi INTXT, INTHS, INTCKO, INTIO
 
Freq.
ingresso
Divis. clock esterno
CPUDIV1:CPUDIV0
USB
Low-speed
USB
Full-speed
Divis. clock interno
OSCCON6:OSCCON4
Freq.
Microcontr.
48 MHz 1 (00)
2 (01)
3 (10)
4 (11)
-
6 MHz
-
-
48 MHz
-
-
-
1 (111)
2 (110)
4 (101)
8 (100)
16 (011)
32 (010)
64 (001)
128 (000)
8 MHz
4 MHz
2 MHz
1 MHz
500 kHz
250 kHz
125 kHz
31 kHz
24 MHz 1 (00)
2 (01)
3 (10)
4 (11)
6 MHz
-
-
-
-
-
-
-
 

 

 

Ultima modifica  

 
Privacy Policy Cookie Policy