Saya punya proyek yang menurut saya paling cocok untuk ATMega328P. Namun, dalam setiap proyek sederhana yang saya lihat, orang selalu memasang osilator eksternal 16MHz. Dari apa yang saya lihat, seharusnya memiliki osilator internal 8MHz. Proyek saya tidak memerlukan banyak kekuatan pemrosesan, juga tidak perlu waktu yang sangat tepat (selain untuk UART dan I2C). Saya punya programmer juga, jadi saya tidak perlu khawatir tentang bootloader.
Apakah ada alasan bagi saya untuk menggunakan osilator eksternal?
sumber
Saat Anda menggunakan UART, osilator kristal akan disarankan. Jika bukan karena itu, Anda dapat menggunakan osilator internal. Beberapa MCU memiliki osilator internal yang dipangkas pabrik, yang dapat cocok untuk operasi UART.
sumber
"Tidak peka waktu". UART sangat sensitif terhadap waktu. Anda akan mendapatkan sampah lengkap jika tidak disinkronkan dengan tepat.
Opsi 1: Gunakan kristal normal. Ganti sekering pilih jam dengan tepat. Pilihan kristal tergantung pada baud apa yang ingin Anda gunakan / seberapa cepat Anda ingin benda ini pergi. Ada "kristal ajaib" yang akan memberi Anda 0% kesalahan untuk harga standar (jika mereka diproduksi dengan sempurna). Lihat tabel di Bagian 20 [USART0] untuk info lebih lanjut (Anda telah membaca lembar data .... benar ???) :).
Opsi 2: Anda dapat mengkalibrasi osilator internal menggunakan kristal 32khz jika daya bermasalah. Dengan 32khz Anda bisa mendapatkan arus uA dalam mode tidur (Saya sudah turun ke ~ 2uA). Anda harus mensetup kalibrasi rutin yang melibatkan timer mulai / berhenti dan timer2 bergantian ke mode asinkron.
Kode 328P mungkin berbeda ... fungsi ini saat ini bekerja pada 48/88 (dengan definisi F_CPU / baud yang sesuai. Agak jelek / tidak sepenuhnya di-refactored tapi saya telah belajar lebih baik daripada mengacaukan hal-hal yang berfungsi saat Anda sedang pada tenggat waktu. Cari di forum AVRFreaks untuk "tune 32khz crystal" sesuatu seperti itu. Ini hanya rasa untuk apa yang akan Anda masuki ... Belum tentu apa yang akan berhasil.
sumber
Perlu juga dicatat bahwa kristal membutuhkan waktu lama untuk memulai. Itu sebenarnya karena presisi: hanya membutuhkan energi dari pita frekuensi yang sangat sempit. Ini bisa menjadi beban untuk hal-hal yang dioperasikan dengan baterai di mana Anda membangunkan MCU untuk waktu yang sangat singkat setiap saat: menunggu ms pada daya penuh menarik untuk memulai kristal adalah kerugian bersih. Resonator keramik lebih akurat daripada osilator RC internal tetapi kurang dari kristal, dan mulai sesuai.
Tentu saja atmega 16MHz meminum lebih banyak jus dan membutuhkan tegangan lebih tinggi daripada yang 8MHz, tetapi kristal 8MHz (atau lebih rendah, hingga 32kHz) tersedia; pilihan belaka ini juga bisa menjadi penghemat energi.
sumber
Jika Anda tidak membutuhkan banyak waktu atau ketepatan waktu, tidak perlu osilator eksternal. Saat membongkar beberapa printer lama, saya kebetulan melihat banyak IC tetapi tidak ada osilator tunggal di papan.
sumber
Saya kira Anda sudah melihat catatan aplikasi ini: AVR053: Kalibrasi osilator RC internal .
Saya kira dari itu, dan catatan aplikasi dari komentar @drxzcl di atas, Anda harus dapat memutuskan secara teoritis apa yang benar.
sumber