msp430 opis p ytki

background image

1. Laboratorium Architektury komputerów

1.1. Harmonogram zajęć

1. Zajęcia wprowadzające. Podstawy EasyWeb2 i oprogramowania IAR. (6.10.2008)

2. Proste wysyłanie na port. Zadanie polega na zapaleniu diody znajdującej sie na płytce

EasyWeb2. (13.10.2008)

3. Watchdog timer w trybie interwal i watchdog.(20.10.2008)

4. Oprogramowanie wyświetlacza LCD z wykorzystaniem kontrolera Hitach HD 44780.

(27.10.2008)

5.
6. Gra z wykorzystaniem LCD, klawiszy i buzzera z modułu EasyWeb2.(3.11.2008,

17.11.2008)

7. Wykorzystanie timerów do stworzenia zegara lub stopera.(24.10.2008)

8. Komunikacja z PC z wykorzystaniem układu USART. (1.12.2008)

9. Termometr wykorzystujący czujnik wewnętrzny i ADC. (8.12.2008)

10. Magistrala 1-wire i czujnik temperatury firmy Dallas. (15.12.2008)

11.
12. Serwer http na płytce EasyWeb2. (22.12.2008, 12.01.2009)

13.
14. Aplikacje mieszane z wykorzystaniem serwera http.(19.01.2009, 26.01.2009)

15. Zaliczenia zaległe i wpisy.(02.02.2009)

1.2. Kryteria oceny

Ocena laboratorium jest ocena wyliczana ze średniej ocen z poszczególnych projektów.
Skala:
(0-2,75> - ndst
(2,75 - 3,25> - dst
(3,25 - 3,75> - dst plus
(3,75 - 4,25> - db
(4,25-4,75> - db plus
(4,75 - 5> - bdb
Na ocenę projektu składa sie:
ocena z wejściówki (od 0 do 5)
obrona projektu (od 0 do 5)

background image

przedłożone sprawozdanie (od 0 do 5)

1.3. Wzór sprawozdania

Wydział Informatyki
Katedra Systemów Czasu Rzeczywistego
Laboratorium Architektury Komputerów

Data: dzień tygodnia, godz. pracowni
dzień-miesiąc-rok

Sprawozdanie z projektu nr. ....
Grupa:
xxx xxxx
xxx xxxx

Prowadzący:
dr inż. Krzysztof Bielawski



Cel projektu

krótki opis


Metoda realizacji

Omówienie przyjętych założeń rozwiązania, technologii i standardów z powołaniem na
literaturę. (nie przepisywać książek).

Opis połączeń (jeśli występują w rozwiązaniu).


Kod programu z komentarzem (jeśli występuje w rozwiązaniu).

Samoocena realizowanego projektu

Jeżeli prezentowane rozwiązanie nie realizuje celu projektu to wyjaśnić dlaczego.

background image

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:

 Poznania budowy systemu mikroprocesorowego.

 Nauki programowania mikrokontrolerów.

 Poznania metod sterowania układami będącymi otoczeniem mikrokontrolerów.

 Opracowywania różnych projektów, które można przetestować zanim zostanie

zaprojektowana płytka drukowana.

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.

background image

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:

 mikrokontroler MSP430F149

 Rezonator kwarcowy 8Mhz

 kontroler LAN CS8900, transformator separujący, złącze RJ45

 dwie diody statusu LAN

 pamięć EEPROM 24LC515 (64kB)

 Wyświetlacz LCD 2x16 znaków ze sterownikiem HD44780

 Interfejs RS232 ze złączem DB9

 Interfejs 1-wire (Dallas iButton)

 Wejście częstotliwościowe (Frequency)

 Łączówka szpilkowa wejść analogowych dla przetwornika ADC (AEXT)

 Łączówka szpilkowa EXT

 Złącze JTAG

 Cztery optoizolowane wejścia

 Cztery przyciski

 Brzęczyk

 Dwa przekaźniki 10A/240V AC

 Diodę LED do dowolnego wykorzystania

 6 diod sygnalizujących stan wysoki na wyprowadzonych wejściach i wyjściach portu

P1.

 diodę sygnalizującą zasilanie

 gniazdo zasilające 5,5mm/2,1mm (power jack)

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

rysunku nr 1.

background image

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.

Gniazdo
RJ-45

Gniazdo
RS 232

Złącze
zasilania

Sygnalizacja

zasilania

Status
LED

LED’y kontrolera

sieci

Złącza szpilkowe
EXT AEXT

Przekaźniki

REL1 i REL2

LED’y

sygnalizujące

stan wejść

portów P1.1-P1.4

Buzzer

Złącze interfejsu

JTAG

Zespół

przycisków

B1-B4

Panel LCD

Złącza DALLAS
i FREQ

Opto-

izplowane

wejścia

DI1-DI4

Wyprowadzenia

styków

przekaźników

MSP430F149

CS8900A

background image

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:

 DI1-DI4 sygnalizują niski stan na liniach wejściowych 1-4 portu P1

 LR1, LR2 sygnalizują załączenie przekaźników

 STATUS (dowolnego wykorzystania) podłączona jest do linii P2.0

 LAN i LINK informują o stanie kontrolera sieci

 POWER sygnalizuje obecność napięcia zasilającego.

Moduł posiada również sygnalizator dźwiękowy w postaci BUZZER’a zbudowanego na

przetworniku piezoelektrycznym. Sterowany liniami P4.2 i P4.3.

background image

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:

 Cztery izolowane galwanicznie wejścia cyfrowe połączone z systemem za

pośrednictwem transoptorów.

 Wyprowadzenia styków roboczych dwóch przekaźników sterowanych liniami P1.5 i

P1.6.

 Wejście częstotliwościowe (FREQ) umożliwia zliczanie impulsów generowanych

przez źródła zewnętrzne (TIMER_A).

 Interfejs 1-wire (Dallas) przeznaczony do komunikacji z niewielkimi urządzeniami

peryferyjnymi typu iButton, transmisja jest realizowana programowo.

 Interfejs transmisji szeregowej w standardzie RS 232.

background image

 Łącze szpilkowe AEXT umożliwia skorzystanie z 8-kanałowego przetwornika

analogowo/cyfrowego (ADC), poszczególne wejścia analogowe wyprowadzone są

jako funkcje alternatywne portu P6

 Łączówka szpilkowa EXT daje dostęp do realizowanej programowo komunikacji

szeregowej w standardzie I2C, transmisji szeregowej z wykorzystaniem modułu

mikrokontrolera USART0 i bezpośrednich wyprowadzeń mikrokontrolera: RST/NMI i

P2.0/ACLK.

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

background image

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:

 napięcie zasilania w przedziale 1,8V…3,6V

 bardzo mały pobór mocy np. w trybie aktywnym 280µA na 1MHz przy napięciu 2,2V

 pięć trybów pracy energooszczędnej, umożliwiające obniżenie poboru prądu nawet do

0,1µA (tryb „off-mode”)

 szybkie przejście z trybu oczekiwania (standby) do trybu aktywnego (poniżej 6µs)

 nowoczesna,16 bitowa architektura CPU typu RISC zapewnia wysoką wydajność

przetwarzania (cykl rozkazowy 125ns@8MHz)

 pamięć stała typu FLASH o pojemności 60kB i 2kB pamięci RAM

 12 bitowy przetwornik A/C typu SAR

 dwa 16-bitowe liczniki, licznik „A” z trzema rejestrami i licznik „B” z siedmioma

rejestrami pracującymi w trybie Capture/Compare

 komparator analogowy

 układ watchdog

 dwa układy komunikacji szeregowej USART

 sprzętowy układ mnożący

 sześć portów 8-bitowych

 programowanie w układzie (ISP) przy pomocy mechanizmu Bootstrap-Loader (BSL) lub

interfejsu JTAG

 obudowa 64-pinowa

3.2. Schemat blokowy

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

background image

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.

Oscillator

System

Clack

60 KB

Flesh

2 KB

RAM

ADC12

I/O

Port

P1, P2

I/O

Port

P3, P4

I/O

Port

P5, P6

Watch-
dog
Timer

Timer

B7

Timer

A3

POR

Comp-
arator

USART

0

USART

1

Hardware
Multiplier



CPU

T

E

S

T

J

T

A

G

Bus
Con
v

MAB

MDB

16-b

MCB

4-b

8-b

16-b

background image

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

.

background image


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:

 Dysponuje 27 instrukcjami wykorzystującymi dowolny z siedmiu trybów

adresowania.

 Posiada ortogonalny zbiór instrukcji, co oznacza, że każda instrukcja użyta z

dowolnym trybem adresowania może być wykonana na dowolnym rejestrze

roboczym.

 Programista ma pełny dostęp do wszystkich rejestrów

 16-bitowa szyna adresowa pozwala na bezpośredni i pośredni (branching troughout)

dostęp do wszystkich obszarów pamięci.

 16-bitowa szyna danych umożliwia dokonywanie bezpośrednich operacji na słowach.

 Bezpośrednia wymiana danych między komórkami pamięci nie wymaga pośrednich

zapisów do rejestrów.

 Rozkazy i adresy przedstawiane są w formacie bajtu lub słowa.

background image

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).

background image

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.

background image

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.

background image

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

background image

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.

background image

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).

background image

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:

• rejestr wejściowy (PxIN) – odzwierciedla stany poszczególnych pinów pełniących funkcję

I/O

• rejestr wyjściowy (PxOUT) – bity tego rejestru ustawiają stan odpowiadających im linii,

skonfigurowanych jako wyjście

• Rejestr kierunku (PxDIR) – umożliwia ustawienie kierunku (wejście/wyjście) wybranej

linii

• Rejestr funkcji (PxSEL) – umożliwia wybranie funkcji alternatywnej dla żądanego pinu.

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.

background image

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:

background image

 Programowana długość słowa danych 7 lub 8 bitów z bitem lub bez do kontroli

parzystości/nieparzystości.

 Komunikacja w standardzie NRZ (ang. not return to zero).

 Sekwencje są nadawane i odbierane w kolejności od najmłodszego do najstarszego bitu.

 Programowalna szybkość transmisji.

 Niezależne rejestry przesuwne odbiornika i nadajnika.

 Oddzielne rejestry buforowe.

 Niezależne przerwania dla odbioru i nadawania.

 Odbiornik jest przystosowany do pracy wieloprocesorowej wg wbudowanych protokołów

idle-line lub address-bit.

 Automatycznie są wykrywane i sygnalizowane odpowiednimi flagami błędy: ramki,

równości, przepełnienia i sekwencja przerwy.

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

 Długość danych 7 lub 8 bitów

 Komunikacja w trybie master lub slave przy użyciu 3 lub 4 linii

 Niezależne rejestry przesuwne odbiornika i nadajnika

 Oddzielne rejestry buforowe

 Możliwość ustawienia polaryzacji i fazy zegara taktującego transmisję

 Programowana szybkość transmisji (bez modulatora)

 Niezależne przerwania dla odbiornika i nadajnika.

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.

background image

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:

 rejestrację zdarzeń

background image

 odmierzanie czasu

 generowanie sygnałów impulsowych o określonym czasie trwania lub przebiegów

okresowych o zadanym współczynniku wypełnienia (PWM).

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:

 posiada zwiększoną do siedmiu liczbę bloków capture/compare (CCR0-CCR6),

 ma możliwość wyboru długości licznika (8,10,12, lub 16 bitów),

 rejestry TBCLx są buforowane i mogą być grupowane,

 wszystkie wyjścia mogą być ustawione w stan wysokiej impedancji.

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

background image

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 (AV

cc

/2), zewnętrznym napięciom odniesienia (V

eREF+

i V

eREF-

).

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:

 Jednokrotna konwersja w pojedynczym kanale.

 Wielokrotna konwersja w pojedynczym kanale.

 Jednokrotna konwersja w sekwencji kanałów.

 Wielokrotna konwersja w powtarzającej się sekwencji kanałów.

background image

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:

 Dowolną z flag ADC12IFG0-ADC12IFG15 ustawianą ze wpisem rezultatu konwersji do

korespondującego z nią rejestru w buforze wyników.

 Zdarzenie polegającego na nadpisaniu któregokolwiek z rejestrów w pamięci wyników.

 Zdarzenie polegające na przekroczeniu czasu konwersji.

background image

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.

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.

background image

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

S

C

G

1

S

C

G

0

O

S

C

O

F

F

C

P

U

O

F

F

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ń

background image

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.

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: f

MCLK

=

f

SMCLK

= 1MHz, f

ACLK

= 32,768 Hz, przy konfiguracji modułu zegara: XT = 0, SELM = 0, 1.










0

50

100

150

200

250

300

350

400

450

500

active

LPM0

LPM2

LPM3

LPM4

stan

Vcc=2,2 [V]

Vcc=3 [V]

0,9 1,6 0,1 0,1

I[

µA]

background image

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:

 Pakiet MSPGCC – darmowy zestaw narzędzi programistycznych na licencji GNU,

zawiera kompilator GCC, asembler i linker (Binutils), debager (GDB) i kilka innych

narzędzi, które są niezbędne do tworzenia i uruchomiania aplikacji dla mikrokontrolerów

MSP 430.

 IAR Embedded Workbench IDE – najbardziej popularne środowisko szwedzkiej firmy

IAR słynie z bardzo wydajnego kompilatora, dostępne jest również w wersji

demonstracyjnej o nazwie „Kickstart”

 CrossWorks – produkt firmy Rowley Associates Limited, dobrze udokumentowany,

równie popularny jak produkt IAR.

 TI Code Composer Essentials Evaluation v2.0 – firmy Teksas Instruments jest

kompletnym środowiskiem IDE, wersja z ograniczeniem kodu do 8KB jest bezpłatna.

background image

 Project_430 – środowisko oferowane przez firmę Phyton, ze względu na brak własnego

kompilatora języka C, przystosowane jest do współpracy z dowolnym kompilatorem, w

ofercie firmowej jest to IAR EW430

 ICC V7 for MSP430 – pakiet Image Craft, darmowy i bez ograniczeń, ale tylko przez

pierwsze 45 dni, później z ograniczeniem wielkości kodu do 4kB

 HI–TECH C – kompilator firmy HI–TECH oferowany ze środowiskiem rozwojowym HI–

TIDE2.

 AQ430 Development Tools firmy Qudravox/Archelon

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.

background image

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:

 Edytor tekstu, który na bieżąco rozpoznaje słowa kluczowe języka C/C++ i zaznacza je

odpowiednimi kolorami, oczywiście dysponuje również typowymi funkcjami edytorów

(np. znajdź, wstaw szablon)

 Program zarządzania plikami projektów (ang. projekt manager).

 Translator asemblera – MSP430 IAR Asembler

 Wysoko wydajny kompilator języka C/C++ – MSP430 IAR C/C++

 Narzędzia biblioteczne: IAR XAR Library Builder i IAR XLIB Librarian

 Wszechstronny program konsolidujący – IAR XLINK

 Program śledzący – IAR C-SPY, mogący pracować w trybie symulacji lub emulacji OCD

(ang. On-Chip Debug).

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.

Rysunek 10. Główne okno aplikacji.

background image

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:

 Symulator programowy, możliwość analizy kodu jedynie na komputerze.

 Debuger z ROM monitorem, pozwala na weryfikację kodu bezpośrednio w układzie

docelowym, poprzez interfejs szeregowy danego procesora.

background image

 Debuger z interfejsem do emulatorów, pozwala na bezpośrednią komunikację z

określonymi typami emulatorów oraz pracę w czasie rzeczywistym.

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:

 Disassembler – alternatywa dla okna edycyjnego, umożliwia śledzenie programu

napisanego w języku C/C++ na poziomie asemblera.

 Memory – umożliwia podgląd zawartości pamięci mikrokontrolera (SFR, RAM, INFO,

Flash), dodatkowo można zmieniać zawartość komórek, a zmiany są natychmiast


Embedded

Workbench

Symulator

driver

Emulator

driver

ROM-monitor

driver

Simulator

ROM-monitor

Target hardware

JTAG

emulator

Target

hardware

A

p

p

li

ca

ti

o

n

s

o

ft

w

ar

e

C-SPY

IAR C-SPY debugger

Target system

background image

uwzględniane w symulacji programu. Wartości, które uległy zmianie w ostatnim kroku

symulacyjnym wyróżniane są kolorem czerwonym.

 Register – przedstawia zawartość rejestrów procesora, oraz stan liczników: cykli,

Timer_A, Timer_B.

 Terminal I/O – umożliwia wprowadzanie i wyprowadzanie danych z aplikacji, po

ustawieniu odpowiedniej opcji w kategorii Linker jest traktowane jako standardowe

wejście/wyjście.

 Watch – umożliwia podgląd zmiennych używanych w programie.

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,

background image

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.

background image

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.

background image

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:

• karta sieciowa zainstalowana w komputerze PC

• kabel sieciowy zakończony wtykami RJ-45 (skrośny w przypaku bezpośredniego

połączenia modułu z kartą sieciową)

• przewód do komunikacji szeregowej w standardzie RS232C (zakończony wtykami DB9,

męskim i żeńskim).

• Zasilacz prądu stałego stałego12V/ O,3A

• Regulowane źródło napięcia

• Generator sygnału prostokątnego (test złącza Freq)

• Termometr z interfejsem 1-wire (test złącza Dallas)

(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

dokumentacją.

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

background image

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.

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

W ćwiczeniu A:

 Dokonać wymaganych połączeń używając odpowiedniego okablowania.

 Aby nie uszkodzić modułu easyWeb2. Zawsze należy w

pierwszej kolejności podłączyć go do komputera PC (łącze

JTAG), a następnie podłączyć zasilanie płytki.

 Dostosować konfigurację oprogramowania sieciowego do zaprogramowanych

następujących ustawień mikroserwera: adres IP – 192.168.0.30, maska podsieci –

255.255.255.0, brama domyślna – 192.168.0.200.

 Uruchomić program HyperTerminal (Akcesoria > Komunikacja > HyperTerminal) i

ustawić następujące parametry łączności: prędkość transmisji sygnału – 9600 bodów, ilość

bitów danych – 8, kontrola parzystości – brak, ilośc bitów stopu – 1, sterowanie

przepływem – brak.

 Zapoznać się ze skutkami użycia przycisków B1 – B4.

 Sprawdzić poprawność działania komunikacji szeregowej. Realizowana ona jest wg

następującego algorytmu: wprowadzany z klawiatury znak przesyłany jest do

mikrokontrolera i wyświetlany na wyświetlaczu LCD, następnie jego kod ASCII

zwiększany jest o jeden i odsyłany do komputera PC, gdzie na terminalu wyświetlany jest

znak odpowiadający temu kodowi.

 Zaobserwować wyniki pracy mikroserwera. Udostępniana przezeń dynamiczna strona

HTML powinna przedstawiać podstawowe parametry mikrokontrolera MSP430F149,

oraz informować w formie graficznej o aktualnej temperaturze układu oraz wartość

napięcia podawanego na siódmą linię portu P6 ( końcówka AI7 złącza szpilkowego

AEXT).

background image

 Sprawdzić poprawność działania interfejsu Freq i Dallas, poprzez dołączenie

odpowiednich przyrządów lub wymuszenie odpowiednio stanu niskiego i wysokiego na

wymienionych wejściach.

W ćwiczeniu B.

 Uruchomić program IAR Embedded Workbench.

 Utworzyć nową przestrzeń: File > New > Workspace.

 Utworzyć nowy projekt: Project > Create > New Projekt, wybrać „Empty projet”, a

następnie zapisać w wybranym katalogu.

 Plik projektu z rozszerzeniem .ewp pojawi się w uprzednio wybranym katalogu po

zapisaniu przestrzeni (File > Save Workspace)

 Przeanalizować powstałe pliki i katalogi.

 Utworzyć plik(i) źródłowe i nagłówkowe wybierając File > New > Source/Test.

 Dodać utworzone plik(i) do projektu: w oknie „workspace” zaznacz cel gdzie będą

dodawane pliki a następnie wybrać, Project > add Fills.

 Ustawić opcje projektu (Projekt > Options), zalecane są następujące ustawienia:

Kategoria

Zakładka

Pole

Ustawienia

General
option

Target
Output
Library conf.

Devis
Output file
Library

MSP430F149
Executable
CLIB

C/C++
compiler

Code
Output
List

Optimizations
bez nazwy
bez nazwy

Size, None(best debug support)
Generate debug info
Output list file, assembler mnemonics

Linker

Output

Format

Debug information for C-SPY
With runtime control modules
With I/O emulation modules

Debugger

Setup

Driver

With I/O emulation modules
Simulator, Run to main

 Przeprowadzić kompilację, konsolidacje i uruchomić debuger.

 Zapoznać się z działaniem przycisków w nowo powstałym pasku narzędziowym, poprzez

kilkukrotne wykonanie programu.

Ćwiczenie C

background image

Dla utrwalenia umiejętności zmodyfikować powyższy program tak, aby

wprowadzanie danych i wyprowadzanie wyników odbywało się przy pomocy funkcji gets() i

putc(). Porównać rozmiar kodu wynikowego dla obu przykładów

.

Pozycje literaturowe (zgodnie z licencją mogące być udostępnione w tej formie) oraz

propozycje kodów źródłowych dla zaproponowanych ćwiczeń znajdują się na

http://kscr.wi.pb.edu.pl

(82.139.14.208) w serwisie e-student dla danego przedmiotu.

Literatura

1. MSP430x1xx Family User’s Guide, (SLAU 049F), Texas Instruments

2. MSP430x14x Data Sheet, (SLAZ 017A), Texas Instruments

3. MSP430 Internet Connectivity (SLAA137A), Texas Instruments

4. MSP430 IAR Embedded Workbench IDE User’s Guide, IAR System

5.

http://www.ti.com

6.

http://www.iar.com

7.

http://www.olimex.com

8.

http://www.rowley.co.uk

9.

http://mspgcc.sourceforge.net


Wyszukiwarka

Podobne podstrony:
Analiza pracy Opis stanowiska pracy
opis techniczny
Opis taksacyjny
OPIS JAKO ĆWICZENIE W MÓWIENIU I PISANIU W ppt
2 Opis RMDid 21151 ppt
Bliższy opis obiektów Hauneb
opis techniczny
Opis zawodu Sprzedawca
opis 21 04
Opis silnikow krokowych id 3370 Nieznany
klimatex venta airwasher opis czesci
KRAŚNIK opis przyłącza
Opis skał
Opis zawodu Spec kontroli jakości
OPIS G
Opis baz danych zgodny z TERYT

więcej podobnych podstron