Dahili veya harici osilatör


22

Her zaman, resimlerimin 8 MHz'den daha yüksek frekansta herhangi bir şey çalıştırma ihtiyacını bulamadığım dahili osilatörü kullanıyorum (kullandığım resimlerin gitme eğilimindeki en hızlısıdır). Harici bir osilatör kullanmam gerektiği anlamına gelen 8 MHz seviyesinin üzerine çıkmanın başka sebepleri var mı? Bana yanlış giden bir şey daha var gibi görünüyor ama başkalarının ne yaptığını duymak isterim.


MCU'da dahili bir CPU olmasına rağmen neden bazen harici bir kristala ihtiyaç duyuluyor? ” MCU'nun dahili bir CPU'su olduğu gerçeği, dahili veya harici bir saatin kullanılmasının nedenleriyle neredeyse hiç alakası yok. İki farklı konuyu karıştırıyor mu / karıştırıyor musunuz?
gbulmer

Yanıtlar:


33

Diğerlerinin söylediği gibi, doğru frekans ve frekans kararlılığı, harici bir seramik rezonatör veya kristal kullanmanın nedenleridir. Bir rezonatör dahili RC osilatöründen birkaç kat daha hassastır ve UART iletişimi için yeterince iyidir. Bir kristal, CAN, USB veya ethernet gibi başka tür bir iletişim kuruyorsanız daha doğru ve gereklidir.

Harici bir kristal için başka bir neden, frekans seçimidir. Kristaller geniş bir frekans aralığında gelirken, dahili osilatör genellikle 4x PLL seçeneği etkinken genellikle bir frekanstır. Daha yeni olan bazı 24 bit çekirdekli PIC'ler, saat zincirinde hem çarpan hem de bölücüye sahiptir, böylece tek bir dahili osilatör frekansından çok çeşitli frekanslara varabilirsiniz.

Tabii ki iletişim dışında, doğru frekans veya zamanlama gerektiren çeşitli uygulamalar vardır. Zaman, elektronikteki en ucuza en doğru şekilde ölçebildiğimiz özelliktir, bu nedenle bazen sorun zaman ölçen bir zamana dönüşür veya doğru zamanlama ile bakliyat üretir.

Sonra, diğer bloklarla uzun vadeli senkronizasyon gerektiren uygulamalar var. Gerçek zamanlı bir saat için temel olarak kullanılırsa,% 1 osilatör günde 14 dakikadan fazla devre dışı kalır. Gerçek zamanlı bilmek zorunda kalmadan, doğru uzun süreli zamana ihtiyaç duyulabilir. Örneğin, birkaç saniye boyunca veri alış verişi yapmak için her saat başı bir kez uyanıp bir miktar düşük güç aygıtının uyanmasını istediğinizi varsayalım ve daha sonra uykuya dalın. Bir 50 ppm kristal (elde edilmesi çok kolay) bir saat içinde 180ms'den daha fazla kapalı olacaktır. 1% RC osilatör olsa da 36 saniye kapalı olabilir. Bu, her seferinde yalnızca birkaç saniye iletişim kurması gereken cihazlara önemli bir zamanda ve dolayısıyla güç gereksinimi katacaktır.


1
Konu dışı, ama CANbus'ın düğümler arasındaki saat frekanslarındaki değişimleri kaldırabilecek kadar sağlam olacağını düşündüm. Yanlış anlıyor muyum?
Stephen Collings

1
@Remiel: Bazı saat frekans farklarına rağmen, CAN'ın senkronize halde kalan düğümleri için hükümleri vardır. Düğümlerin hala oldukça yakın olması gerekiyor. Çoğu durumda, temel olarak her düğümde en az bir seramik rezonatöre ihtiyacınız vardır.
Olin Lathrop

24
  1. Hassas. Dahili saatler kesin değildir, gürültüden etkilenebilir.

  2. Sıcaklıktan bağımsız hassasiyet. Tipik osilatörler çılgınca değişebilir. Özel sıcaklık dengeleyici osilatörler, düşük veya yüksek sıcaklıktaki uygulamalarda veya sıcaklık çılgınca değişiyorsa gerekli olabilir.

  3. Hız. Dahili osilatörler, IC'nin en yüksek hızına ulaşamayabilir. Bunun için harici olanlara ihtiyaç duyulabilir.

  4. Voltaj. Dahili bir zamanlayıcının hızı, çalıştırıldığı voltaja bağlı olabilir.

  5. Birden fazla saat gerekli. Bazı uygulamalar bir osilatör paylaşmak ister.

  6. Dahili saatin kolayca kullanılamayacağı özel uygulamalar. Dahili saate bölmek, uygulamalara zaman ayırmak için ucuz bir 31 kHz saat kristali atmaktan daha zor olabilir.

Başımın üstünde, arduino'nun kullandığı ATMEGA 328, maksimum hızı için 5V'da harici bir kristal gerektiriyor. Lily pad modeli dahili osilatörde 8 MHz'de çalışıyor, çünkü 3.3v ile sınırlı. MSP430 Değer Hattı lansman paneli 3V'de 10 MHZ, 2.5V'de 8'dir.


10
Kesinlik için bir örnek: USB kesin bir saate ihtiyaç duyar. Microchips PIC18F2550, dahili olarak oldukça fazla saat hızı üretebilir, ancak bu hassasiyet USB için çok kötü. Denedim, her 10-20s bir bağlantı kesildi. Bu harici bir osilatörde olmadı. Bu arada, saatini USB sinyaline senkronize edebilen ve artık USB için harici bir osilatör gerektirmeyen PIC18F25k50'ye sahipler.
sweber

1
Sadece bilgili olmak için, dahili 8MHz saat, bir kristal değil bir RC osilatörüdür, dolayısıyla zayıf doğruluğu.
Austin,

@ austin yorum yaptı.
Yolcu

13

Frekans stabilitesi harici bir cihazla daha yüksek olacaktır. Eğer gerçekten mcu freq'a bağlı bir uygulamanız varsa, o zaman harici bir tane kullanmanız gerekebilir.

Ancak çoğu modern mcu: s oldukça sabit bir dahili osc'a sahiptir, bu yüzden bunun birkaç yıl önce daha büyük bir soru olduğunu düşünüyorum. Ayrıca iç kesimi düzeltmenin ve sıcaklık kaymasını (vb.) Telafi etmenin daha fazla yolu vardır.

Öte yandan, senkronize edildiğinden emin olmanın başka yolları da var, bazı ülkelerde güç ağındaki frekans kararlılığı 50Hz ± 0.01Hz ve İsveç gibi diğer yerlerde aslında ± 0.001Hz bulunuyor ve bunu korumak için kullanan projeler gördüm. senkronize olan şeyler. Ve sonra artık mcu freq'a bağlı değilsiniz ve içini kullanabilirsiniz. Ama bu biraz konudur :)


3
Şebeke frekansı değerlerinin uzun vadeli istikrar olduğunu unutmayın. Zamanı haftalar veya aylar boyunca doğru bir şekilde tutmak tamam, ama kısa bir süre (saat) boyunca ciddi sapmalar yaşayabilirsiniz. Bununla birlikte, el yapımı bir dijital saate göre zamanınızı ayarlamanıza gerek kalmaz.
stevenvh

@ stevenvh iyi nokta, ayrıca uzun vadeli istikrarı doğrulamak için kullanılabilecek başka kaynaklar olduğunu unutmayın. Hem gps hem de gsm sistemlerinin çok güzel saatleri var, ancak bunları kullanmak daha karmaşık.
Johan

3
Gereksinim duyabilecek başka birçok uygulama olsa da, kesin bir zaman tabanı - seri iletişim olmadan özel olarak birçok soruna neden olan bir uygulama var.
JustJeff

Ben herhangi bir frekans stabilitesi tanımıyorum olmayan harici bir kuvars kristali ile daha yüksek olması. Bir silikon osilatör ile% 0.1'in altında hassasiyet elde edemezsiniz.
Jason S

1
@Johan - DCF77 / WWVB, GPS veya GSM kadar hassas ve çalışmak için çok daha kolay (1Hz kalp atışı)
stevenvh

2

Frekans kararlılığı, özellikle yüksek hızda seri haberleşme için ana dengedir. Ancak bu, saat bölücülerinin size sunduğu sınırlı seçeneklerden dolayı, kesin bir baud hızı elde etmek için nadiren görülen bir kristalde zaman zaman ihtiyaç duyuyor.


1

Aslında% 1 olan bir senaryo rastlamak değil UART için yeterince iyi.

Herhangi biriniz Teensy ++ v1.0 mikrodenetleyici geliştirme panosunu duyduysa, son derece hassas bir UART'a sahiptir. Ana bilgisayar baud'umu 115200 olarak ayarlamıştım ve 115200 olarak ayarlandı ve en uzun süre neden verileri doğru okumadığını çözemedi. Ev sahibimin 114300 baud'a daha yakın gönderdiği ortaya çıktı. (115200 - 114300) / 115200 = ~% 0.9 hata. İki farklı MCU ile denedim ve iyi çalıştılar.

Mesele şudur: Uygulamanızdan bağımsız olarak, saat frekansının doğruluğu bir fayda ise, çip gerekli sürüş devrelerine sahip değilse, harici bir rezonatör, kristal veya osilatör kullanmalısınız.

Not: UART donanımında ne kadar düşük seviyelerde bir seçim yaptıklarını, bu kadar hassas kılan konusunda bir fikri olan var mı merak ediyorum?


Bir UART için temel gereklilik, alıcı geçerli olduğunda her biti örneklemektir. İdeal olarak, alıcı başlangıç ​​bitinin tam olarak gerçekleştiğini anlayacaktır ve verileri bir bit sonra 1.5, sonra da 2.5, 3.5 vb. Uygulamada, alıcı başlangıç ​​darbesini algıladığında genellikle bir miktar eğim vardır ve bundan sonra daha fazla eğim olabilir. Örneğin, saniyede 8,192 komut çalıştıran bir işlemci kullanarak 2400 baud almaya çalışabilirsiniz ....
supercat

İletim zamanlaması tamamen temizse, böyle bir şey yapılabilir, ancak örnekleme tam 417usec aralıklarla gerçekleşmez. Bunun yerine, 366us'un bazı aralıklarında ve 488us'un bazılarında olur. Bir alıcı "seçici" olduğunda, genellikle bunun anlamı, verileri gerektiğinden çok daha önce veya sonra örneklemektir, ancak ideal bir vericinin beklenen veri bitini çıkardığı bir zamandadır.
supercat

@supercat Neden daha sonradan daha önce örneklemek için tasarladılar? Anlattığın gibi .5'lerde örnekleme her zaman en iyisi gibi görünüyor. Bu şekilde UART yazılımımı birkaç yıl önce uygulamıştım ... başka bir şekilde yapmam bile başıma gelmedi. Bu sadece vericideki en fazla hata payına izin verir.
NickHalden

@JGord: Örnekleme, baud hızından çok daha hızlı bir saat tarafından kontrol ediliyorsa, işler harikadır, ancak her zaman böyle değildir. Örneğin, birinin 1.0 MHz'de çalışan ve UART'sız bir 6502 kullanarak 115.200 baud almaya çalıştığını varsayalım. Başlangıç ​​bitini bekleyen bir döngü 7us alacaktır ve yoklama fırsatları 1us aralıklarla planlanmaktadır. ... Orada 6502 biraz yoklamak zamanlardaki gibi bir 8us belirsizlik, ama bit 8.6us uzun olduğundan, bir başarıyla eğer veri alabilir
SuperCat

... transmisyon hızı kesin, yükselme ve düşme zamanları tekdüze ve simetrikti ve başka hiçbir sarsıntı yoktu. Teensy kartı hakkında bir bilgim yok, ancak denetleyiciyi normal yeteneklerinin ötesine itmek için UART yazılımı kullanıyor olsaydı şaşırmam.
supercat

1

Dış kristal kristal osilatörleri, iç saatlerden daha hassastır ve doğru zamanlama gerektiğinde kullanılmaları gerekir. Bazen tasarruf etmek için tasarımcılar dahili olanları kullanır.


2
Bu mevcut cevaplara herhangi bir şey katmıyor gibi görünüyor.
Adam Haun
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.