Mikrokontrolery - Jak zacząć?

... czyli zbiór praktycznej wiedzy dot. mikrokontrolerów.

środa, 16 marca 2011

AVR: Oscylatory kwarcowe i ceramiczne na przykładzie ATmega8 - część I


Autor: Dondu

Artykuł jest częścią: Kurs AVR - Spis treści

AVR: Oscylatory vs rezonatory kwarcowe i ceramiczne
Większość mikrokontrolerów ma możliwości pracy z różnymi częstotliwościami zegara je taktującymi oraz z różnymi ich źródłami.

Źródłami tymi mogą być:
  • wewnętrzny generator RC,
  • wewnętrzny oscylator z zewnętrznymi elementami RC, rezonatorami ceramicznymi lub kwarcowymi (popularnie zwanymi kwarcami),
  • zewnętrzny sygnał zegarowy.

Wybór źródła sygnału taktującego oraz inne niezbędne opcje ustawiane są z wykorzystaniem fusebitów, programowo (możliwość zmiany prędkości w czasie działania mikrokontrolera) lub z wykorzystaniem obu tych możliwości jednocześnie.

Dodatkowo niektóre mikrokontrolery mają możliwości podłączenia dwóch zewnętrznych elementów jak np. kwarc główny (z reguły w MHz) i kwarc pomocniczy (z reguły tzw. "zegarkowy" 32,768kHz). Zdarza się także, że niektóre mikrokontrolery mają wspólne wejścia dla obu tych kwarców, czyli tylko jeden z nich może być podłączony.

Aby było jeszcze ciekawiej rezonatory kwarcowe i ceramiczne wymagają dodatkowych kondensatorów zewnętrznych, ale w niektórych trybach pracy niektórych mikrokontrolerów mogą one zostać pominięte.

Kolejnym czynnikiem wpływającym na dostępne opcje, są tryby oszczędzania energii, które także wpływają na wybór odpowiednich ustawień oscylatorów.

Taka mnogość możliwości powoduje problemy z interpretacją dokumentacji mikrokontrolera, która czasami może być bardzo trudna i prowadzić do niewłaściwych wniosków. Dodatkowo w sieci można znaleźć różne nieprawidłowe interpretacje i porady, stąd na przykładzie mikrokontrolera AVR ATmega8 wyjaśnię istotną techniczną część problemu dot. rezonatorów kwarcowych i ceramicznych, zewnętrznych kondensatorów oraz fusebitu o magicznej nazwie CKOPT, by rozwiać wątpliwości, które pojawiają się co jakiś czas:


yokoon
Więc jak to jest z tym bitem?


Zacznijmy od zrozumienia tego, że ...


Kwarc to nie oscylator!

Aby dobrze zrozumieć dokumentację należy prawidłowo rozumieć, co to jest oscylator:

Oscylator, to układ elektroniczny, którego zadaniem jest wytworzenie oscylującego (zmieniającego się) sygnału, który może być użyty np. do taktowania  mikrokontrolera.

Do stabilizacji oscylatora można wykorzystać rezonator kwarcowy (popularnie zwany kwarcem), rezonator ceramiczny lub układ RC (rezystor i kondensator), w zależności od wersji oscylatora.

Innymi słowy, kwarc jako taki nie generuje drgań, a jedynie stabilizuje drgania układu oscylatora.


Układy oscylatorów w mikrokontrolerach są z reguły oparte o Oscylator Pierce'a:


Oscylator Pierce'a


Oscylator Priece'a jak każdy układ elektroniczny ma swoją charakterystykę częstotliwościową, która pozwala mu pracować poprawnie w określonym zakresie częstotliwości (tzw. pasmo przenoszenia), stąd:

Ponieważ mikrokonrolery mają szerokie możliwości przełączania sygnału zegarowego wykorzystującego rezonatory kwarcowe od 32kHz do dziesiątek, czy setek MHz, stąd zaprojektowanie jednego układu oscylatora dla tak szerokiego zakresu częstotliwości jest trudne, nieekonomiczne lub wręcz niemożliwe.

Do tego dochodzą jeszcze wymagania dot. trybów oszczędzania energii, co także zmusza projektantów mikrokontrolerów do zwiększania ilości wewnętrznych oscylatorów i podziału ich zadań, a w konsekwencji parametrów w tym pasma przenoszenia. 


Dlatego też ...


AVR-y posiadają dwa oscylatory rezonatorów kwarcowych taktujących mikrokontroler ...


Mikrokontroler ATmega8 posiada dwa odrębne moduły oscylatorów rezonatorów kwarcowych i ceramicznych taktujących mikrokontroler:


ATmega8 - Schemat ideowy układu taktowania mikrokontrolera.
ATmega8


W dokumentacji są one nazwane tak jak na powyższym schemacie blokowym, czyli:
  1. Crystal Oscillator (oscylator podstawowy)
  2. Low-frequency Crystal Oscillator (oscylator niskich częstotliwości)

Ich ekwiwalentne układy wewnętrzne w mikrokontrolerach AVR wyglądają następująco:


AVR ATmega8: Oscylatory dla arezonatorów kwarcowych i ceramicznych
ATmega8 - Linia kropkowana oddziela to co jest wewnątrz mikrokontrolera (ponad linią), a co poza nim (poniżej linii).


Na powyższym rysunku linia przerywana (kropkowana) pokazuje co jest wewnątrz mikrokontrolera (ponad linią), a co należy podłączyć na zewnątrz (poniżej linii).

Po lewej pokazany jest oscylator podstawowy, czyli Crystal Oscillator, do którego należy podłączyć na zewnątrz mikrokontrolera rezonator kwarcowy lub ceramiczny o częstotliwości większej od 400kHz.

Po prawej pokazany jest oscylator Low-frequency Crystal Oscillator, który jest przeznaczony do niskich częstotliwości, które w tym wypadku oznaczają przede wszystkim wykorzystanie kwarcu "zegarkowego" o częstotliwości 32,768kHz.

Podstawową różnicę jaką każdy zauważy patrząc na powyższy rysunek jest brak kondensatorów zewnętrznych przy kwarcu na schemacie Low-frequency Crystal Oscillator (B). Dlaczego ich brak oraz kiedy można ich nie dodawać piszę w dalszej części tego artykułu.



... oraz jeden oscylator dla Timer2 z rezonatorem kwarcowym 32,768kHz

Dla rezonatorów kwarcowych oprócz dwóch oscylatorów sygnału zegarowego taktującego mikrokontroler, AVRy posiadają dodatkowy oscylator do obsługi Timer2 pracującego w trybie asynchronicznym zoptymalizowanego przede wszystkim do wykorzystania rezonatora kwarcowego 32,768kHz (projekty odliczające dokładny czas np. zegarki, częstościomierze, itp.).


ATmega8 - Oscylator Timer2
ATmega8


Konfiguracja Timer2 i dedykowanego jemu oscylatorowi pozwala na pracę timera niezależnie od taktowania mikrokontrolera (praca asynchroniczna), dzięki czemu jest niezależny od częstotliwości taktującej mikrokontroler oraz może on pracować podczas większości trybów uśpienia mikrokontrolera.



Kłopoty związane z niektórymi mikrokontrolerami ...

W przypadku niektórych AVR-ów np. ATmega8 natrafiamy na pewne ograniczenie, jakim jest zastosowanie tych samych pinów dla oscylatorów sygnału taktującego mikrokontroler oraz oscylatora Timera2:


ATmega8 obudowa DIP i TQFP - wyprowadzenia oscylatorów.


a w innych ten problem nie występuje np. ATmega32:


ATmega32 obudowa DIP i TQFP - wyprowadzenia oscylatorów.


Niestety konsekwencją wykorzystania tych samych pinów (XTAL1 i XTAL2) do podłączenia oscylatora Timera2 (TOSC1 i TOSC2) jest uniemożliwienie jednoczesnego korzystania z dwóch rezonatorów kwarcowych np. 16MHz do taktowania mikrokontrolera, a 32,768kHz do taktowania Timer2.

Jedyną dostępną dla takich mikrokontrolerów alternatywą jest wykorzystanie do taktowania mikrokontrolera wewnętrznego generatora RC np. 8MHz, co w większości przypadków jest zadowalającym kompromisem.


... oraz wspólnymi bitami konfiguracyjnymi.

Ten punkt jest głównym powodem powstania niniejszego cyklu artykułów, ponieważ wspólne bity konfiguracyjne utrudniają prawidłowe rozumienie możliwości i ograniczenia jakie występują w mikrokontrolerach AVR.

Najważniejsze jest więc na razie zapamiętanie, że:

W zależności od trybu ustawienia jednych bitów konfiguracyjnych, inne bity mogą przybierać różne funkcje. Innymi słowy bit X może być odpowiedzialny za jedno, a innym razem coś zupełnie innego :-) 

Dotyczy to wspomnianego w tytule bitu CKOPT, a szczegóły przedstawię przy omówianiu poszczególnych oscylatorów w kolejnych artykułach. CKOPT omawiam na przykładzie mikrokontrolera ATmega8, bowiem nie wszystkie AVR-y posiadają ten bit konfiguracyjny.



Możliwe tryby taktowania mikrokontrolera

We wstępie do artykułu wspomniałem, że są jeszcze inne możliwości uzyskania sygnału taktującego mikrokontroler, i że są nimi wewnętrzny generator RC, oscylator z zewnętrznymi generatorami RC oraz zewnętrzny sygnał zegarowy:


ATmega8 schemat ideowy oscylatorów RC i zewnętrznego sygnału taktującego.


Nie omawiam ich jednak w niniejszym artykule, ponieważ nie dotyczą rezonatorów kwarcowych.

Wyboru źródła taktującego mikrokontroler dokonuje się poprzez ustawienie odpowiednich bitów konfiguracyjnych CKSEL:


ATmega8: Fusebity CKSEL - wybór źródła taktowania mikrokontrolera.


Zauważ, że tylko dwa z pięciu trybów (zaznaczone żółtym kolorem) External Low-frequency Crystal oraz External Clock mają tylko jedno możliwe ustawienie bitów CKSEL. Pozostałe mają przedziały co oznacza, że występują jeszcze dodatkowe możliwości.

By nie było wątpliwości na schemacie blokowym przedstawiłem, które ustawienia z tabeli powyżej odnoszą się do odpowiednich modułów oscylatorów:



AVR - Schemat ideowy układu taktowania mikrokontrolera.


W niniejszym cyklu artykułów omawiam jedynie rezonatory oscylatory rezonatorów kwarcowych i ceramicznych. Jakie są podstawowe różnice pomiędzy nimi?

Kwarcowe są w stosunku do ceramicznych:
  • dokładniejsze,
  • mniejszy dryft temperaturowy (zmiana parametrów wraz ze zmianą temperatury),
  • znacznie wolniej rozpoczynają swoją pracę (stabilizacja drgań na określonym poziomie nominalnym). 
  • są droższe.

Przykładowe dokumentacje:

W kolejnych dwóch artykułach omówię Crystal Oscillator i Low-frequency Crystal Oscillator.
Znajdziesz w nich sporo oscylogramów pokazujących istotne zależności ustawień i ich konsekwencji.


Oceń artykuł.
Wasze opinie są dla nas ważne, gdyż pozwalają dopracować poszczególne artykuły.
Pozdrawiamy, Autorzy
Ten artykuł oceniam na:

Brak komentarzy:

Prześlij komentarz

Działy
Działy dodatkowe
Inne
O blogu




Dzisiaj
--> za darmo!!! <--
1. USBasp
2. microBOARD M8


Napisz artykuł
--> i wygraj nagrodę. <--


Co nowego na blogu?
Śledź naszego Facebook-a



Co nowego na blogu?
Śledź nas na Google+

/* 20140911 Wyłączona prawa kolumna */
  • 00

    dni

  • 00

    godzin

  • :
  • 00

    minut

  • :
  • 00

    sekund

Nie czekaj do ostatniego dnia!
Jakość opisu projektu także jest istotna (pkt 9.2 regulaminu).

Sponsorzy:

Zapamiętaj ten artykuł w moim prywatnym spisie treści.