Mikrokontrolery - Jak zacząć?

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

środa, 16 marca 2011

Kurs XMega (08): Generator RC

Autor: Dominik Leon Bieczyński
Redakcja: Dondu

Artykuł jest fragmentem cyklu: Kurs mikrokontrolerów XMega by Leon-Instruments

W poprzedniej części kursu przedstawiłem ogólnie, jakie mikrokontrolery XMEGA mają dostępne do wybory generatory sygnału zegarowego i jakie mamy dostępne możliwości.

W tym odcinku, korzystając z modułu prototypowego X3-DIL64 z Leon Instruments, zobaczymy, jak uruchamia się wbudowane generatory RC. Poniższy schemat będziemy wykorzystywać do wszystkich ćwiczeń z sygnałami zegarowymi, opisanymi w odcinkach od 7 do 10.

Do pobrania: XMega-sygnaly-zegarowe.zip (kopia)


Schemat układu.


Generatory RC 32MHz i 2MHz

Po wciśnięciu przycisku FLIP, podłączonego na płytce X3-DIL64 z Leon Instruments do pinu E5, zostanie wywołana funkcja Osc32MHz(), uruchamiająca wbudowany generator 32 MHz.

Bardzo miło, że projektanci mikrokontrolerów XMEGA udostępnili nam wbudowany generator, który bez podłączania żadnych dodatkowych elementów umożliwi osiągnięcie maksymalnej mocy obliczeniowej. Poza tym, generator RC nie wymaga żadnej konfiguracji, więc możemy od razu przystąpić do jego uruchomienia.

Aby to zrobić, musimy wpisać odpowiednią wartość do rejestru kontrolnego oscylatora, a mianowicie do OSC.CTRL. Zobaczmy fragment dokumentacji:


Opis rejestru OSC.CTRL

…zatem aby uruchomić generator 32 MHz, powinniśmy do rejestru OSC.CTRL wpisać wartość OSC_RC32MEN_bm.

Zwróćmy uwagę, że dokumentacja wyraźnie ostrzega nas, że musimy poczekać aż oscylator się ustabilizuje, zanim wykorzystamy go jako źródło sygnału zegarowego.


W tym celu musimy w pętli sprawdzać rejestr OSC.STATUS i czekać tak długo, aż bit OSC_RC32MRDY_bm przyjmie wartość 1.

void Osc32MHz(void) {
    OSC.CTRL     =    OSC_RC32MEN_bm;       // włączenie oscylatora 32MHz
    while(!(OSC.STATUS & OSC_RC32MRDY_bm)); // czekanie na ustabilizowanie się generatora
    CPU_CCP      =    CCP_IOREG_gc;         // odblokowanie zmiany źródła sygnału
    CLK.CTRL     =    CLK_SCLKSEL_RC32M_gc; // zmiana źródła sygnału na RC 32MHz
    LcdClear();                             // czyszczenie wyświetlacza
    Lcd("Wewn RC 32MHz");                   // komunikat o uruchomieniu generatora
}

Po wykonaniu tej funkcji, na wyświetlaczu powinien pojawić się komunikat o taktowaniu procesora zegarem 32MHz, a dioda podłączona do pinu E0 powinna migać wyraźnie szybciej.
Uruchomienie wbudowanych generatorów 2 MHz oraz 32 kHz wykonuje się bardzo podobnie – wystarczy zmienić tylko RC32M na RC2M lub RC32K.

void Osc2MHz(void) {
    OSC.CTRL     =    OSC_RC2MEN_bm;        // włączenie oscylatora 2MHz
    while(!(OSC.STATUS & OSC_RC2MRDY_bm));  // czekanie na ustabilizowanie się generatora
    CPU_CCP      =    CCP_IOREG_gc;         // odblokowanie zmiany źródła sygnału
    CLK.CTRL     =    CLK_SCLKSEL_RC2M_gc;  // zmiana źródła sygnału na RC 2MHz
    LcdClear();                             // czyszczenie wyświetlacza
    Lcd("RC 2MHz");                         // komunikat o uruchomieniu generatora
}

Powyższy program możesz testować np. na płytce X3-DIL64.

Dominik Leon Bieczyński
leon-instruments.pl

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.