Arduino ha un orologio hardware interno
Sì, Arduino ha un orologio hardware interno. Le schede Arduino UNO hanno due chip di microcontrollore a bordo uno è ATMEGA328P e il secondo è ATMEGA16U2. Entrambi questi chip di microcontrollore hanno un orologio interno di 8MHz. ATMEGA16U2 viene utilizzato per la comunicazione seriale tra la scheda Arduino e il computer mentre ATMEGA328P è il controller principale sulla scheda Arduino utilizzata per la costruzione logica.
Sorgente di orologio hardware interno
Arduino ha due fonti per gli orologi hardware interni come descritto sopra. Entrambi sono usati per guidare due microcontrollori separati.
1. Orologio ATmega328p
Il controller Arduino Uno Atmega328P normalmente utilizza un oscillatore di cristalli esterno per il suo orologio che è 16 MHz, ma ha anche un generatore di clock interno di 8MHz. Possiamo configurare l'oscillatore interno del microcontrollore come sorgente di segnale di clock a 8 MHz.
ATMEGA328P viene fornito con un oscillatore RC con un segnale di clock da 8 MHz. Il suo fusibile CKDIV8 è programmato in base alla frequenza a 8 MHz, che si traduce in 1.Orologio di sistema 0MHz. Questa fonte di clock predefinita offre la libertà agli utenti in grado di progettare l'orologio desiderato con qualsiasi interfaccia di programmazione. Il valore massimo è impostato per il tempo di avvio del microcontrollore ATMEGA328P.
Per impostazione predefinita, le configurazioni di clock seguenti sono disponibili anche in microcontrollore ATmega328p e una sorgente di clock esterna:
Oscillatore RC interno calibrato
L'oscillatore RC interno fornisce un microcontrollore 8.Orologio 0MHz. Questa sorgente di clock dipende dai livelli di temperatura e tensione, il che significa che una leggera variazione in queste condizioni può influire sulle prestazioni del microcontrollore. Per selezionare questo orologio per il microcontrollore, generalmente sono programmati i fusibili per cksel. Se selezioniamo che l'orologio delle impostazioni funzionerà senza alcuna fonte esterna che la seguente intervallo di frequenza può essere raggiunta mediante la programmazione dei fusibili di cksel come:
Intervallo di frequenza (MHz) | Cksel3… 0 |
7.3-8.1 | 0010 |
Oscillatore interno 128khz
128kHz è anche un orologio predefinito per il microcontrollore ATmega328. È un oscillatore a bassa potenza e non progettato per requisiti di precisione elevati la sua frequenza è ottimale per la temperatura 3 V e 25 gradi C. Per selezionare questo orologio, dobbiamo impostare il valore dei fusibili di cksel "0011". La fase di frequenza seguente può essere ottenuta con i fusibili di cksel:
Intervallo di frequenza (KHz) | Cksel3… 0 |
128kHz | 0011 |
Sorgente di orologio esterno
ATMEGA328P è progettato in modo tale che per aumentare la velocità di esecuzione dell'istruzione possiamo collegare una fonte di clock esterna di 16 MHz-20MHz come il risonatore ceramico utilizzato in Arduino Uno.
Per guidare il microcontrollore utilizzando sorgenti di orologio esterno abbiamo due pin disponibili per un oscillatore Xtal1 e XTal2. Arduino UNO utilizza questi due pin di ATMEGA328P per collegare un risonatore ceramico esterno per il suo requisito di frequenza in quanto questa sorgente di clock è più efficiente dell'orologio interno da 8MHz.
I pin 9 e 10 vengono utilizzati per collegare i due pin dell'oscillatore esterno. La tabella seguente mostra la configurazione del pin per l'origine dell'orologio esterno:
Pin 9 | Xtal | Oscillatore esterno | Collegare il pin 9 del microcontrollore a un pin dell'oscillatore esterno |
Pin 10 | Xtal | Esterno Oscillatore | Collegare il pin 10 del microcontrollore al secondo pin dell'oscillatore esterno |
2. Orologio ATmega16U2
Arduino UNO utilizza ATMEGA16U2 come microcontrollore per la comunicazione seriale tra Arduino e Computer. Questo microcontrollore funge da convertitore USB a TTL. Come ATMEGA328P, questo microcontrollore viene fornito anche con un oscillatore RC interno a 8 MHz e un orologio di sistema di 1MHz. Il tempo di avvio è impostato sul valore massimo. Tutte queste impostazioni aiutano gli utenti a programmarlo con qualsiasi interfaccia di programmazione e progettare la loro fonte di clock richiesta o collegare un oscillatore esterno per aumentare l'efficienza del microcontrollore.
Per impostazione predefinita, le configurazioni di clock seguenti sono disponibili anche nel microcontrollore ATmega16U2 e una sorgente di clock esterna:
Oscillatore RC interno calibrato
ATMEGA16U2 ha un oscillatore RC incorporato che può dare ad Arduino fino a 8 MHz di orologio. Dipende anche dalla temperatura, quindi la variazione di calore e tensione può influire sulle prestazioni del microcontrollore. Questo orologio può essere selezionato programmando i fusibili a cksel interni. Durante il reset OscCal Register raggiunge il suo valore predefinito e non richiede alcuna fonte di clock esterna se selezionato al valore di 8MHz predefinito di oscillator. Di seguito sono riportate le modalità operative per l'oscillatore interno calibrato:
Intervallo di frequenza (MHz) | Cksel3… 0 |
7.3-8.1 | 0010 |
Pll
Il PLL viene utilizzato per generare un'alta gamma di frequenza specialmente per la comunicazione seriale USB tra Arduino e Computer. Può generare fino a 48 MHz di frequenza. PLL riceve una bassa frequenza di ingresso dal suo pin Xtal o qualsiasi altra sorgente di clock esterna come in Arduino Uno Crystal Oscillator viene utilizzato come fonte di clock per la comunicazione seriale che aiuta ATMEGA16U2 per la conversione da USB a TTL.
Sorgente di orologio esterno
Allo stesso modo come nel microcontrollore ATmega328p possiamo anche configurare un orologio esterno con ATmega16U2. Quando si utilizzano una sorgente di clock esterna, dovrebbero essere evitati cambiamenti improvvisi della frequenza dell'orologio per un funzionamento regolare di MCU. In Arduino Uno Crystal Oscillator viene utilizzato come fonte di orologio esterno per microcontrollore. L'oscillatore cristallino è più efficiente del suo risonatore in ceramica concorrente a causa del basso costo e dell'alta tensione e tolleranza alla frequenza. I fusibili a cksel devono essere programmati per eseguire un oscillatore esterno.
L'origine dell'orologio esterno può essere collegata nella configurazione di seguito:
Pin 1 | Xtal1 | Oscillatore esterno | Ingresso all'amplificatore oscillatore e all'orologio interno |
Pin 2 | XTAL2/PC0 | Oscillatore esterno | L'uscita da oscillatore quando abilitata da fusibile, può essere utilizzata anche come pin I/O |
Conclusione
Le schede Arduino sono molto flessibili in termini di fonti di clock. Arduino ha due microcontrollori a bordo che sono ATMEGA328 e ATMEGA16U2. Entrambi questi microcontroller sono dotati di un orologio da 8 MHz interno ma per ottenere la massima uscita e le prestazioni aumentate utilizziamo un orologio esterno di 16 MHz per entrambi separatamente. Qui abbiamo discusso di come i microcontroller Arduino possono essere utilizzati con il loro oscillatore di orologio interno e abbiamo evidenziato il possibile modo di aggiungere un orologio esterno.