LABORATORIUM Komputery przemysłowe i systemy wbudowane ĆWICZENIE 3 System przemysłowy oparty o mikrokontroler jednoukładowy MSP430 Prowadzący: Mariusz Rudnicki 2016 1
Spis treści 1. Cel ćwiczenia... 3 2. Informacje konieczne do realizacji ćwiczenia... 3 3. Wykorzystane narzędzia... 3 4. Krótki opis wykorzystywanych modułów... 3 4.1. Moduł FLL+... 3 4.2. Moduł Timer_A3... 4 4.3. Moduł DAC_12... 4 5. Krótki opis płyty eksperymentalnej... 4 6. Przebieg ćwiczenia... 5 6.1. Zadanie 1 Konfigurowanie sygnałów zegarowych mikrokomputera MSP430F4618... 5 6.1.1. Pomiar sygnałów zegarowych bez modyfikacji rejestrów modułu FLL+... 6 6.1.2. Ustawianie sygnału ACLK/n... 6 6.1.3. Ustawianie sygnału MCLK f1... 6 6.1.4. Ustawienie sygnału MCLK f2... 6 6.1.5. Ustawianie sygnału SMCLK... 7 6.2. Zadanie 2 Generowanie przebiegu prostokątnego o zadanych parametrach... 7 6.3. Zadanie 3 wytworzenie napięcia o ustalonej wartości.... 8 7. Literatura... 8 2
1. Cel ćwiczenia Zapoznanie się z programowaniem wybranych modułów mikrokomputerów rodziny MSP430 firmy Texas Instruments: zegarowym FLL+, licznika Timer_A oraz przetwornika cyfrowoanalogowego DAC12. 2. Informacje konieczne do realizacji ćwiczenia Informacja niezbędne do zaprogramowania wymienionych modułów znajdują się w dokumencie MSP430x4xx Family User s Guide, oznaczonym kodem SLAU056J. Dokument jest dostępny na stronie internetowej Texas Instruments http://focus.ti.com.cn/cn/lit/ug/slau056j/slau056j.pdf) Informacje potrzebne do skonfigurowania wymaganych częstotliwości zegarów MCLK, SMCLK, ACLK/n 5-ty rozdział(fll+ Clock Modue) dokumentacji MSP430x4xx Family User s Guide. Wydruk rozdziału jest dostępny na stanowisku laboratoryjnym. Informacje potrzebne do zaprogramowania i uruchomienia licznika Timer_A. Znajomość trybów pracy licznika i sposobu wyprowadzenia sygnałów generowanych przez licznik na nóżki układu scalonego 15-ty rozdział(timer_a) dokumentacji MSP430x4xx Family User s Guide. Wydruk rozdziału jest dostępny na stanowisku laboratoryjnym. Informacje potrzebne do skonfigurowania i uruchomienia konwersji cyfrowo-analogowej za pomocą modułu DAC12 28-ty(albo 29-ty zależnie od wersji dokumentu) rozdział(dac12) dokumentacji MSP430x4xx Family User s Guide. Wydruk rozdziału jest dostępny na stanowisku laboratoryjnym. Znajomość zapisu podstawowych operacji w języku C. 3. Wykorzystane narzędzia Płyta eksperymentalna MSP-EXP430FG4816, interfejs MSP-FET430UIF, środowisko programistyczne Code Composer Studio v4 (CCS v4) Microcontroller Edition ograniczona wersja obsługująca mikrokomputery MSP430, oznaczona symbolem TMDFCCS-MCULTD. Jest bezpłatne. Istnieje możliwość jego pobrania ze strony Texas Instruments (http://focus.ti.com/docs/toolsw/folders/print/ccstudio.html). 4. Krótki opis wykorzystywanych modułów Szczegółowe informacje dotyczące modułów znajdują się we wspomnianych wyżej rozdziałach skupiających się na wybranych modułach. 4.1. Moduł FLL+ Moduł zegarowy FLL+ mikrokomputera MSP430FG4618 wytwarza 4 sygnały zegarowe MCLK, SMCLK, ACLK, ACLK/n. Przebieg MCLK wyznacza prędkość pracy jednostki centralnej. Sygnał SMCLK może być wykorzystany do taktowania szybkich urządzeń peryferyjnych. ACLK to zegar o małej częstotliwości, który można wykorzystać do taktowania wolnych urządzeń peryferyjnych układu. ACLK/n jest zegarem dostępnym wyłącznie na zewnątrz układu. FLL+ 3
zawiera oscylator sterowany cyfrowo DCO (Digitally Controlled Oscillator), który pozwala uzyskać sygnał zegarowy fdcoclk o częstotliwości równej całkowitej wielokrotności częstotliwości sygnału ACLK(jego źródłem jest oscylator LFXT1). Adresując 3 multipleksery(bity kontrolne SELMx i SELSx) można przypisać zegarom(odpowiednio MCLK i SMCLK) sygnały z różnych źródeł, między innym sygnał fdcoclk. Sygnały zegarowe ACLK i SMCLK są wykorzystywane przez pozostałe moduły zawarte w strukturze mikrokontrolera. 4.2. Moduł Timer_A3 Moduł licznika Timer_A to jeden z popularniejszych modułów w strukturze rodziny MSP430. W mikrokomputerze MSP430FG4618 występuje on w wersji Timer_A3 co oznacza, że ma 3 rejestry porównawcze CCRx (capture/compare, x = 0, 1, 2). W trakcie zliczania wartość licznika jest porównywana z rejestrem CCRx, ich równość wywołuje określona akcję. Moduł licznika posiada różne możliwości. Jedną z nich jest generowanie fali prostokątnej o programowanych częstotliwości i współczynniku wypełnienia. Do zrealizowania takiego przebiegu są konieczne dwa rejestry porównawcze CCR. Generowanie przebiegów jest realizowane przez jednostkę wyjściową(output unit) i może przebiegać w jednym z 8 trybów wyjściowych. Timer_A ma możliwość okresowego generowania przewań. 4.3. Moduł DAC_12 Moduł przetwornika cyfrowo-analogowego DAC12 pozwala generować napięcie o wartości z zakresu napięcia referencyjnego. Dokładna wartość napięcia wyjściowego przetwornika jest wyznaczana prostą zależnością łączącą: wartość napięcia referencyjnego, rozdzielczość oraz wartość w rejestrze danych. Posiada konfigurowane programowo rozdzielczość, kod danych(binarny prosty i uzupełnień do 2) i inne. Konwersja cyfrowo-analoga może być wyzwalana wpisaniem wartości do rejestru danych lub sygnałami pochodzącymi z liczników(np. Timer_A). Moduł DAC12 może generować przerwania, które sygnalizują gotowość do kolejnej konwersji. 5. Krótki opis płyty eksperymentalnej Płyta eksperymentalna daje możliwości programowania dwóch procesorów z rodziny MSP430. Są to: MSP430F2013 (U4 14 wyprowadzeń) i MSP430F4618 (U3 100 wyprowadzeń). W zadaniach jest wykorzystywany wyłącznie większy mikrokontroler U3 i dalsza treść skupia się wyłącznie na jego otoczeniu. Do układu jest podłączony(nóżki XIN, XOUT) tylko jeden kwarc zegarkowy o częstotliwości 32,768kHz. Jest on źródłem sygnału oscylatora LFXT1 modułu FLL+, stąd faclk = 32,768kHz. Drugi oscylator nie jest zamotnowany na płycie (jest tylko na schemacie blokowym FLL+).Na płycie umieszczone są inne elementy(wyślwietlacz LCD, interfejs RS-232), które służą do demonstracji możliwości mikrokontrolera, a które nie będą wykorzystywane w ćwiczeniach. Wiele wyprowadzeń mikrokontrolera jest udostępnionych na listwach, co umożliwia wygodne podłączenie sondy oscyloskopowej. Z punktu widzenia ćwiczeń najistotniejsze listwy to: H2, dla sygnałów z modułu zegarowego FLL+: MCLK H2/2, SMCLK H2/5, ACLK/n H2/6, H2, dla sygnałów z modułu Timer_A: sygnał wyjściowy jednostki Output Unit bloku CCR1 H2/3, H8, dla sygnałów z modułu DAC12: DAC12_0OUT(wyjście przetwornika) H8/7. 4
Rysunek 1 Płyta eksperymentalna MSP430FG4618/F2013 6. Przebieg ćwiczenia Ćwiczenie jest podzielone na 3 zadania. Każde zadanie realizowane jest w osobnym projekcie. Projekty zgromadzone są w jednej przestrzeni środowiska programistycznego. Zadania polegają na modyfikacji pliku źródłowego każdego z projektów. Modyfikacje ograniczają się do ustawiania wartości bitów rejestrów kontrolnych lub zapisu rejestru danych poszczególnych modułów na podstawie dokumentacji, tak aby otrzymać wskazane przez prowadzącego sygnały. Do sprawnego wykonania ćwiczenia konieczne jest wcześniejsze, wybiórcze, ograniczone do przebiegu ćwiczenia, zapoznanie się z dokumentacją wykorzystywanych modułów i płytki eksperymentalnej. Dokumentacja każdego z modułów jest dostępna w trakcie ćwiczenia. 6.1. Zadanie 1 Konfigurowanie sygnałów zegarowych mikrokomputera MSP430F4618 Podczas zadania należy zaprogramować mikrokomputer, aby uzyskać wskazane wartości częstotliwości sygnałów zegarowych i wyprowadzić je na nóżki mikrokomputera. Otrzymane wyniki będą obserwowane na oscyloskopie. Niezbędne do realizacji fragmenty dokumentacji dotyczące modułu zegarowego, wszystkie w rozdziale 5: Rys. 5-1 Schemat blokowy pokazuje przepływ sygnałów i wpływ bitów kontrolnych na działanie modułu. 5
Punkt 5.2 FLL+ Clock Module Operation opisuje zachowanie modułu zegarowego po resecie Punkt 5.2.4(albo 5.2.5 zależnie od wersji dokumentu) Digitally Controlled Oscillator (DCO) pokazuje równania pozwalające wyznaczyć wartości pól rejestrów kontrolnych oscylatora sterowanego cyfrowo dla żądanej fdcoclk. Punkt 5.3 FLL+ Clock Module Registers pokazuje wartości rejestrów kontrolnych po włączeniu zasilania (nie wszystkie bity są wyzerowane po resecie), opisuje znaczenie pól bitowych rejestrów, umożliwia odnalezienie rejestru, w którym zawarty jest poszukiwany bit. W zadaniu wykorzystywany jest projekt pkp_fll. W sprawozdaniu należy zamieścić oscylogramy otrzymanych przebiegów, najistotniejsze linie programu, które pozwoliły te przebiegi uzyskać oraz obliczenia, z których wynikają użyte wartości. Na oscylogramach umieścić kursory ułatwiające odczyt częstotliwości. Sygnały modułu zegarowego FLL+ są wyprowadzone na: MCLK H2/2, SMCLK H2/5, ACLK/n H2/6 6.1.1. Pomiar sygnałów zegarowych bez modyfikacji rejestrów modułu FLL+ a. Zmierzyć częstotliwości MCLK, SMCLK i ACLK bez modyfikacji rejestrów kontrolnych modułu zegarowego(po resecie). Porównać z wartościami z dokumentacji modułu(patrz p. 5.2 FLL+ Clock Module Operation) b. Zapisać oscylogramy sygnałów MCLK i ACLK. 6.1.2. Ustawianie sygnału ACLK/n a. Odnaleźć bity i rejestry konfigurujące dzielnik częstotliwości sygnału ACLK (patrz rys.5-1(schemat blokowy), punkt 5.3 FLL+ Clock Module Registers) b. Zmodyfikować bity ustawiające odpowiedni dzielnik i uruchomić program. c. Zmierzyć i zapisać otrzymany oscylogram sygnału ACLK/n, zapisać modyfikacje programu na potrzeby sprawozdania. 6.1.3. Ustawianie sygnału MCLK f1 a. Odnaleźć bity i rejestr konfigurujące multiplekser wybierający źródło sygnału MCLK(patrz rys. 5-1(Schemat blokowy)). Ustalić adres wybierający DCOCLK jako źródło sygnału MCLK i zmodyfikować program, jeśli konieczne. b. Znaleźć rejestry konfigurujące DCO(patrz p.5.2.4(albo p.5.2.5) Digitally Controlled Oscillator (DCO)). Wyznaczyć wartości rejestrów konf. DCO, aby fdcoclk miała wartość wskazaną przez prowadzącego. Zmodyfikować program, jeśli konieczne. c. Uruchomić program, zmierzyć MCLK i zapisać otyrzymany oscylogram, zapisać modyfikacje programu na potrzeby sprawozdania. 6.1.4. Ustawienie sygnału MCLK f2 a. Odnaleźć bity i rejestr konfigurujące multiplekser wybierający źródło sygnału MCLK (patrz rys. 5-1(Schemat blokowy)). Ustalić adres wybierający ACLK(LFXT1CLK) jako źródło sygnału MCLK i zmodyfikować program, jeśli konieczne. b. Uruchomić program, zmierzyć MCLK i zapisać otyrzymany oscylogram, zapisać modyfikacje programu na potrzeby sprawozdania. 6
6.1.5. Ustawianie sygnału SMCLK a. Odnaleźć bity i rejestr konfigurujące multiplekser wybierający źródło sygnału SMCLK. Ustalić adres wybierający DCOCLK jako źródło sygnału SMCLK i zmodyfikować program, jeśli konieczne. b. Znaleźć rejestry konfigurujące DCO(patrz p.5.2.4(albo p.5.2.5) Digitally Controlled Oscillator (DCO)). Wyznaczyć wartości rejestrów konf. DCO, aby fdcoclk miała wartość wskazaną przez prowadzącego. Zmodyfikować program, jeśli konieczne. c. Uruchomić program, zmierzyć SMCLK i zapisać otyrzymany oscylogram, zapisać modyfikacje programu na potrzeby sprawozdania. 6.2. Zadanie 2 Generowanie przebiegu prostokątnego o zadanych parametrach W czasie zadania należy zaprogramować mikrokontroler (rejestry modułu zegarowego i modułu licznika), aby uzyskać narzucone: częstotliwość i wypełnienie fali prostokątnej. Otrzymany przebieg będzie obserwowany na oscyloskopie. Niezbędne do realizacji fragmenty dokumentacji dotyczące modułu licznika, wszyskie w rozdziale 15: Rys. 15-1 Timer_A Block Diagram pokazuje m.in. wpływ bitów kontrolnych na działanie modułu(wybór źródła sygnału zegarowego) Punkt 15.2.3 Timer Mode Control(dokładnie tabela 15-1 Timer Modes i część Up Mode) opisuje tryby pracy licznika. W ćwiczeniu wykorzystywany jest wyłącznie tryb Up Punkt 15.2.5 Output Unit(dokładnie część Output Modes: tabela 15-2(OUTMODx=7), Output Example Timer in Up Mode, rysunek 15-12(Output mode 7)) W zadaniu wykorzystywany jest projekt pkp_timer_a. W sprawozdaniu należy zamieścić oscylogramy otrzymanego przebiegu, najistotnijsze linie programu, które pozwoliły ten przebieg uzyskać oraz obliczenia uzasadniające zastosowane warości rejestrów TACCR0, 1. Na oscylogramy powinny być zawarte informacje np. kursory, ułatwiające odczyt częstotliwości i wyznaczenie współczynnika wypełnienia. Sygnał wyjściowy jednostki Output Unit bloku CCR1 jest wyprowadzony na H2/3. Przebieg zadania: a. Sprawdzić konfiguracje modułu zegarowego(fll+), jakie częstotliwości mają ACLK i SMCLK(stan początkowy, po resecie modułu FLL+ jest opisany w rozdziale 5, punkt 5.2 FLL+ Clock Module Operation) b. Wybrać źródło(aclk albo SMCLK) sygnału zegarowego dla licznika(patrz schemat blokowy modułu licznika) i zmodyfikować program w razie potrzeby c. Wyznaczanie TACCR0 i TACCR1. Posługując się dokumentacją jednostki wyjściowej (Output Unit, patrz rys. 15-12) ustalić: który rejestr odpowiada za okres sygnału, a który za współczynnik wypełnienia. Uwzględniając wybrane źródło zegara oraz podane parametry przebiegu, wyznaczyć wartości TACCR0 i TACCR1. Zmodyfikować program w razie potrzeby d. Uruchomić program i zmierzyć uzyskany przebieg. Zapisać oscylogram przebiegu o zadanych parametrach. 7
6.3. Zadanie 3 wytworzenie napięcia o ustalonej wartości. W czasie zadania należy zaprogramować mikrokontroler (rejestry modułu DAC12), aby uzyskać na wyjściu przetwornika cyfrowo-analogowego, DAC12_0OUT, napięcie o podanej wartości. Niezbędne do realizacji fragmenty dokumentacji dotyczące modułu DAC12, wszyskie w rozdziale 29(albo 28 zależnie od wersji dokumentu): Rys. 29 1 Schemat blokowy modułu pokazuje m. in. funkcje bitów konfigurujących moduł, w tym adresowanie multipleksera źródła napięcia referencyjnego Punkt 29.2.1 DAC12 Core opisuje jak konfigurować rozdzielczość przetwornika oraz zależność na napięcie wyjściowe Punkt 29.3 DAC12 Registers opis rejestrów przetwornika W zadaniu wykorzystywany jest projekt pkp_dac12_1. Moduł DAC12 mikrokontrolera MSP430F4618 posiada dwa przetworniki: DAC12_0 i DAC12_1, projekt zadania operuje tylko DAC12_0. W sprawozdaniu należy zamieścić oscylogram, najistotnijsze linie programu, które pozwoliły ten przebieg uzyskać oraz obliczenia potwierdzające wykorzystaną wartość rejestru danych. Na przebiegu powinny być zawarte informacje np. kursor, ułatwiający odczyt wartości napięcia. Sygnał wyjściowy(dac12_0out) z przetwornika DAC12_0 jest dostępny na H8/7. Przebieg zadania: a. Sprawdzić co jest źródłem napięcia referencyjnego dla DAC12_0. Upewnić się, że tym źródłem jest VREF+ (patrz rys. 29-1, punkt 29.3 DAC12 Registers dokumentacji modułu), w przeciwnym razie zmodyfikować program. Jaką wartość ma VREF+? b. Zmodyfikować program, w razie potrzeby, aby ustawić wymaganą rozdzielczość przetwornika(patrz punkt 29.2.1 DAC12 Core). c. Wyznaczyć wartość rejestru DAC12_0DAT zapewniającą pożądane napięcie wyjściowe(patrz punkt 29.2.1 DAC12 Core) d. Uruchomić program i zapisać rezultaty na potrzeby sprawozdania. 7. Literatura 1. Texas Instruments, MSP430x4xx Family User s Guide (SLAU056H). 2. Texas Instruments, MSP430FG4618/F2013 Experimenter s Board(SLAU213a). 8