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)
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.
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.
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.
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
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.
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.
Łą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
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.
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
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:
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.
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:
• 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.
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:
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.
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ń
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.
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.
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.
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.
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ń
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]
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.
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.
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.
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.
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
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,
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.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
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).
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
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