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.
microcontroller
pic
design
oscillator
SimonBarker
źródło
źródło
Odpowiedzi:
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ę.
źródło
Precyzja. Wewnętrzne zegary nie są precyzyjne, mogą mieć na nie wpływ hałas.
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.
Prędkość. Oscylatory wewnętrzne mogą nie osiągnąć najwyższej prędkości układu scalonego. Mogą być do tego potrzebne zewnętrzne.
Napięcie. Prędkość wewnętrznego timera może zależeć od napięcia, przy którym jest uruchamiany.
Potrzebnych jest wiele zegarów. Niektóre aplikacje chcą współdzielić oscylator.
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.
źródło
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 :)
źródło
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.
źródło
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?
źródło
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.
źródło