Arduino pada 20 MHz?

9

Saya ingin tahu mengapa Arduino tidak berjalan pada 20 MHz, frekuensi AVR ditentukan untuk. Sekarang, berjalan pada 16 MHz, kami menyia-nyiakan kinerja 20% tanpa biaya.

Saya tidak berpikir ada apa implikasi ketika Anda mengganti resonator 16 MHz dengan jenis 20 MHz, dengan mungkin satu-satunya pengecualian untuk baudrate di bootloader. Atau disana?

Adakah yang tahu mengapa perancang Arduino memilih 16 MHz?

Joris Groosman
sumber
Jangan lupa mengatur sekering saat Anda melakukan ini
portforwardpodcast
1
@portforwardpodcast tidak perlu mengubah sekering. Mereka sudah diatur ke "Osilator eksternal ayunan penuh".
Gerben

Jawaban:

6

Tidak ada alasan perangkat keras (sejauh yang saya ketahui) bahwa Anda tidak dapat menjalankan Arduino yang sesuai pada 20 MHz. Anda akan mengalami ketidaktepatan waktu kecil dalam perangkat lunak, karena konfigurasi standar Arduino tampaknya bekerja paling baik jika kecepatan clock 8 atau 16MHz.

Saya menduga ini sebagian besar karena alasan historis. Papan Arduino awal didasarkan pada chip yang hanya naik hingga 16 MHz, seperti ATmega8. Menggunakan konfigurasi yang sama untuk semua chip hanya membuat semuanya sedikit lebih sederhana dan lebih konsisten.

Ada informasi lebih lanjut di sini tentang masalah waktu: http://forum.arduino.cc/index.php?topic=158223.0#msg_1186708

Peter Bloomfield
sumber
1
Terima kasih atas jawaban anda. Bisakah Anda menguraikan "kekuatan tepat 2"? Periode 1 detik dimana pulsa clock dihitung tidak berarti apa-apa bagi mikrokontroler, ia hanya tahu clock ticks. Terlebih lagi, 16 MHz bukan daya yang tepat dari 2, yang harus 16,777216 MHz.
Joris Groosman
@ JorisGroosman Maaf saya tidak menjelaskannya dengan benar. Ini tentang cara inti Arduino menghitung mikrodetik dari kutu jam. Topik forum ini memberikan penjelasan yang jauh lebih baik daripada yang saya bisa.
Peter Bloomfield
4

Anda bisa, dan saya lakukan.

Secara teknis ini bukan Arduino lagi, kurasa. Saya membuat papan sendiri, mengganti resonator di papan akan membutuhkan penyolderan yang bagus, tapi itu pasti mungkin.

Ada beberapa gotcha: Apa pun yang terkait waktu (mis. Millis ()) akan berjalan lebih cepat dari yang seharusnya - 25% lebih banyak millis () per detik. Selain itu, bootloader mengharapkan 16mhz, jadi Anda tidak akan dapat memprogram ulang dengan kecepatan ini. Saya membeli pemrogram USBASP - kaitnya ke kisi pin 2x3 di satu sisi papan, dan memungkinkan Anda memprogram ulang tanpa bootloader (beginilah cara bootloader diletakkan di tempat pertama!). Anda membutuhkan setidaknya 4,5 volt pada 20mhz untuk menghindari masalah, dibandingkan dengan 3,78 volt untuk 16mhz - ini berarti baterai akan menguras lebih cepat (baterai 3x1.5v akan berkurang dengan cepat), dan jika Anda memiliki motor atau pengundian lain pada baterai, 3 baterai 1.5V mungkin tidak akan berfungsi meskipun masih baru.

Atau, dengan arah yang berlawanan, semakin rendah kecepatan clock, semakin sedikit voltase yang dibutuhkan - untuk beberapa proyek, Anda mungkin tidak memerlukan kecepatan clock - Anda bisa turun ke 1.8v yang berjalan pada 4mhz.

AMADANON Inc.
sumber