Arduino a 20 MHz?


9

Mi chiedo perché Arduino non funzioni a 20 MHz, la frequenza per cui l'AVR è specificato. Ora, funzionando a 16 MHz, stiamo sprecando il 20% delle prestazioni per niente.

Io non credo che ci siano tutte le implicazioni quando si sostituisce il risonatore 16 MHz con un tipo di 20 MHz, probabilmente con la sola eccezione per la velocità di trasmissione del bootloader. O c'è?

Qualcuno sa perché i designer di Arduino hanno scelto 16 MHz?


Non dimenticare di impostare i fusibili quando lo fai
portforwardpodcast,

1
@portforwardpodcast non è necessario cambiare i fusibili. Sono già impostati su "Oscillatore esterno full-swing".
Gerben,

Risposte:


6

Non c'è motivo hardware (per quanto ne sappia) che non è possibile eseguire un Arduino adatto a 20 MHz. Si verificherebbero inesattezze temporali minori nel software, poiché la configurazione standard di Arduino sembra funzionare meglio se la velocità di clock è di 8 o 16 MHz.

Sospetto che ciò sia dovuto in gran parte a ragioni storiche. Le prime schede Arduino erano basate su chip che arrivavano solo a 16 MHz, come il ATmega8. L'uso della stessa configurazione per tutti i chip mantiene tutto un po 'più semplice e coerente.

Ci sono ulteriori informazioni qui sui problemi di temporizzazione: http://forum.arduino.cc/index.php?topic=158223.0#msg_1186708


1
Grazie per la tua risposta. Puoi approfondire "il potere esatto di 2"? Il periodo di 1 secondo durante il quale vengono contati gli impulsi di clock non significa nulla per un microcontrollore, ma conosce solo i tick di clock. Inoltre, 16 MHz non è una potenza esatta di 2, che dovrebbe essere 16,777216 MHz.
Joris Groosman,

@JorisGroosman Mi dispiace non averlo spiegato correttamente. Riguarda il modo in cui il core di Arduino calcola i microsecondi dalle zecche dell'orologio. Questo argomento del forum fornisce una spiegazione molto migliore di quella che potrei.
Peter Bloomfield,

4

Puoi e io lo faccio.

Tecnicamente non è più un Arduino, immagino. Ho creato la mia scheda personale, la sostituzione di un risonatore su una scheda richiederà una saldatura fine, ma è sicuramente possibile.

Ci sono alcuni trucchi: qualsiasi cosa legata al tempo (ad esempio millis ()) verrà eseguita più velocemente di quanto dovrebbe - il 25% in più di millis () al secondo. Inoltre, il bootloader prevede 16mhz, quindi non sarai in grado di riprogrammarlo a questa velocità. Ho acquistato un programmatore USBASP: si aggancia alla griglia dei pin 2x3 su un lato della scheda e ti consente di riprogrammarlo senza il bootloader (questo è il modo in cui il bootloader viene inserito in primo luogo!). Avrai bisogno di almeno 4,5 volt a 20mhz per evitare problemi, rispetto a 3,78 volt per 16mhz - questo significa che le batterie si scaricheranno un po 'più velocemente (le batterie 3x1,5v si esauriranno abbastanza rapidamente), e se hai motori o altri disegni sul batterie, 3 batterie da 1,5 V probabilmente non funzioneranno anche se sono nuove.

In alternativa, andando nella direzione opposta esatta, più bassa è la velocità di clock, minore è la tensione necessaria - per alcuni progetti, potresti non aver bisogno della velocità di clock - puoi scendere a 1,8 v funzionando a 4mhz.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.