Praca dyplomowa (6)


POLITECHNIKA BIAŁOSTOCKA

WYDZIAŁ INFORMATYKI

KATEDRA Systemów Czasu Rzeczywistego

PRACA DYPLOMOWA MAGISTERSKA

TEMAT: Zestaw ćwiczeń laboratoryjnych na bazie modułów MSP430

WYKONAWCA: Antoni Perkowski

Imię i nazwisko

PODPIS: .................................

PROMOTOR: dr inż. Mirosław Omieljanowicz

Imię i nazwisko

BIAŁYSTOK 2007 r.


Karta dyplomowa

POLITECHNIKA BIAŁOSTOCKA

Nr albumu studenta 61750

Wydział Informatyki

Studia niestacjonarne stacjonarne/niestacjonarne

Magisterskie uzupełniające.

magisterskie jednolite/ magisterskie uzupełniające/ studia I stopnia/ studia II stopnia

Rok akademicki 2005/2006

Kierunek studiów Informatyka

Katedra Systemów Czasu Rzeczywistego

Specjalność Inżynieria Oprogramowania

Antoni Perkowski

Imię i nazwisko studenta

TEMAT PRACY DYPLOMOWEJ:

Zestaw ćwiczeń laboratoryjnych na bazie modułów MSP430

..................................................................................................................................................

Zakres pracy:

  1. Opis architektury modułu MSP430

  2. Przegląd narzędzi pozwalających na pracę z modułem MSP430

  3. Propozycja ćwiczeń laboratoryjnych z przedmiotu Architektura Komputerów na bazie modułu MSP430.

  4. Prezentacja multimedialna przedstawiająca moduł MSP430 i konspekt ćwiczeń laboratoryjnych.

Dr inż. Mirosław Omieljanowicz

Im i nazwisko promotora - podpis

Dr hab. inż. Waldemar Rakowski, prof. nzw.

Imię i nazwisko kierownika katedry - podpis

.....................................................Data wydania tematu pracy dyplomowej

- podpis promotora

...................................................

Regulaminowy termin złożenia pracy dyplomowej

........................................................

Data złożenia pracy dyplomowej

- potwierdzenie dziekanatu

.....................................

Ocena promotora

..................................

Podpis promotora

...................................................

Imię i nazwisko recenzenta

...........................................

Ocena recenzenta

................................................

Podpis recenzenta


SPIS TREŚCI

1. Wstęp

W ramach przedmiotu Architektura komputerów studenci zapoznają się z koncepcją struktury systemu komputerowego, która określa jego składniki, ich budowę i połączenia, tak, aby całość spełniała określone wymagania użytkowe. Zdobytą wiedzę teoretyczną potwierdzają w praktyce wykonując eksperymenty na układach dydaktycznych w ramach zajęć laboratoryjnych. Trafny wybór przykładu dydaktycznego jest bardzo ważny, wbrew pozorom zastosowanie w tej roli komputera typu IBM PC z najnowszym procesorem Pentium nie jest rozwiązaniem trafnym, ze względu na zbyt złożoną architekturę tego ostatniego. Jako przykłady dydaktyczne najbardziej nadają się procesory „przyjazne” tzn. o prostej budowie, dużych możliwościach i znacznej popularności. Obecnie zajęcia laboratoryjne prowadzone są w oparciu o mikrokontroler typu 8051. Układ ten jest swego rodzaju fenomenem, pomimo, że architektura jego powstała ponad 20-lat temu nadal jest chętnie stosowany w nieskomplikowanych układach przemysłowych ze względu na swą niską cenę i prostą budowę. Jednak w nowoczesnych bardziej złożonych projektach jego możliwości są niewystarczające, dlatego przemysł sięga coraz częściej po mikrokontrolery nowe, 16-bitowe. Oczywiście jako przykład dydaktyczny wyczerpał on również swoją formułę. Dlatego na potrzeby laboratorium zostały zakupione płyty rozwojowe MSP430-easyWeb2 produkowane przez firmę OLIMEX na bazie mikrokontrolera MSP430F149 Texas Instruments.

Celem pracy jest przedstawienie zestawu ćwiczeń laboratoryjnych na bazie w/w modułu, które umożliwią zrozumienie architektury i budowy podstawowych elementów systemu mikroprocesorowego. Przybliżą również tajniki ich projektowania i oprogramowania. Praca zawiera opis architektury modułu MSP430, dający niezbędną wiedzę teoretyczną do wykonania ćwiczeń. Do pracy dołączony został konspekt zajęć w formie multimedialnej w celu usprawnienia przeprowadzania laboratoriów.

Zakres ćwiczeń obejmuje praktyczne wykorzystanie elementów zawartych w mikrokontrolerze oraz sterowanie elementami zewnętrznymi znajdującymi się na płycie. Materiał ćwiczeń został przedstawiony w postaci laboratoriów. Każde z nich umożliwia poznanie kolejnego zasobu systemu. Składa się z dwóch zasadniczych części, teoretycznej przedstawiającej architekturę, właściwości oraz wybrane dane techniczne badanego elementu i części praktycznej zawierającej ćwiczenie główne i zadania rozszerzające dane zagadnienie, polegające zazwyczaj na modyfikacji ćwiczenia zasadniczego, są one ułożone wg narastającego stopnia trudności.

W pracy mikrokontroler nie jest prezentowany metoda klasyczną polegającą na zapoznaniu się z pracą procesora poprzez język asembler. Pomimo, że język wewnętrzny umożliwia dokładne zrozumienie działania procesora oraz współdziałających z nim układów to niestety nie ułatwia pierwszych prób programowania mikrokontrolera ze względu na:

Wszystkich tych niedogodności pozbawione jest programowanie z poziomu zbliżonego do sprzętu, w języku C. Język ten przy zapisywaniu algorytmu pracy systemu, wymaga równie dobrej znajomości architektury mikrokontrolera jak w przypadku programowania w asemblerze. Potrzeba programowania w języku wysokiego poziomu wynika z faktu, że przy ogromnej podaży nowych mikrokontrolerów i mikroprocesorów, uczenie się coraz to nowych języków wewnętrznych staje się niemożliwe.

Układ pracy jest następujący:

Rozdział 2, jest opisem płyty ewaluacyjnej EasyWeb2, zapoznaje z jej budową i możliwościami oraz krótko opisuje główne jej elementy.

Rozdział 3, zawiera zwięzły opis architektury głównego układu płyty, mikrokontrolera MSP430F149.

W rozdziale 4, dokonuję opisu głównych narzędzi programistycznych dla rodziny MSP430.

Rozdział 5 i 6, stanowią zasadniczą część pracy. Przedstawiają w postaci kolejnych laboratoriów, ćwiczenia i zadania do praktycznego wykonania. W rozdziale 5 zebrane są ćwiczenia dotyczące zasobów mikrokontrolera natomiast rozdział następny przedstawia przykłady wykorzystania modułu jako Web serwera. Laboratoria poprzedzane są niezbędną częścią teoretyczną.

2. Zestaw uruchomieniowy MSP430-easyWeb2

2.1. Wprowadzenie

Dużym powodzeniem w roli przykładów dydaktycznych cieszą się różnego rodzaju płyty rozwojowe. Umożliwiają one studentowi zajęcie się funkcjonalną stroną działania badanego elementu, zwalniając z obowiązku łączenia zwykle licznych wejść i wyjść poszczególnych elementów układu. Płyty te stanowią doskonałą bazę do:

0x01 graphic

Fotografia 1. Płyta uruchomieniowa EasyWeb2.

Z pośród wielu ofert w tej kategorii, Politechnika Białostocka do realizacji programu nauczania Architektura Komputerów wybrała produkt firmy Olimex, MSP430-easyWeb2. Płyta ta spełnia w/w oczekiwania a poza tym dostarcza sprzętowe i programowe rozwiązanie dostępu do sieci Ethernet/Internet. Umożliwia to zademonstrowanie różnych aspektów współpracy urządzeń elektronicznych z siecią. Widok modułu przedstawia fotografia 1.

2.2. Wyposażenie systemu

Zestaw uruchomieniowy MSP430-easyWeb2 został opracowany i wykonany przez firmę Olimex z myślą o użytkownikach mikrokontrolerów serii MSP430F14x

firmy Texas Instruments. Płyta posiada następujące elementy podstawowe:

Elementy zostały rozmieszczone na płycie laminowanej o wymiarach 138 x 83mm wg rysunku nr 1.

0x08 graphic
0x01 graphic

Rysunek 1. Rozmieszczenie elementów na płycie.

2.3. Opis modułu

Schemat elektryczny modułu EasyWeb2 oraz rozkład wyprowadzeń mikrokontrolera MSP430F149 został zamieszczony na płycie w katalogu „schematy”. Płyta zasilana jest napięciem stałym 12 V przez gniazdo power jack. Potrzebne napięcia (3.3V, 3.8V i 5.0V) do zasilenia poszczególnych układów scalonych otrzymywane są ze stabilizatorów wlutowanych na płycie.

„Sercem” modułu jest nowoczesny mikrokontroler MSP430F149, wyposażony w 16-bitowy rdzeń o architekturze RISC i zewnętrzny szybki rezonator kwarcowy 8MHz zapewniają mu dużą szybkość działania (do 8 MIPS). Posiada 12 rejestrów ogólnego przeznaczenia (12 akumulatorów!) i siedem trybów adresowania z których każdego można użyć do operacji na dowolnym obszarze adresowym. Układ dysponuje największą w swojej rodzinie pamięcią flesz (60 kB). Współpracę układu z otoczeniem zapewniają liczne bloki peryferyjne: sześć zespołów linii wejść/wyjść cyfrowych, dwa układy licznikowo/czasowe, dwa bloki do szeregowej transmisji danych, przetwornik analogowo-cyfrowy i komparator. Oczywiście są to tylko najważniejsze jego zalety, szerszy opis architektury mikrokontrolera dostarczający niezbędną wiedzę do wykonania ćwiczeń zostanie przedstawiony w rozdziale trzecim.

EasyWeb2 zaprojektowano jako moduł sieciowy wyposażając go w kontroler sieci Ethernet 10Mb/s, CS 8900A. Realizuje on sprzętowo wszystkie zadania związane z transmisją danych w sieci, łącznie z sygnalizacją błędów odbioru i powtórnego wysyłania ramek w wypadku kolizji. Rezonator kwarcowy 20MHz ustala wewnętrzną częstotliwość pracy części analogowej układu. Układ zawiera wiele współpracujących ze sobą bloków funkcjonalnych między innymi: dynamicznie przydzielaną pamięć RAM o pojemności 4,5kB, blok kodera/dekodera ramek Ethernet i porównywania adresów MAC, generator zegarowy z pętlą sprzężenia fazowego PLL oraz filtry na analogowych wejściach i wyjściach. Układ Cs 8900A pracuje w trybie 8 bitowym i jest dołączony do mikrokontrolera za pośrednictwem magistrali danych (port P5) i cztero bitowej magistrali adresowej (młodsze linie portu P3). Do przesyłania sygnałów zezwalających na zapis lub odczyt do/z układu kontrolera wykorzystywane są linie 6 i 7 portu P3. Układ dołącza się do sieci Ethernet 10Base-T przez podwójny transformator separujący i gniazdo RJ45. Stan kontrolera sygnalizują diody LED3 i LED4, informują one odpowiednio o właściwym podłączeniu układu do działającej sieci oraz transmisji danych w sieci. Mikrokontroler ma możliwość współpracy z pamięcią szeregową w standardzie I2C typu 24LC515 o pojemności 64kB przeznaczoną na dane strony Web.

2.4. Komunikacja z użytkownikiem

Moduł MSP430-easyWeb ma wiele możliwości komunikacji z użytkownikiem, najprostsza z nich, to za pośrednictwem sygnalizatorów. Na płytce wlutowane są następujące diody świecące typu LED:

Moduł posiada również sygnalizator dźwiękowy w postaci BUZZER'a zbudowanego na przetworniku piezoelektrycznym. Sterowany liniami P4.2 i P4.3.

Kolejną możliwość komunikacji z użytkownikiem daje wyświetlacz LCD współpracujący ze sterownikiem HD 44780 firmy Hitachi. Pracuje on w trybie cztero bitowym, do przesyłania danych i rozkazów mikrokontroler wykorzystuje starsze linie portu P2.

Do komunikacji z użytkownikiem można też wykorzystać interfejs szeregowy w standardzie RS232 sterowany sprzętowo przez układ transmisji szeregowej UART0. W skład interfejsu wchodzi konwerter poziomów logicznych MAX 3232 i złącze DB9. Podłączony przez to złącze komputer klasy PC, korzystający z programu terminalowego, można używać jako urządzenie wej/wyj.

Komunikacja z modułem może odbywać się również w sposób zdalny przy wykorzystaniu sieci Internet (Ethernet). W mikrokontrolerze można zaimplementować stos protokołów TCP/IP i usługi sieciowe takie jak: serwer WWW czy FTP. Zapewnią one transfer danych pomiędzy modułem a dowolnym komputerem w sieci oraz zdalne sterowanie i monitoring pracy systemu, korzystając ze standardowej przeglądarki internetowej.

W fazie uruchamiania i testowania oprogramowania komunikację zapewnia zintegrowany z mikrokontrolerem interfejs JTAG (Joint Test Action Group), który ułatwia programowanie i umożliwia debagowanie programu w działającym urządzeniu (debugging in-system).

Moduł wyposażony jest w cztery przyciski B1-B4, których stan można odczytać ze starszych linii portu P4.

2.5. Porty urządzeń zewnętrznych

Moduł MSP430-easyWeb2 wyposażony jest w następujące złącza umożliwiające współpracę z urządzeniami zewnętrznymi:

3. Architektura mikrokontrolera MSP430F149

Przeprowadzanie doświadczeń czy tym bardziej projektowanie nowych systemów w oparciu o moduł MSP430-easyWeb2 wymaga od użytkownika dobrej znajomości najważniejszego jego elementu tj. mikrokontrolera. W rozdziale przedstawiono opis funkcjonalny mikrokontrolera i najważniejsze dane potrzebne przy programowaniu.

3.1. Właściwości mikrokontrolera MSP430F149

Najważniejsze dane techniczne mkrokontrolera:

3.2. Schemat blokowy

Uproszczoną strukturę blokową mikrokontrolera MSP430F149 przedstawia rysunek 2.

0x08 graphic
0x01 graphic

Rysunek 2. Schemat blokowy mikrokontrolerów MSP430F14x.

Układ posiada 16-bitową jednostkę centralną, pamięć ROM (typu FLASH) i RAM, elastyczny system taktowania, sprzętowy układ mnożący i liczne układy peryferyjne. Wewnętrzna struktura logiczna opiera się na architekturze von Neumanna, ze wspólną przestrzenią adresową danych i programu. Zarówno dane, program, i układy peryferyjne są umieszczone w jednolitej przestrzeni o rozmiarze 64kB. Komunikacja CPU z poszczególnymi modułami oparta jest na magistrali adresowej (MAB), danych (MDB) i sterującej (MCB). Dwie pierwsze są dwustopniowe. Moduły operujące na słowach dwu-bajtowych dołączone są do magistral 16-bitowych, natomiast pozostałe wykorzystują zawężoną ich część (MAB - 4b, ADB-8b).

3.3. Układ zegara

Mikrokontroler został wyposażony w bardzo elastyczny moduł zegara. Umożliwia on użytkownikowi ustalenie optymalnej zależności między szybkością projektowanego układu a niskim poborem mocy. Zegar może być skonfigurowany do pracy bez jakiegokolwiek zewnętrznego elementu, z jednym zewnętrznym rezystorem, z jednym lub dwoma zewnętrznymi rezonatorami lub zewnętrznym sygnałem zegarowym. Konfiguracja modułu odbywa się na drodze programowej.

0x01 graphic

Rysunek 3. Schemat blokowy modułu zegara.

Układ zegara (rysunek 3) opiera się na trzech oscylatorach.

  1. Oscylator niskiej/wysokiej częstotliwości (LFXT1), może on pracować w dwóch trybach: HF (high frequency) lub LF (low frequency). Wymaga podłączenia do pinów XIN i XOUT kwarca niskiej częstotliwości - 32768Hz, kwarca standardowego (8MHz) lub dowolnego rezonatora z przedziału 450kHz -8MHz. Oscylator LFXT1 można również używać z zewnętrznym sygnałem zegarowym doprowadzonym do pinu XIN.

  2. Oscylator wysokiej częstotliwości (XT2), do stabilizacji wytwarzanych impulsów wykorzystuje jeden z wymienionych wyżej elementów, który należy podłączyć do wyprowadzeń XT2IN i XT2OUT.

  3. Wewnętrzny oscylator cyfrowy (DCO) z charakterystyką typu RC - nie wymaga on zewnętrznych elementów, istnieje jednak możliwość włączania w jego obwód rezystora poprzez wyprowadzenie P2.5/R osc.

Moduł zegara wytwarza trzy przebiegi czasowe.

  1. Zegar pomocniczy (ACLK) - sygnał pochodzi z oscylatora LFXT1 po ewentualnym poprzednim podzieleniu przez 2, 4, lub 8. Może on być źródłem taktowania dla pojedynczych układów peryferyjnych.

  2. Zegar główny (MCLK) - źródłem tego przebiegu jest wybrany programowo jeden z oscylatorów, którego sygnał może być podzielony przez 2, 4 lub 8.

  3. Zegar zastępczy (SMCLK) - ten przebieg może być używany przez wybrane moduły peryferyjne pochodzi on z oscylatora XT2 lub DCO z możliwością uprzedniego podziału.

3.4. Jednostka centralna

Mikrokontroler MCS430F149 został wyposażony w nowoczesną 16 bitową jednostkę centralną o architekturze RISC. Dysponuje ona możliwościami specjalnie utworzonymi dla wsparcia nowoczesnych technik programowania takich jak: przewidywanie rozgałęzień (calculated branching), tablica procesów, używanie języków wysokiego poziomu (np. C). CPU adresuje całą przestrzeń adresową bez potrzeby posługiwania się mechanizmem stronicowania. Wszystkie operacje poza instrukcjami sterującymi są wykonywane jako rejestrowe i trwają jeden cykl zegara. Schemat blokowy części wykonawczej CPU przedstawia rysunek 3. Poza tym jednostka centralna posiada następujące ważniejsze właściwości:

0x01 graphic

Rysunek 4. Blokowa struktura CPU.

Zgodnie ze schematem (rys. 4) CPU zawiera 16 rejestrów, cztery z nich (R0-R3) są dedykowane dla: licznika programu (PC/R0), wskaźnika stosu (R1/SP), rejestru znaczników (R2) i stałych generatora ( R2 i R3). Pozostałe są rejestrami ogólnego przeznaczenia (12 akumulatorów!) i mogą być używane jako rejestry danych, wskaźników i indeksowe. W zależności od użytych instrukcji operacje wykonywane są na całych akumulatorach lub ich młodszych bajtach.

Licznik programu (R0/PC) ma długość 16 bitów i przechowuje adres rozkazu przeznaczonego do wykonania jako następny. Licznik jest inkrementowany odpowiednio do rozkazu, które mogą używać tylko parzystej liczby bajtów (2, 4, lub 6).

Wskaźnik stosu (R1/SP) przechowuje adres wierzchołka stosu. Może być używany ze wszystkimi rozkazami we wszystkich trybach adresowania. Jest używany wg schematu postinkrementacji i predekrementacji. Obszar stosu jest rozbudowywany w stronę malejących adresów.

Rejestr flagowy (R2/SR) oprócz typowych znaczników odzwierciedlających stan arytmometru, zawiera również pola informujące o ustawieniach modułu zegara

Generator stałych (R3/CG1,CG2) - w rejestrach R2 oraz R3 generowane są stałe, z których korzysta Interpreter kodu asemblerowego, co pozwala rozszerzyć zbiór instrukcji o 24 dodatkowe - emulujące instrukcje.

Zbiór instrukcji spełnia warunki ortogonalności i zawiera 51 instrukcji w tym 27 instrukcji rdzenia i 24 instrukcje emulatora. Występują one w trzech formatach: z jednym operandem, dwoma i dla instrukcji skoku. Każda instrukcja może operować na danych długości słowa lub bajtu i używać dowolnego trybu adresowania. CPU dysponuje siedmioma trybami adresowania dla operandu źródłowego i czteroma dla operandu przeznaczenia. Instrukcja trwa jeden cykl zegara plus po jednym cyklu na każdy dostęp do pamięci, przykładowo instrukcji z dwoma operandami trwa trzy takty.

3.5. Systemy resetu i przerwań

System reset w zależności od źródła zdarzenia może wygenerować dwa rodzaje sygnałów POR (power-on reset) lub PUC (power-up clear). Sygnał POR powoduje reset układu i jest wytwarzany w wyniku:

- podania napięcia na układ

- wystąpienia niskiego stanu na pinie RST/NMI, jeśli został on skonfigurowany w funkcji RESET.

Sygnał PUC jest generowany zawsze z sygnałem POR a dodatkowo wywołują go następujące zdarzenia:

- przepełnienie licznika WDT pracującego w trybie watchdog

- naruszenie klucza ochrony WDT

- naruszenie klucza ochrony pamięci FLASH.

W zależności od tego, który z powyższych sygnałów został wytworzony zawartość niektórych rejestrów mikrokontrolera może być ustawiana, może nie ulegać zmianie, może również przyjmować wartość przypadkową. Po wyzerowaniu układu sygnałem POR dokonywane są następujące ustawienia:

- konfigurowany jest pin RST/NIM (w tryb RESET)

- resetowany jest rejestr flagowy

- aktywowany jest tryb watchdog

- moduły peryferyjne przyjmują ustawienia zgodne z opisem rejestrów

-licznik programu jest ładowany adresem zawartym w wektorze resetu, który umieszczony jest pod adresem 0FFFEh.

System przerwań mikrokontrolera MCS430F149 obsługuje trzy typy przerwań: systemu RESET, niemaskowalne i maskowane.

Przerwania są obsługiwane w trybie wektorowym z ustawionymi na stałe priorytetami. Stopień priorytetu uzależniony jest od miejsca układu w łańcuchu i maleje wraz z oddalaniem się od CPU. Poziom priorytetu decyduje o tym, które z równocześnie zgłoszonych przerwań zostaje wybrane do obsługi. Tablica wektorów przerwań zawiera 16 pozycji i jest usytuowana na końcu przestrzeni adresowej (adresy od 0FFE0 do 0FFFF).

Przerwanie typu reset ma najwyższy priorytet i wywoływane jest sygnałem POR. we wyniku jego zajścia praca układu zostaje wznowiona od adresu przechowywanego we wektorze resetu.

Przerwania niemaskowalne (NMI) mogą wywołać następujące zdarzenia:

  1. Pojawienie się aktywnego zbocza na pinie RST/NMI skonfigurowanego za pośrednictwem rejestru WDTCTL w tryb NMI.

  2. Błąd oscylatora.

  3. Naruszenie dostępu do pamięci FLASH.

Każde z tych źródeł może być indywidualnie uaktywnione przez ustawienie odpowiednich bitów (MINIE, ACCVIE, OFIE) rejestru „Interrupt enable1”. W przypadku przyjęcia przerwania, realizowana jest funkcja obsługi, zaczynająca się od adresu umieszczonego w przedostatnim wektorze (0FFFCh) i wszystkie bity włączeń źródeł przerwania są automatycznie resetowane.

Przyczyną przerwań maskowanych są układy peryferyjne i moduł Watchdog pracujący w trybie „interval-timer”. Każdemu z nich dedykowany jest jeden z 14 wektorów przerwań. Poszczególne źródła mogą być maskowane indywidualnie lub wyłączone zbiorowo przez bit GIE w rejestrze statusu (SR).

3.6. Organizacja pamięci

MSP430 wykorzystuje architekturę Von-Neumanna, w związku z tym ma jednolitą przestrzeń adresową o rozmiarze 64kB.

Adres

Przeznaczenie

Typ pamięci

dostęp

0FFFF

0FFE0

Tablica wektorów przerwań

Flesz

(60KB)

Word/bajt

0FFDF

01100

Pamięć główna

010FF

01000

Pamięć informacyjna

Flesz

256 B

0FFF

0C00

Boot menory (1KB)

Masked ROM

Word/bajt

09FF

0200

RAM (2KB)

SRAM

01FF

0100

Moduły peryferyjne

Rejestrowa

Word

00FF

0010

Moduły peryferyjne

Bajt

000F

0000

Rejestry specjalne

SFR

Tabela 1. Mapa pamięci MSP430F149

Najniższą część przestrzeni adresowej (16 bajtów) zajmują rejestry specjalne (SFR). Umożliwiają one dokonanie: włączeń wybranych modułów, uaktywnień przerwań i operacji na znacznikach (flagach).

Moduły peryferyjne są z mapowane w dwa obszary przestrzeni adresowej o dostępie bajtowym lub słownym. W przypadku użycia instrukcji nieodpowiadającej formatowi bloku, starszy bajt jest ignorowany lub uzupełniany zerami.

Nie wymazywalna stała pamięć ROM zawiera specjalną procedurę umożliwiającą wykorzystanie mechanizmu Bootstrap-Loader (BSL). Jest to metoda programowania pamięci Flesh mikrokontrolera, przy użyciu asynchronicznego portu szeregowego.

Mikrokontroler MSP430F149 został wyposażony w pamięć Flash o niskim poborze mocy, typu ISP (in-system programmable). Operacje programowania i wymazywania nadzoruje zintegrowany kontroler. Zawiera on trzy rejestry sterujące, generator czasowy i przetwornicę napięcia wytwarzającą napięcia programowania i wymazywania. Pamięć została podzielona na sekcję główną (60 KB) i informacyjną (256 B). Nie ma różnic w posługiwaniu się nimi. Jedna i druga może być wykorzystywana do przechowywania programu i danych. Sektor informacyjny składa się z dwóch segmentów ( A i B) o wielkości 128B każdy. Natomiast pamięć główna została podzielona na segmenty 512 bajtowe, które z kolei podzielone są na 64 bajtowe bloki. Domyślnym trybem pracy pamięci Flash jest odczyt. W trybie tym generatory czasu i napięcia są wyłączone a operacje na niej wykonywane są typowe dla pamięci typu ROM. Wybór odpowiedniego trybu write/erase, w którym CPU może programować Flash, realizowany jest za pośrednictwem następujących bitów: BLKWRT, WRT, MERAS i ERASE umieszczonych w rejestrach sterujących sterownika. Operacje zapis/kasowanie mogą odbywać się w następujących trybach:

- zapisywanie bajtu lub słowa

- zapisywanie bloku

- kasowanie segmentu

- kasowanie wszystkich segmentów pamięci głównej

- kasowanie wszystkich segmentów pamięci (łącznie z częścią informacyjną).

Czytanie pamięci podczas jej programowania jest zabronione. Dlatego aby uniknąć przestojów CPU, kod dla niego powinien być umieszczony w pamięci RAM. Uaktualnianie fleszu może być inicjalizowane z jego wnętrza lub z pamięci RAM.

3.7 Układy peryferyjne.

Przedstawione dotychczas bloki funkcjonalne zapewniają autonomiczną pracę CPU. Współpracę z otoczeniem umożliwiają natomiast układy peryferyjne. Mikrokontroler MCS430F149 wyposażono w następujące peryferia :

- sprzętowy układ mnożący

- watchdog

- zespoły cyfrowych wejść/wyjść

- przetworniki analogowo-cyfrowe i cyfrowo-analogowy

- układy czasowe

- bloki szeregowej transmisji danych.

W rozdziale tym zostaną omówione najważniejsze właściwości tych układów. Bardziej szczegółowy opis podany będzie jako wprowadzenie do odpowiednich ćwiczeń.

Sprzętowy układ mnożący pracuje niezależnie w stosunku do CPU i wykonuje 16 x 16, 16 x 8, 8 x 16 i 8 x 8 bitowe operacje. Mogą one być wykonywane na liczbach ze znakiem lub bez. Istnieje również możliwość wyboru trybów z akumulacją (sumowaniem) wyników. Rezultat operacji dostępny jest natychmiast po umieszczeniu drugiego operanda. Rejestry układu znajdują się w obszarze peryferiów przestrzeni adresowej.

Wotchdog timer (WDT) ma za zadanie wywołanie zerowania procesora, gdy wystąpi nieprzewidziany problem w wykonywaniu programu. W przypadku, gdy aplikacja nie potrzebuje tego rodzaju zabezpieczenia, moduł WDT może być wyłączony (wstrzymana zostaje praca licznika) lub przełączony w tryb „interval timer”, w którym generuje cykliczne przerwania. Wektor przerwań dla każdego z trybów jest inny. Trybowi wotchdog przyporządkowano wektor resetu, natomiast przerwanie wygenerowane w trybie , „interval” wywoła procedurę z pod adresu przechowywanego we wektorze „watchdog” (nr 10). Moduł opiera się na 16-bitowym liczniku, zliczającym w górę do którego dostęp jest możliwy wyłącznie za pośrednictwem chronionego hasłem rejestru WDTCTL. Jego młodszy bajt umożliwia konfigurację modułu do pracy i zerowanie licznika, natomiast starszy przeznaczony jest na wspomniane hasło. Niezgodność hasła podczas zapisu do rejestru sterującego lub przepełnienie licznika powoduje ustawienie flagi WDTIFG i wygenerowanie sygnału PUC (tryb wotchdog) lub przerwania (tryb interval timer).

Zespoły linii wejścia/wyjścia zwane również portami równoległymi służą do równoległej transmisji danych cyfrowych. Układ MSP430F149 ma zaimplementowane sześć ośmio-bitowych portów (P1-P6). Piny portów są wielofunkcyjne i obsługują również inne moduły peryferyjne. Wszystkie linie są indywidualnie konfigurowane przez użytkownika jako wejście lub wyjście. Z każdym portem związane są cztery rejestry:

Porty P1 i P2 mają możliwość wywoływania przerwań, każdemu z nich przyporządkowano po jednym wektorze. Włączenie przerwania i wybór aktywnego zbocza sygnału wejściowego dokonywane są indywidualnie dla poszczególnych linii. Każda linii przyporządkowana jest flaga, która umożliwia zidentyfikowanie źródła przerwania.

Uniwersalny moduł USART (universal synchronous/asynchronous receive/transmit) obsługuje sprzętowo oba rodzaje transmisji szeregowej, asynchroniczną (UATR) i synchroniczną (SPI) w trybie full-duplex. Rodzaj interfejsu wybierany jest bitem SYNC.

0x01 graphic

Rysunek 5. Schemat blokowy portu USART mikrokontrolera MSP430F149.

Mikrokontroler MCS430F149 posiada dwa identyczne takie moduły USART0 i USART1. Schemat blokowy układu przedstawia rys.4. Składa się on z trzech podstawowych bloków: odbiornika, nadajnika i wspólnego generatora taktującego. Moduł USART może być zerowany na dwa sposoby, sygnałem PUC lub programowo poprzez ustawienie bitu SWRST w rejestrze sterującym układu. Wspólną prędkość transmisji dla nadawania i odbioru określa programowany generator. Zbudowany on jest z 16-bitowego licznika, dwu 8-bitowych rejestrów restytucyjnych (UxBR1, UxBR0), których zadaniem jest odtwarzanie po każdym pół cyklu zegara, zaprogramowanej zawartości licznika. W trybie asynchronicznym modulator umożliwia kompensację części ułamkowej podzielnika w przypadkach, gdy wyliczona wartość nastawu nie jest liczbą całkowitą. Taka kombinacja jest w stanie wytworzyć standardową prędkość transmisji z niestandardowego sygnału źródłowego, którym mogą być: ACLK, SMCLK, UCLKI (zegar zewnętrzny).

W trybie UART moduł ma następujące właściwości:

Właściwości modułu w trybie SPI:

Moduł licznika Timer_A składa się z bloku licznika i trzech identycznych zespołów rejestrów capture/compare (CCR0-CCR2).

Blok licznika opiera się na 16-bitowym asynchronicznym liczniku rewersyjnym (TAR) dostępnym programowo. Spełnia on funkcję czasomierza, zliczając impulsy wewnętrznego generatora (wej. ACLK, SMCLK) lub funkcję licznika, zliczając impulsy doprowadzone z zewnątrz (TACLK, INCLK). Częstotliwość sygnału taktującego licznik może być podzielona przez 2,4 lub 8.

0x01 graphic

Rysunek 6. Schemat blokowy zespołu licznika Timer_A.

Licznik może pracować w jednym z poniższych trybów:

  1. „Stop” - licznik zatrzymany.

  2. „Up” - licznik zlicza wielokrotnie od zera do wartości zawartej w rejestrze TACCR0.

  3. „Continuous” - licznik wielokrotnie zlicza od zera do wartości 0FFFFh.

  4. „Up/down” - licznik wielokrotnie zlicza od zera do wartości zawartej w rejestrze TACCE0 i z powrotem do zera.

Przepełnienie licznika tzn. jego przejście ze stanu 0FFFFh do 0h lub ze stanu zawartego w rejestrze TACCR0 do zera, sygnalizowane jest przez ustawienie flagi TAIFG.

Każdy z bloków capture/compare można zaprogramować w tryb przechwytywania lub porównywania, co umożliwia realizację poniższych funkcji:

W trybie rejestracji zdarzeń następuje przepisanie zawartości licznika do rejestru TACCRx, przy zmianie stanu wybranej linii wejściowej, przy czym można wskazać aktywne zbocze (narastające, opadające lub jedno i drugie). Tryb ten służy do pomiaru odstępów czasu między impulsami zewnętrznymi doprowadzonymi do wejść przechwytujących (CCIxA i CCIxB), przechwycenie można wywołać programowo. Zajście zdarzenie sygnalizowane jest ustawieniem flagi CCIFG w rejestrze TACCRx, skojarzonym z danym blokiem.

Tryb „porównaj” polega na porównywaniu zawartości rejestru TACCRx ze stanem licznika i wygenerowaniu sygnału wewnętrznego EQUx w chwili zrównania się ich zawartości. Równocześnie ustawiana jest flaga CCIFG skojarzonego rejestru.

Każdy blok CCRx zawiera układ wyjścia „Output Unit”, który generuje zewnętrzny przebieg na podstawie sygnałów EQU0 i EQUx. Może on pracować w jednym z ośmiu trybów, zdefiniowanych przez bity OUTMODx rejestru TACCTLx.

Timer_A dysponuje dwoma wektorami przerwań. Przerwanie o wyższym priorytecie dedykowane jest modułowi CCR0 i wywoływane jest przez flagę CCIFG. Drugi wektor ma trzy źródła: CCR1,CCR2 i przepełnienie licznika, które z nich wygenerowało przerwanie wskazuje odpowiednia flaga i rejestr TAIV (generator wektora przerwań). Zawarty w nim numer źródła przerwania może być wykorzystany do automatycznego wywołania procedury obsługi przerwania.

Timer_B7 jest drugim modułem rejestratora/generatora (układu czasowego), w który wyposażono mikrokontroler. Jego architektura jest rozbudowaną wersją Timer_A, wzbogaconą o następujące elementy:

Sposób obsługi układu jest analogiczny do obsługi modułu Timer_A.

Moduł konwersji analogowo-cyfrowej ADC12 (rys. 7), przetwarza napięcie na odpowiadającą mu miarę liczbową w oparciu o metodę sukcesywnej aproksymacji SAR (ang. Successive approximation). 12-bitowy rdzeń ma monotoniczną charakterystykę, pozbawiony jest efektu „brakujących kodów” i umożliwia konwersję z szybkością do 200 ksps. Konwersji mogą podlegać sygnały z ośmiu wejść analogowych (A0-A7) multipleksowanych z portem P6 lub z czterech wewnętrznych kanałów dedykowanych: przetwornikowi temperatury, napięciu zasilającemu przetwornik (AVcc/2), zewnętrznym napięciom odniesienia (VeREF+ i VeREF-). Kanał do próbkowania wybierany jest programowo za pośrednictwem analogowego multipleksera redukującego zakłócenia powstałe we wyniku przełączania kanałów. Źródło napięcia odniesienia dla przetwarzanej próbki również wybierane jest programowo i mogą nim być następujące napięcia: zasilania, zewnętrzne lub wewnętrzne (1,5 lub 2,5V). Algorytm przetwarzania taktowany jest sygnałem ADC12CLK, otrzymanym po ewentualnym podzieleniu z jednego z podstawowych zegarów mikrokontrolera (ACLK, MCLK, SMCLK) lub przebiegiem o częstotliwości ok. 5 MHz wytworzonym we wewnętrznym oscylatorze.

Okres próbkowania ustalany jest na podstawie wspomnianego sygnału ADC12CLK lub bezpośrednio przez sygnał SHI, który inicjalizuje proces próbkowania a następnie konwersji. Przebieg SHI wytwarzany jest przez jeden z modułów czasowych lub programowo za pośrednictwem bitu ADC12SC.

Przetwornik ADC12 może pracować w jednym z czterech trybów:

0x01 graphic

Rysunek 7. Schemat blokowy przetwornika analogowo-cyfrowego ADC12.

Wyniki konwersji zapisywane są w buforze utworzonym z szesnastu rejestrów 16-bitowych, przy czym cztery najstarsze bity są tylko do odczytu. Każdy z rejestrów ma odpowiadający mu rejestr sterujący, który określa kanał przetwarzania, napięcie odniesienia i ewentualnie koniec sekwencji.

Przetwornik ADC12 ma przydzielony jeden wektor przerwania wspólny dla osiemnastu źródeł, które mogą je wywołać. Żądanie przerwania może być generowane przez:

Identyfikację źródła przerwania umożliwia rejestr ADC12IV. Zawarta w nim liczba jest jego kodem i może być dodana do licznika programu w celu automatycznego przejścia do procedury obsługi przerwania.

Blok komparatora analogowego Comparator_A (rys. 8) umożliwia precyzyjne porównywanie napięć doprowadzonych do terminali wejściowych wzmacniacza operacyjnego. Innymi słowy zamienia on przebieg analogowy na dwustanowy przebieg cyfrowy.

0x01 graphic

Rysunek 8. Schemat blokowy komparatora analogowego Comparator_A

Poziom napięcia wyjściowego jest wysoki, jeżeli napięcie podane na terminal (końcówkę) odwracający jest mniejsze od napięcia odniesienia podanego na terminal nieodwracający. Wyjście komparatora może zostać wykorzystane do wyzwolenia przechwytywania wartości licznika/czasomierza Timer_B. Wybrana zmiana poziomu sygnału wyjściowego ustawia flagę CAIFG i ewentualnie generuje przerwanie. Moduł posiada własny generator napięcia odniesienia, które może być podane na programowo wybrany terminal.

3.8 Stany obniżonego poboru mocy

Od nowoczesnych układów cyfrowych wymaga się pracy przy zasilaniu bateryjnym, przez okres wielu miesięcy a nawet lat. Aby to było możliwe, zastosowany mikrokontroler powinien spełniać wyśrubowane normy zużycia energii. Warunek ten osiągany jest głównie poprzez możliwość wprowadzania mikrokontrolera w stan charakteryzujący się obniżonym poborem mocy. Rodzina MSP430 należy do najbardziej energooszczędnych, dlatego jej modele są chętnie stosowane w układach pomiarowych i przenośnych. Bardzo dobre wyniki w tej kategorii zapewnia im elastyczny blok zegara, dobrze zaprojektowany system przerwań i bogaty zestaw trybów pracy o obniżonym poborze energii.

Mikrokontroler MSP430F149 może znajdować się w stanie aktywnym lub w jednym z pięciu trybów oszczędnych. Wyboru dokonujemy poprzez odpowiednie ustawienia bitów: CPUOFF, OSCOFF, SCG0 i SCG1 w rejestrze statusu (SR). Tabela (nr 2) przedstawia charakterystykę poszczególnych stanów i odpowiadające im ustawienia w rejestrze stanu.

tryb

stan bitów w rej. SR

właściwości

SCG1

SCG0

OSCOFF

CPUOFF

Active

0

0

0

0

CPU i wszystkie uaktywnione przebiegi są aktywne

LPM0

0

0

0

1

CPU-wyłączony, przebieg MCLK dezaktywowany, zegary ACLK i SMCLK są aktywne

LPM1

0

1

0

1

CPU, MCLK i oscylator DCO są wyłączone, również generator DC jest wyłączony jeśli zegar DCO nie jest wykorzystywany w stanie aktywnym, SMCLK i ACLK są aktywne.

LPM2

1

0

0

1

CPU, zegary MCLK i SMCLK, oraz oscylator DCO są wyłączone, generator DC i zegar ACLK są aktywne

LPM3

1

1

0

1

Jak w trybie LPM2 tylko generator DC jest również wyłączony

LPM4

1

1

1

1

CPU i wszystkie zegary są dezaktywowane.

Tabela 2. Oszczędne tryby pracy MSP430F149.

Analizując poszczególne tryby dochodzimy do wniosku, że oszczędzanie energii polega na dezaktywowaniu odpowiednich przebiegów zegarowych i ewentualnie wyłączaniu generatora DC. Oczywiście pociąga to za sobą zatrzymanie pracy układów przezeń taktowanymi. Mądre posługiwanie się poszczególnymi trybami umożliwia znalezienie optymalnego rozwiązania między energooszczędnością a funkcjonalnością projektowanej aplikacji. Dowodem na to, że warto wprowadzać mikrokontroler w rozważnie wybrane stany oszczędne niech będzie poniższy wykres.

0x01 graphic

Rysunek 9. Pobór prądu w stanach oszczędnych.

Wykres został wykonany na podstawie danych zawartych w dokumentacji mikrokontrolera MSP430F149, które „zdjęte” były w następujących warunkach: fMCLK = fSMCLK = 1MHz, fACLK = 32,768 Hz, przy konfiguracji modułu zegara: XT = 0, SELM = 0, 1.

4. Środowisko programistyczne

4.1 Przegląd oprogramowania

Na rynku istnieje wiele firm oferujących oprogramowanie wspomagające projektowanie systemów opartych na mikrokontrolerach serii MSP430. Dostarczają one kompletnego wyposażenia warsztatu programisty, obejmuje ono programator-emulator i środowisko programistyczne w skład, którego zazwyczaj wchodzi: edytor, kompilator C lub C++, asembler, linker, symulator i debager. Narzędzia te na ogół przygotowane są do współpracy ze sobą, tworząc tzw. zintegrowane środowisko rozwojowe IDE (ang. Integrated Development Environment). Bardzo często wyposażane są one w moduły współpracujące z interfejsem JTAG, który jest integralną częścią mikrokontrolerów MSP430. Umożliwia on skanowanie i programowanie, każdej komórki pamięci mikrokontrolera i posiada możliwość zdefiniowania pułapek, co ułatwia kontrolę nad wykonywanym programem podczas prac konstruktorskich. Szerokie możliwości tego interfejsu spowodowały ewaluację środowisk programistycznych, w szczególności odnotowano ogromny postęp w rozwoju debagera in - circuit, który pozwala na debagowanie programu w działającym urządzeniu (debugging in - system).

Koszt oprogramowania jest również zróżnicowany, od całkowicie darmowych poprzez wersje demonstracyjne, trialowe aż po kosztowne, ale za to bogato wyposażone. Oto kilka przykładowych pakietów:

Z pełną listą narzędzi programistycznych rekomendowanych przez producenta układów serii MSP430 można zapoznać się na stronie Texas Instruments.

W niniejszym rozdziale zostaną przybliżone tylko dwa pierwsze z powyższej listy, a o to krótkie uzasadnienie wyboru. Za IAR Embedded Workbench IDE, przemawia chęć przedstawienia środowiska najlepszego na rynku, a za takie uważany jest produkt przodującej firmy IAR, poza tym środowisko to jest rekomendowane przez producenta mikrokontrolerów serii MSP430 jak też przez firmę OLIMEX. Wymaga ono również dokładniejszego omówienia ze względu na to, że przedstawione ćwiczenia zostały opracowane i prawdopodobnie będą wykonywane w tym środowisku.

Natomiast pakiet MSPGCC jest najlepszym przedstawicielem w kategorii pakietów darmowych i na pewno będzie bardzo chętnie używany przez użytkowników kompilatora GCC, i fanów środowisk tekstowych.

4.2 MSP430 IAR Embedded Workbench IDE

IAR Systems jest czołowym światowym producentem kompilatorów języka C/C++ na procesory 8/16/32 bitowe. Stanowią one zintegrowane pakiety narzędziowe dedykowane szerokiej gamie mikrokontrolerów. Dla rodziny MSP430 producent oferuje środowisko w dwóch wersjach, pełnej - komercyjnej oraz demonstracyjnej - bezpłatnej, nazwanej KickStart (v.3.42A), której głównym ograniczeniem jest rozmiar generowanego kodu do 4KB. Wersję pełną można testować nieodpłatnie przez okres 30 dni. Oprogramowanie to współpracuje z systemami Microsoft Windows a ich proces instalacji jest standardowy i z tego względu nie będzie tu omawiany.

IAR Embedded Workbench IDE jest kompletnym środowiskiem wspomagającym pracę programisty na etapie pisania, testowania, i uruchamiania programów. Współpracuje z emulatorem sprzętowym MSP430-JTAG, a w przypadku jego braku ma możliwość programowej symulacji pracy mikrokontrolera. IAR Embedded Workbench tworzą zintegrowane ze sobą następujące moduły:

Proces tworzenia kodu programu jest nadzorowany przez inteligentną funkcję MAKE, która wykrywa rodzaj modyfikacji w programie i automatycznie wywołuje niezbędne elementy kompilacyjne.

0x01 graphic

Rysunek 10. Główne okno aplikacji.

Po uruchomieniu środowiska i otwarciu istniejącego lub utworzeniu nowego projektu, ukazuje się główne okno aplikacji, którego wygląd przedstawia rys.10 Jego centralną część zajmuje edytor programu, natomiast z lewej strony ekranu znajduje się okno Workspace. Przedstawia ono na zakładkach, drzewa plików (źródłowych i wynikowych), które tworzą założone projekty. Dodawanie plików (nowo utworzonych, istniejących, bibliotecznych) lub ich usuwanie umożliwia menu kontekstowe lub rozwijalne Project. Wybór pliku wyświetlanego w oknie Workspace powoduje jego otwarcie na zakładce okna edycyjnego. W dole ekranu umieszczane są w formie zakładek wspólnego okna lub osobno, okna informacyjne takie jak Build, Debug log, Find in Files. Po kompilacji i konsolidacji w zakładce Build wyświetlane są informacje o przebiegu (również błędach) tworzenia plików wynikowych wykorzystywanych do symulacji bądź programowania mikrokontrolera. Rezultaty przeszukiwania plików (funkcja menu Edit), przedstawiane są w oknie Find in Files. Okno Debug log jest wyjściem informacyjnym debugera, i uaktywnia się podczas jego pracy. Przedstawiony układ okien jest domyślny i oczywiście może być dowolnie zmieniany. Tradycyjnie w górnej części widoku programu umieszczone są: pasek menu głównego i pasek narzędziowy, umożliwiający szybki dostęp do najczęściej używanych funkcji. Większość z nich to funkcje popularne w programach tego typu i nie wymagają dodatkowego opisu.

Przed przystąpieniem do wykonania projektu, konieczne jest określenie warunków jego realizacji, tzn. wybrania układu docelowego (typu mikrokontrolera), oraz ustawienia parametrów pracy (opcji) poszczególnych modułów środowiska IAR Embedded Workbench. Ustawień tych dokonuje się wybierając Project>Options z menu głównego lub posługując się menu kontekstowym podwiązanym do nazwy projektu (w oknie Workspace).

Po bezbłędnej translacji (Projekt>Make lub F7) napisanego programu, można sprawdzić jego działanie posługując się debugerem (Project>Debug) w trybie symulacji lub emulacji. Wyboru należy dokonać, przed uruchomieniem modułu, na zakładce Setup w kategorii Debugger w opcjach projektu.

C_SPY Debuger jest inteligentnym weryfikatorem systemowym umożliwiającym śledzenie utworzonego kodu i ewentualną weryfikację błędów programowych. Dostępny jest w następujących konfiguracjach:

0x08 graphic
0x01 graphic

Rysunek 11. Struktura programu C-SPY debugger.

Rysunek 11 przedstawia strukturę C-SPY Debugger'a i sposób komunikowania się z układem docelowym. Sterowniki oprócz zabezpieczenia komunikacji i sterowania układem przeznaczenia, dostarczają specyficznego dla siebie interfejsu użytkownika (specjalne pozycje menu, okna, komunikaty).

Po przejściu do trybu symulacji, jak widać na rysunku 12 ogólny układ dotychczasowych okien IDE pozostał bez zmian. Pojawiły się natomiast dwie nowe kategorie menu (Debug, Simulator), a w pozostałych przybyło wiele nowych pozycji. Interfejs użytkownika wzbogacił się również o nowy pasek narzędziowy ułatwiający nawigację symulacją, która może odbywać się w sposób ciągły lub krokowo, rozkazy te dostępne są również poprzez menu główne „Debug”. Śledzenie przebiegu symulacji umożliwia szeroka gama okien informacyjnych (menu View), analiza ich zawartości pozwala na wykrycie nieprawidłowości w pracy programu. A oto krótka charakterystyka niektórych z nich:

0x01 graphic

Rysunek 12. Okno debugera w trybie symulacji.

Możliwość zatrzymywania wykonywania programu w miejscach szczególnie interesujących, dostarcza system C-SPY breakpoint. Oferuje on trzy rodzaje punktów zatrzymań. W celu sprawdzenia poprawności logicznej debugowanego programu lub zrzutu jego śladu, najwygodniej jest posłużyć się „code breakpoint”, który ustawiany jest na wybranej instrukcji (rozkazie). Punkt zatrzymania typu „Data” pozwala na badanie jak i kiedy ulega zmianie zawartość określonej komórki pamięci. Trzeci rodzaj punktu zatrzymań zwany natychmiastowym (ang. immediate breakpoint), ustawiany jest również na komórkach pamięci, a powoduje zatrzymanie symulacji programu, wykonanie skojarzonej z nim akcji, poczym następuje automatyczne wznowienie wykonywania programu. Narzędzie to w połączeniu z systemem makr umożliwia symulację zachowania się sprzętu. Wszystkim typom zatrzymań można przyporządkować akcję (makro) do wykonania, a dla pierwszych dwóch również sprecyzować warunki zatrzymania specyfikując odpowiednie wyrażenie.

Ustawione punkty zatrzymań wylistowane są w oknie „Breakpoint”, tam też można je monitorować, uaktywniać, dezaktywować, usuwać lub dodawać nowe.

Innym ważnym i użytecznym narzędziem pozwalającym na zautomatyzowanie procesu debugowania i symulację układów peryferyjnych mikrokontrolera jest system makr. Ich składnia jest bardzo podobna do języka C, co daje programiście możliwość natychmiastowego z nich korzystania. C-SPY makra, mogą być użyte samodzielnie lub wspólnie z punktami zatrzymań i symulacją przerwań, do wykonania różnorodnych zadań. Przede wszystkim makra używa się do: zautomatyzowania sesji debugowania, konfigurowania sprzętu, symulowania urządzeń peryferyjnych.

C-SPY Simulator dostarcza również mechanizmu symulacji przerwań, dzięki czemu poprawność struktury logicznej programu można zbadać bez konieczności posiadania układu rzeczywistego. Zdefiniowanie pojedynczego lub cyklicznego zdarzenia wywołania przerwania, opiera się na liczniku cykli. Konfiguracja przerwania umożliwia określenie: prawdopodobieństwo jego wystąpienia oraz wariancję okresu. Dokonać jej można za pośrednictwem, okien dialogowych lub makr.

Programowanie i debugowanie aplikacji w układzie rzeczywistym odbywa się za pośrednictwem sondy emulacyjnej (MSP430-JTAG) i modułu oprogramowania IAR C-SPY FET (ang. Flash Emulation Tool)) debugger. Nie jest to emulacja w znaczeniu dosłownym - sterowany mikrokontroler pracuje samodzielnie, a sterownik emulator jedynie sprawuje nad nim kontrolę. Wyboru trybu pracy dokonujemy w polu „driver” zakładki „Setup” w kategori „Debugger” w opcjach projektu. Okno debugera w trybie emulacji dysponuje bardzo podobnymi zasobami w porównaniu z symulacją, ale programista ma dostęp do rzeczywistego mikrokontrolera. Ważniejsze różnice w interfejsie użytkownika to: w menu głównym kategorię symulacja zastąpiła emulacja, dostępne są tylko trzy sprzętowe punkty zatrzymań, przy czym nie jest dostępny typ Immediate.

4.3 MSPGCC

Pakiet MSPGCC jest zestawem narzędzi programistycznych GNU przystosowanym do obsługi mikrokontrolerów rodziny MSP430. Narzędzia te mogą pracować w systemach rodziny Windows, UNIX, BSD. Środowisko kompilatora można przygotować na dwa sposoby. Samodzielnie zbudować dystrybucję, pobierając źródła (standardowy kod źródłowy GNU i specyficzny kod źródłowy MSP430) z Internetu, kompilując je a następnie instalując lub posłużyć się dystrybucją gotową. Druga metoda jest szczególnie polecana dla praktyków, którzy chcą narzędzia wykorzystywać a nie tworzyć. Gotową wersję Windows w postaci pliku instalacyjnego można pobrać z http://sourceforge.net lub http://www.mikrocontroller.net. Podczas instalacji należy tylko wybrać składniki i wskazać katalog docelowy.

Pakiet MSPGCC tworzą następujące programy:

  1. msp430gcc - kompilator C/C++

  2. msp430as - asembler

  3. msp430ls - linker

  4. msp430objcopy - konwerter formatów binarnych

  5. msp430gdb - debugger

  6. make - program do automatyzacji kompilacji

  7. programy służące do obsługi sondy JTAG: msp430gdbproxy, msp430jtag i msp430downloader

  8. giveio - program wymagany dla Windows NT, 2000 lub XP.

  9. Uzupełnieniem pakietu jest graficzna wersją gdb - Insight.

Pełna dokumentacja pakietu autorstwa S. Underwood'a i przykładowe ćwiczenie ilustrujące sposób posługiwania się poszczególnymi programami można znaleźć na w/w stronach.

5. Programowanie zasobów mikrokontrolera

5.1 Wprowadzenie

Niniejszy rozdział prezentuje serię prostych ćwiczeń, których zadaniem jest, ułatwienie zapoznania się z architekturą i sposobem programowania mikrokontrolerów serii MSP430 firmy Texas Instruments. Przedstawione przykłady nie wyczerpują oczywiście wszystkich możliwości programowania, starają się jedynie stopniowo wprowadzić w zagadnienie i dać studentom solidne podstawy do pogłębiania swojej wiedzy.

Na poszczególnych laboratoriach należy stworzyć programy obsługujące podstawowe elementy mikrokontrolera i układy znajdujące się na płycie. Przykładowe rozwiązania postawionych zadań przedstawione są na płycie CD. Do realizacji ćwiczeń wykorzystane zostaną moduły rozwojowe EasyWeb2. Natomiast do tworzenia i uruchamiania programów zalecane jest środowisko IAR Embedded Workbench, można użyć wersji demonstracyjnej, ponieważ programy są krótkie i nie przekraczają wyznaczonego limitu. Oczywiście można posłużyć się dowolnym pakietem, ale opis, wskazówki i rozwiązania zamieszczonych ćwiczeń dotyczą tego środowiska, musiałyby być zmodyfikowane przez prowadzącego. Stworzone i zazwyczaj przetestowane w symulatorze oprogramowanie jest ładowane a następnie uruchamiane w układzie docelowym za pośrednictwem sondy emulacyjnej MSP-JTAG (schemat urządzenia znajduje się na CD).

Zgodnie z zapowiedzią, zamieszczoną we wstępie pracy, mikrokontroler programowany będzie w języku C.

5.2 Lab 1: Sprzęt i oprogramowanie

Cel zajęć

Celem ćwiczeń jest wstępne zapoznanie studenta z modułem EasyWeb2 i środowiskiem programistycznym IAR Embedded Workbench. (Kompilacja, konsolidacja, uruchamianie programu w trybie symulacji).

Zestaw przyrządów

Wszystkie przedstawione ćwiczenia oparte są na płycie ewaluacyjnej EasyWeb2 i wymagają komputera PC z zainstalowanym oprogramowaniem IAR Embedded Workbench, dlatego w następnych ćwiczeniach wymieniane będą tylko przyrządy dodatkowe, na tych zajęciach są to:

(Uwaga: test złącz Dallas i Freq można przeprowadzić również poprzez wymuszenie odpowiednio stanu niskiego i wysokiego na wymienionych wejściach.)

Wiadomości teoretyczne

Przed przystąpieniem do wykonania ćwiczenia studenci powinni zapoznać się z rozdziałami drugim (opis płyty) i czwartym (opis oprogramowania) niniejszej pracy. Streszczenie zawartych tam informacji, przedstawione w formie slajdów znajduje się na płycie w katalogu slajdy.

Przebieg ćwiczeń

Laboratorium składa się z dwóch ćwiczeń A i B. Pierwsze (A) polega na wykonaniu niezbędnych połączeń i uruchomieniu załadowanego przez producenta oprogramowania testowego. W wyniku jego działania sprawdzane są poszczególne elementy modułu i wykrywane podłączone do niego układy. Wyniki testu przedstawiane są na wyświetlaczu LCD i terminalu łączności szeregowej. Do emulacji, którego można wykorzystać Windows'owy program HyperTerminal.

W ćwiczeniu „B” studenci zapoznają się ze środowiskiem IAR Embedded Workbench po przez stworzenie w nim prostego programu i uruchomieniu go w trybie symulacji. Zadaniem programu jest wygenerowanie n liczb Fibonacciego, dla wczytanej wartości n. Do wczytywania danych i wypisywania wyników należy wykorzystać okno terminal I/O.

Oto przykładowy sposób realizacji postawionych zadań.

W ćwiczeniu A:

W ćwiczeniu B.