Bisakah Anda memilih kristal untuk Mikrokontroler PIC?

8

Saya menggunakan PIC16F690 dan saya tahu bahwa osilator internal memiliki nilai tertentu (20,8,4 ...).

Saya ingin meletakkan kristal 8MHz eksternal, tetapi saya hanya dapat menemukan 8.8MHz atau 7.6MHz.

Saya ingin tahu apakah mungkin untuk memasukkan semua ini ke PIC, atau haruskah persis 8MHz? Juga, bagaimana saya harus memilih kapasitor untuk masing-masing?

Curnelious
sumber

Jawaban:

10

Anda dapat menggunakan kristal apa saja asalkan berada dalam rentang frekuensi yang ditentukan oleh driver kristal PIC.

Driver kristal kebanyakan PIC (saya tidak mencari PIC Anda secara khusus, itu pekerjaan Anda) dapat diatur ke tiga level drive yang berbeda, biasanya disebut LP (daya rendah), XT (kristal), dan HS (kecepatan tinggi). Yang lebih lambat menggunakan daya lebih sedikit tetapi juga memiliki frekuensi kristal maksimum yang lebih rendah yang dapat mereka dukung. Mode HS mungkin overdrive dan merusak kristal frekuensi rendah 32768 Hz yang sensitif, seperti yang digunakan pada jam tangan. Bersama-sama, tiga tingkat penggerak kristal mencakup rentang dari beberapa detik kHz hingga 20 MHz, yang merupakan cara tercepat yang bisa digerakkan oleh PIC.

Poin lainnya adalah Anda ingin menggunakan kristal yang ditentukan untuk aplikasi resonansi paralel. Itu berarti frekuensinya ditentukan untuk cara driver kristal PIC akan menggerakkan kristal. Kristal ini akan ditentukan dengan kapasitansi beban. Kristal resonansi seri akan bekerja, tetapi frekuensinya mungkin tidak akan berada dalam toleransi.

Olin Lathrop
sumber
Terima kasih banyak . masalah saya adalah bahwa osilator internal memberi saya jam instruksi 0,47us bukannya 0,5us - untuk 8mhz. jadi saya kira osilator EKSTERNAL akan lebih akurat. Benarkah? hal lain, saya tidak bisa mengerti cara mengatur sekering untuk f itu?
Curnelious
4
@Urnus: Ya, kristal eksternal akan lebih akurat daripada osilator internal. Bahkan kristal murah juga baik untuk 50 ppm, dan 20 ppm biasanya tersedia dengan biaya tidak terlalu banyak. Adapun pengaturan konfigurasi, ini semua dijelaskan dengan baik dalam lembar data. Untuk kristal 8 MHz, Anda harus menggunakan mode HS.
Olin Lathrop
8

Dengan asumsi Anda tidak melebihi spesifikasi clockrate dalam silikon, sekering yang diprogram, dan kode aplikasi, Anda dapat menggunakan kristal apa pun yang Anda suka. Lembar data akan menjelaskan kapasitor mana yang akan digunakan.

Ignacio Vazquez-Abrams
sumber
3
Perlu dicatat bahwa mengubah clock rate juga akan mengubah perhitungan untuk hal-hal seperti baud rate dan interval timer. Tampaknya jelas, tetapi mudah untuk dilupakan.
Scott Winder
@ Esc: Hanya jika Anda menulis kode yang tidak bertanggung jawab dengan pembagi baud rate dan sejenisnya dengan kode keras. Dengan pengkodean yang tepat, Anda mengubah satu angka yang merupakan frekuensi osilator dan semuanya secara otomatis diturunkan dari itu pada waktu pembuatan, dengan tentu saja memeriksa kesalahan untuk kasus yang mustahil atau di luar jangkauan. Anda benar karena Anda harus ingat untuk mengubah satu nomor sekalipun.
Olin Lathrop
1
@ OlinLathrop: Saya setuju dengan Anda jika ada sedikit perubahan frekuensi. Namun, perubahan frekuensi drastis mungkin memerlukan modifikasi pra-dan / atau pasca-skalar generator baud rate untuk menjaga frekuensi menengah dalam kisaran yang disarankan. Di sisi pengatur waktu, beberapa sakelar dalam frekuensi jam dapat mengakibatkan luapan dan setiap frekuensi yang berbeda akan memberikan Anda resolusi jam yang berbeda, jadi memodifikasi penghitung waktu (menggunakan makro frekuensi) hanya merupakan bagian dari solusi. Jam pengatur waktu mungkin juga perlu dimodifikasi untuk mendapatkan akurasi dan panjang yang dibutuhkan.
Scott Winder
1
@ Esc: Tapi itu semua hal yang dihitung pada waktu pembuatan atau setidaknya diperiksa. Jika Anda melakukan hard-code sesuatu seperti prescaler (biasanya tidak diperlukan) dan frekuensi instruksi baru tidak mendukung apa yang ingin Anda lakukan, maka kode build-time akan membuat kesalahan untuk mengingatkan Anda. Jika itu bisa menanganinya, ia diam-diam melakukannya. Tidak ada alasan untuk perubahan frekuensi untuk diam - diam menyebabkan masalah. Itu hanya coding yang buruk.
Olin Lathrop
@ OlinLathrop: Saya tidak setuju. Saya hanya menunjukkan bahwa tidak selalu semudah mengubah nomor tunggal, bahkan dalam kasus pengkodean yang baik. Bagaimanapun, itu adalah sesuatu yang harus diperhatikan ketika mengubah frekuensi.
Scott Winder
0

Seperti yang dikatakan dalam lembar data, Anda dapat menggunakan osilator hingga 20Mhz. Untuk kapasitor datasheet dapat mengatakan kepada Anda bahwa penggunaan jenis apa tetapi untuk jumlah kapasitor Anda harus menggunakan pengalaman Anda.

Roh
sumber
1
Sementara "pengalaman" selalu merupakan hal yang baik, tetapi kapasitansi beban yang dibutuhkan tergantung pada kristal dan harus ditentukan dalam lembar data kristal. Ini ada hubungannya dengan frekuensi resonansi paralel. Juga, kapasitansi liar dari pin dan jejak uC harus diperhitungkan.
Rev1.0
@ Rev1.0 Hebat dan terima kasih! Saya memilih Anda. misalnya saya melihat datasheet ini: html.alldatasheet.com/html-pdf/236074/CRYSTEKCRYSTAL/CYSDXX/... di sebelah kanannya Anda dapat melihat tabel (nomor komponen standar). saya harus menggunakannya untuk memilih kapasitor? misalnya untuk 16mhz saya harus menggunakan kapasitor 20pf?
Roh
1
Tidak, kapasitansi beban yang diberikan adalah total kapasitansi yang diperlukan, bukan nilai untuk kedua kapasitor. Hitung CX = 2 * (CL - Cstray), di mana CX adalah kapasitor yang Anda butuhkan, CL = 20pf dan Cstray tergantung pada desain Anda (sekitar 2-5pf).
Rev1.0
1
Cstray adalah kapasitansi pin pengontrol mikro (lembar data) + kapasitansi parasit dari jejak di papan Anda (dapat diperkirakan mengetahui panjang, lebar, dan lapisan jejak). Jika ini hanya untuk proyek hobi, anggaplah 5pf dan mungkin baik-baik saja.
Rev1.0
1
Baca dan pahami ini :). "Jika Cin dan Cout tidak ditentukan, maka nilai tebakan 5 pF untuk masing-masing adalah awal yang baik."
Rev1.0