Wewnętrzny lub zewnętrzny oscylator

22

Zawsze używam wewnętrznego oscylatora, który mają zdjęcia, ponieważ nigdy nie znalazłem potrzeby uruchamiania czegokolwiek z częstotliwością wyższą niż 8 MHz (co jest najszybszym, z którego zdjęcia zwykle mogę korzystać). Czy są jakieś powody, poza przekroczeniem 8 MHz, co oznacza, że ​​powinienem użyć zewnętrznego oscylatora? Wydaje mi się, że jeszcze jedna rzecz mi się nie udaje, ale chciałbym usłyszeć, co robią inni.

SimonBarker
źródło
Dlaczego czasami potrzebny jest zewnętrzny kryształ, mimo że MCU ma wewnętrzny procesor? ” Fakt, że MCU ma wewnętrzny procesor, nie ma prawie nic wspólnego z tym, dlaczego używany jest zegar wewnętrzny lub zewnętrzny. Czy łączysz / mylisz dwie różne kwestie?
żaglowiec
Może ci to pomóc w całkowitym zrozumieniu microcontrollerslab.com/oscillator-types-microcontrollers
Bilal Malik

Odpowiedzi:

33

Jak powiedzieli inni, dokładna częstotliwość i stabilność częstotliwości to powody, dla których warto zastosować zewnętrzny ceramiczny rezonator lub kryształ. Rezonator jest kilkakrotnie dokładniejszy niż wewnętrzny oscylator RC i jest wystarczająco dobry do komunikacji UART. Kryształ jest znacznie dokładniejszy i niezbędny, jeśli wykonujesz inne rodzaje komunikacji, takie jak CAN, USB lub Ethernet.

Innym powodem zewnętrznego kryształu jest wybór częstotliwości. Kryształy występują w szerokim zakresie częstotliwości, podczas gdy wewnętrzny oscylator jest zwykle jedną częstotliwością, z możliwością wyboru włączenia 4x PLL. Niektóre nowsze 24-bitowe rdzenie PIC mają zarówno mnożnik, jak i dzielnik w łańcuchu zegarowym, dzięki czemu można uzyskać szeroki wybór częstotliwości z pojedynczej częstotliwości wewnętrznego oscylatora.

Istnieją oczywiście różne aplikacje, które z natury wymagają dokładnej częstotliwości lub taktowania innych niż komunikacja. Czas to właściwość elektroniki, którą możemy najdokładniej mierzyć najdokładniej, więc czasami problem przekształca się w pomiar czasu lub wytwarzanie impulsów z dokładnym taktowaniem.

Są też aplikacje wymagające długoterminowej synchronizacji z innymi blokami. Oscylator 1% byłby wyłączony o ponad 14 minut dziennie, gdyby był użyty jako podstawa zegara czasu rzeczywistego. Dokładny długoterminowy czas może być również potrzebny bez konieczności znajomości czasu rzeczywistego. Załóżmy na przykład, że chcesz, aby kilka urządzeń o niskiej mocy budziło się co godzinę, aby wymieniać dane przez kilka sekund, a następnie wracać do snu. Kryształ 50ppm (bardzo łatwy do zdobycia) wyłączy się nie więcej niż 180 ms w ciągu godziny. Oscylator 1% RC może być wyłączony o 36 sekund. Zwiększyłoby to znacznie terminowość, a tym samym wymagania energetyczne dla urządzeń, które musiały komunikować się tylko przez kilka sekund co godzinę.

Olin Lathrop
źródło
1
Nie na temat, ale myślałem, że CANbus został zaprojektowany tak, aby był wystarczająco wytrzymały, aby obsługiwać zmiany częstotliwości taktowania między węzłami. Czy jestem nieporozumieniem?
Stephen Collings,
1
@Remiel: CAN ma przepisy dla węzłów pozostających w synchronizacji pomimo pewnej różnicy częstotliwości zegara. Węzły nadal muszą być dość blisko. W większości przypadków potrzebujesz co najmniej ceramicznego rezonatora w każdym węźle.
Olin Lathrop,
24
  1. Precyzja. Wewnętrzne zegary nie są precyzyjne, mogą mieć na nie wpływ hałas.

  2. Precyzja niezależna od temperatury. Typowe oscylatory mogą się bardzo różnić. Specjalistyczne oscylatory kompensujące temperaturę mogą być potrzebne w aplikacjach o niskiej lub wysokiej temperaturze lub gdy temperatura zmienia się gwałtownie.

  3. Prędkość. Oscylatory wewnętrzne mogą nie osiągnąć najwyższej prędkości układu scalonego. Mogą być do tego potrzebne zewnętrzne.

  4. Napięcie. Prędkość wewnętrznego timera może zależeć od napięcia, przy którym jest uruchamiany.

  5. Potrzebnych jest wiele zegarów. Niektóre aplikacje chcą współdzielić oscylator.

  6. Specjalne zastosowania, w których wewnętrzny zegar może nie być łatwo używany. Podział wewnętrznego zegara może być trudniejszy niż rzucanie w niego tanim kryształem zegarka 31 kHz, aby zachować czas.

Z czubka mojej głowy, ATMEGA 328, której używa arduino, wymaga zewnętrznego kryształu o napięciu 5 V dla maksymalnej prędkości. Wersja lily pad działa na 8 MHz na wewnętrznym oscylatorze, ponieważ jest ograniczona do tej przy 3,3 V. Starter MSP430 Value Line jest ograniczony do 10 MHz przy 3 V, 8 przy 2,5 V.

Przechodzień
źródło
10
Przykład precyzji: USB wymaga precyzyjnego zegara. Mikroukłady PIC18F2550 mogą generować całkiem dowolną prędkość zegara wewnętrznie, ale jego precyzja jest zbyt zła dla USB. Kiedy próbowałem, rozłączanie występowało co 10-20 sekund. Tak się nie stało z zewnętrznym oscylatorem. Tymczasem mają PIC18F25k50, który może zsynchronizować swój zegar z sygnałem USB i nie wymaga już zewnętrznego oscylatora dla USB.
Sweber
1
Żeby być pedantycznym, wewnętrzny zegar 8 MHz to oscylator RC, a nie kryształ, stąd jego niska dokładność.
Austin,
@austin naprawił komentarz.
Passerby,
13

Stabilność częstotliwości będzie wyższa w przypadku zewnętrznego. Więc jeśli masz aplikację, która naprawdę zależy od mcu freq, może być konieczne użycie zewnętrznej.

Ale większość współczesnych mcu: s ma dość stabilny wewnętrzny osc, dlatego myślę, że to było większe pytanie kilka lat temu. Istnieje również coraz więcej sposobów przycinania wewnętrznego i kompensowania dryfu temperatury (itp.).

Z drugiej strony istnieją inne sposoby zapewnienia synchronizacji, w niektórych krajach stabilność częstotliwości w sieci energetycznej wynosi 50 Hz ± 0,01 Hz, a inne miejsca, takie jak Szwecja, faktycznie mają ± 0,001 Hz i widziałem projekty wykorzystujące to do utrzymania rzeczy zsynchronizowane. A potem nie jesteś już tak zależny od mcu freq i możesz użyć wewnętrznego. Ale to trochę temat :)

Johan
źródło
3
Należy pamiętać, że te wartości częstotliwości sieci są długoterminową stabilnością. W porządku jest utrzymywanie czasu dokładnie przez tygodnie lub miesiące, ale w krótkim okresie (godzinach) mogą wystąpić poważne odchylenia. Jednak prawie nigdy nie będziesz musiał regulować czasu na zegarze cyfrowym.
stevenvh
@stevenvh dobra uwaga, należy również pamiętać, że istnieją również inne źródła, które można wykorzystać do weryfikacji stabilności długoterminowej. Zarówno system GPS, jak i GSM mają bardzo fajne zegary, ale korzystanie z nich jest bardziej skomplikowane.
Johan
3
chociaż istnieje wiele innych aplikacji, które tego wymagałyby, jest jedna, która powoduje wiele problemów bez dokładnej podstawy czasu - komunikacja szeregowa.
JustJeff,
Nie znam żadnej stabilności częstotliwości, która nie byłaby wyższa przy zewnętrznym krysztale kwarcu. Oscylator krzemowy nie zapewni dokładności poniżej 0,1%.
Jason S
1
@Johan - DCF77 / WWVB jest tak dokładny jak GPS lub GSM i znacznie łatwiejszy w pracy z (bicie serca 1Hz)
stevenvh
2

Najważniejsza jest stabilność częstotliwości, szczególnie w przypadku szybkich połączeń szeregowych. Powoduje to również sporadyczne zapotrzebowanie na kryształ o pozornie dziwnej częstotliwości, aby uzyskać dokładną prędkość transmisji, z powodu ograniczonych opcji, które dają dzielniki zegara.

Jaskółka oknówka
źródło
1

Właściwie natknąłem się na scenariusz, w którym 1% nie był wystarczający dla UART.

Jeśli któryś z was słyszał o płycie deweloperskiej mikrokontrolera Teensy ++ v1.0, ma strasznie wrażliwy UART. Miałem prędkość transmisji hosta na 115200, a ustawioną na 115200 i przez najdłuższy czas nie mogłem zrozumieć, dlaczego nie odczytuje poprawnie danych. Okazało się, że mój host wysyłał bliżej 114300 bodów. (115200 - 114300) / 115200 = błąd około 0,9%. Próbowałem z dwoma różnymi MCU i działały dobrze.

Chodzi o to: niezależnie od zastosowania, jeśli większa dokładność częstotliwości zegara jest korzystna, powinieneś użyć zewnętrznego rezonatora, kryształu, a nawet oscylatora, jeśli chip nie ma niezbędnego obwodu sterującego.

PS Zastanawiam się, czy ktoś ma jakieś spostrzeżenia na temat tego, jaki wybór niskiego poziomu dokonał na sprzęcie UART, co czyni go tak wrażliwym?

NickHalden
źródło
Podstawowym wymaganiem dla UART jest to, że odbiornik próbkuje każdy bit, gdy jest on ważny. Idealnie, odbiornik zauważyłby dokładny moment nadejścia bitu początkowego i sampróbował dane dokładnie 1,5 raza później, a następnie 2,5, 3,5 itd. Do 8,5 raza później. W praktyce zwykle pojawia się pewien spadek, gdy odbiornik wykrywa impuls startowy, a potem może być więcej spadku. Na przykład, można spróbować odebrać 2400 bodów za pomocą procesora z 8192 instrukcjami na sekundę ....
supercat
Można to zrobić, jeśli czas transmisji jest idealnie czysty, ale próbkowanie nie nastąpi w dokładnych odstępach 417usec. Zamiast tego będzie się to odbywać w odstępach 366us i niektórych 488us. Kiedy odbiornik jest „wybredny”, często oznacza to, że próbkuje dane znacznie wcześniej lub później niż wtedy, kiedy powinien, ale w czasie, gdy idealny nadajnik wysyłałby oczekiwany bit danych.
supercat
@ superupat Dlaczego mieliby projektować go tak, aby próbkować wcześniej niż później? Wygląda na to, że próbkowanie w .5, tak jak to opisałeś, zawsze byłoby najlepsze. Tak wdrożyłem moje oprogramowanie UART kilka lat temu ... nawet nie przyszło mi do głowy, żeby zrobić to w inny sposób. Pozwala to po prostu na maksymalny margines błędu na nadajniku.
NickHalden
@JGord: Jeśli próbkowanie jest kontrolowane przez zegar, który jest znacznie szybszy niż prędkość transmisji, rzeczy są cudowne, ale nie zawsze tak jest. Załóżmy na przykład, że jeden próbował odebrać 115 200 bodów za pomocą 6502 pracującego z częstotliwością 1,0 MHz i bez UART. Pętla oczekująca na bit startu zajmie 7us, a możliwości odpytywania są zaplanowane w odstępach 1us. Istnieje niepewność 8us co do tego, kiedy 6502 trochę sonduje, ale ponieważ bity mają długość 8,6us, można pomyślnie odebrać dane, jeśli ...
supercat 16.06.11
... prędkość transmisji była precyzyjna, czasy narastania i opadania były równomierne i symetryczne, i nie było innych zakłóceń. Nie wiem o tablicy Teensy, ale nie zdziwiłbym się, gdyby użyła oprogramowania UART, aby wypchnąć kontroler poza jego normalne możliwości.
supercat
1

Zewnętrzne oscylatory krystaliczne są dokładniejsze niż zegary wewnętrzne i powinny być używane, gdy konieczne jest dokładne taktowanie. Czasami, aby zaoszczędzić pieniądze, projektanci używają wewnętrznych.

Mahmoud Hosseinipour
źródło
2
Wydaje się, że to nic nie dodaje do istniejących odpowiedzi.
Adam Haun,