Saya selalu menggunakan osilator internal yang ada foto karena saya tidak pernah menemukan kebutuhan untuk menjalankan apa pun pada frekuensi lebih tinggi dari 8 MHz (yang merupakan tercepat foto yang saya gunakan cenderung dapat pergi). Apakah ada alasan, selain melampaui 8 MHz, itu berarti saya harus menggunakan osilator eksternal? Sepertinya ada satu hal lagi yang salah dengan saya, tetapi saya tertarik mendengar apa yang dilakukan orang lain.
microcontroller
pic
design
oscillator
SimonBarker
sumber
sumber
Jawaban:
Seperti yang orang lain katakan, frekuensi dan stabilitas frekuensi yang akurat adalah alasan untuk menggunakan resonator keramik atau kristal eksternal. Resonator beberapa kali lebih akurat daripada osilator RC internal dan cukup baik untuk komunikasi UART. Kristal jauh lebih akurat, dan perlu jika Anda melakukan beberapa jenis komunikasi lain seperti CAN, USB, atau ethernet.
Alasan lain untuk kristal eksternal adalah pilihan frekuensi. Kristal datang dalam berbagai frekuensi sedangkan osilator internal biasanya satu frekuensi dengan kemungkinan pilihan 4x PLL diaktifkan. Beberapa PIC inti 24 bit yang lebih baru memiliki pengganda dan pembagi dalam rantai jam sehingga Anda dapat menekan berbagai pilihan frekuensi dari frekuensi osilator internal tunggal.
Tentu saja ada berbagai aplikasi yang secara inheren membutuhkan frekuensi atau waktu yang akurat selain komunikasi. Waktu adalah properti dalam elektronik yang dapat kita ukur paling akurat dengan harga murah, jadi terkadang masalahnya diubah menjadi salah satu pengukuran waktu atau menghasilkan pulsa dengan waktu yang akurat.
Lalu ada aplikasi yang membutuhkan sinkronisasi jangka panjang dengan blok lain. Osilator 1% akan dimatikan lebih dari 14 menit per hari jika digunakan sebagai dasar untuk jam waktu nyata. Waktu jangka panjang yang akurat juga mungkin diperlukan tanpa harus tahu waktu sebenarnya. Misalnya, Anda ingin sekelompok perangkat berdaya rendah untuk bangun sekali setiap jam untuk bertukar data selama beberapa detik dan kemudian kembali tidur. Kristal 50ppm (sangat mudah didapat) akan dimatikan tidak lebih dari 180ms dalam satu jam. Osilator RC 1% bisa dimatikan dalam 36 detik. Itu akan menambah tepat waktu dan karenanya kebutuhan daya ke perangkat yang hanya perlu berkomunikasi selama beberapa detik setiap jam.
sumber
Presisi. Jam internal tidak tepat, dapat dipengaruhi oleh kebisingan.
Presisi independen suhu. Osilator khas dapat sangat bervariasi. Osilator kompensasi suhu khusus dapat diperlukan dalam aplikasi suhu rendah atau tinggi, atau jika suhu sangat bervariasi.
Kecepatan. Osilator internal mungkin tidak mencapai kecepatan tertinggi IC. Yang eksternal diperlukan untuk itu.
Tegangan. Kecepatan timer internal mungkin tergantung pada voltase yang digunakan.
Dibutuhkan beberapa jam. Beberapa aplikasi ingin berbagi osilator.
Aplikasi khusus di mana jam internal mungkin tidak mudah digunakan. Membagi jam internal mungkin lebih sulit daripada melempar kristal arloji 31 kHz murah untuk aplikasi yang menjaga waktu.
Dari atas kepala saya, ATMEGA 328 yang menggunakan Arduino membutuhkan kristal eksternal pada 5V untuk kecepatan maksimalnya. Versi lily pad beroperasi pada 8 MHz, pada osilator internal karena terbatas pada 3.3V. Launchpad MSP430 Value Line terbatas pada 10 MHZ pada 3V, 8 pada 2.5V.
sumber
Stabilitas frekuensi akan lebih tinggi dengan yang eksternal. Jadi, jika Anda memiliki aplikasi yang benar-benar tergantung pada MCK freq, maka Anda mungkin perlu menggunakan yang eksternal.
Tetapi sebagian besar MCU modern memiliki osc internal yang cukup stabil, oleh karena itu saya pikir ini dulu pertanyaan yang lebih besar beberapa tahun yang lalu. Juga ada semakin banyak cara untuk memotong internal, dan mengimbangi penyimpangan suhu (dll.).
Di sisi lain ada cara lain untuk memastikan bahwa Anda disinkronkan, di beberapa negara stabilitas freq di jaring daya adalah 50Hz ± 0,01Hz dan tempat-tempat lain seperti Swedia sebenarnya memiliki ± 0,001Hz dan saya telah melihat proyek menggunakan ini untuk menjaga hal-hal yang disinkronkan. Dan kemudian Anda tidak lagi tergantung pada mcu freq dan Anda dapat menggunakan yang internal. Tapi ini sedikit topik :)
sumber
Stabilitas frekuensi adalah yang utama, terutama untuk komunikasi serial dengan kecepatan tinggi. Tetapi itu juga memunculkan kebutuhan sesekali untuk kristal pada frekuensi yang aneh untuk mendapatkan baud rate yang tepat, karena pilihan terbatas yang diberikan oleh pembagi jam kepada Anda.
sumber
Saya sebenarnya menemukan skenario di mana 1% tidak cukup baik untuk UART.
Jika ada dari kalian yang pernah mendengar tentang board dev mikrokontroler Teensy ++ v1.0, ia memiliki UART yang sangat sensitif. Saya memiliki host saya set baud pada 115200, dan itu diatur pada 115200 dan untuk waktu yang paling lama tidak tahu mengapa itu tidak membaca data dengan benar. Ternyata tuan rumah saya mengirim lebih dekat ke 114300 baud. (115200 - 114300) / 115200 = ~ 0,9% kesalahan. Saya mencobanya dengan dua MCU yang berbeda dan mereka bekerja dengan baik.
Intinya adalah: terlepas dari aplikasi Anda, jika akurasi frekuensi clock yang lebih besar adalah keuntungan, Anda harus menggunakan resonator eksternal, kristal, atau bahkan osilator jika chip Anda tidak memiliki sirkuit mengemudi yang diperlukan.
PS Saya ingin tahu apakah ada yang memiliki wawasan seperti apa pilihan desain tingkat rendah yang mereka buat pada perangkat keras UART yang membuatnya sangat sensitif?
sumber
Osilator kristal kristal eksternal lebih akurat daripada jam internal, dan mereka harus digunakan ketika waktu yang akurat diperlukan. Terkadang untuk menghemat uang, desainer menggunakan yang internal.
sumber