MSP430

Programy dla mikrosterowników można kompilować i uruchamiać przy pomocy narzędzi linii polecenia. Pokażemy to na przykładzie MSP430. Najpierw potrzebny jest odpowiedni kompilator skrośny. W pracowni kompilator dla MSP430 jest zainstalowany jako część środowiska Energia i nie pojawia się w domyślnej ścieżce wyszukiwania programów. Dlatego albo trzeba używać pełnej nazwy ścieżkowej kompilatora (co robię w przykładowym Makefile), albo dodać katalog z kompilatorem do ścieżki, np. wykonując
PATH=$PATH:/opt/energia-0101E0010/hardware/tools/msp430/bin
export PATH
Aby mieć dostęp do definicji wspomagająch użycie procesora w programie w C trzeba odwołać się do odpowiednich plików nagłówkowych, np.
#include 
Procesory serii MSP430 mają mnóstwo wariantów, trzeba powiedzieć kompilatorowi który wariant używamy. Dla procesora MSP430G2553 (tego w MSP430 Launchpad) w linii polecenia kompilatora (a właściwie w Makefile) dajemy opcję '-mmcu=msp430g2553'. Po tym można w kodzie w C używać nazw symbolicznych dla portów wejścia/wyjścia procesora i w ten sposób obsługwać urządzenia z C. Dodatkowo specjalna składnia używająca słowo 'interrupt' pozwala na definowanie w C procedur obsługi przerwań. Ćwiczenie polega na tym by zapoznać się z programem przykładowym do pomiaru temperatury. Po kompilacji przy pomocy Makefile program można zapisać w procesorze przy pomocy programy 'mspdebug'. Dokładniej, po podpieciu MSP430 Launchpad pisząc
mspdebug rf2500
uruchamiamy program 'mspdebug' (argument 'rf2500' jest potrzebny by 'mspdebug' znalazł naszą płytkę). Teraz możemy podawać polecenia. 'help' wypisuje pomoc. 'prog main.elf' zapisuje program w procesorze, 'run' uruchamia program.

Program przykładowy robi kilka rzeczy. Najpierw miga diodami świecącymi i czeka na naciśnięcie przycisku. Następnie mierzy temperaturę procesora, uśrednia kilka (8) pomiarów i wysyła wyniki portem szeregowym. Po naciśnięcu przycisku zapamiętuje temperaturę. Później porównuje zapamiętaną temperaturę z bieżącą i zapala diody by pokazać zmianę temperatury (czerwona cieplej, zielona zimniej). Przy tym normalnie procesor jest w stanie uśpienia, zaś zaczyna coś robić dopiero gdy przyjdzie przerwanie sygnalizujące że jest coś do roboty. Przerwania przychodzą od przycisku, od zegara i od przetornika analogowo-cyfrowego (sygnalizujące że pomiar temperatury jest zakończony). Proszę uprościć program, usuwając z niego część funkcji.