Programowanie mikrokontrolerów w praktyce Opracowanie na bazie mikrokontrolera MSP430F122 Opracowanie: Szymon Maćków rusken(małpa)op.pl Programowanie Mikrokontrolerów - Rev.01 2009 by Szymon Maćków 1
Co będzie nam potrzebne? KOMPUTER bazą do rozpoczęcia eksperymentów z programowaniem mikrokontrolerów jest komputer (rys.1). Powinien on posiadać port równoległy LPT lub też port USB, które są interfejsami umożliwiającymi komunikację z mikrokontrolerem. Rys. 1. Komputer MAKIETA URUCHOMIENIOWA jest bazą do naszych eksperymentów. Makieta uruchomieniowa (rys.2.) w najprostszej postaci powinna posiadać złącze zasilania, stabilizator dostarczający odpowiednich napięć np. do mikrokontrolera lub peryferiów. Aby unaocznić efekty naszej pracy na makiecie powinny się na niej znaleźć dioda LED, buzzer, klawisz. Schemat makiety uruchomieniowej przedstawiono w DODATKU A na str. 19. W DODATKU C na str.21 przedstawiono główne cechy makiety uruchomieniowej dla mikrokontrolerów z rodzinyn MSP430. Programowanie Mikrokontrolerów - Rev.01 2009 by Szymon Maćków 2
Rys.2. Makieta uruchomieniowa Makieta uruchomieniowa posiada również klawisz reset, który zapewnia prawidłowy reset układu, wyprowadzone piny mikrokontrolera, interfejs JTAG umożliwiający debugowanie oraz programowanie układu, złącze na baterię, które umożliwia zasilenie układu z baterii CR2032 (3V), diodę sygnalizującą podłączenie układu do zasilania. Prezentowana makieta uruchomieniowa jest mojego autorstwa. PORT RÓWNOLEGŁY (LPT) jest interfejsem komunikacji mikrokontrolera z komputerem. Do komunikacji z mikrokontrolerem, może zostać użyty również interfejs USB (ale o tym w dalszej części kursu). Na rysunku nr 3 przedstawiono złącze LPT oraz USB. Niestety większość nowych komputerów przenośnych nie posiada złącza LPT, co pociąga za sobą dodatkowe koszty dokupienia stacji dokującej do laptopa lub też zakupu JTAGa w wersji USB. Rys.3. Port równoległy, Port USB Programowanie Mikrokontrolerów - Rev.01 2009 by Szymon Maćków 3
JTAG (ang. Joint Test Action Group) to nazwa standardu IEEE 1149.1 definiującego protokół używanany do testowania i uruchamiania układów programowalnych i systemów mikroprocesorowych. Na rysunku Rys. 4. przedstawiono JTAG służący do komunikacji pomiędzy mikrokontrolerem a komputerem. Rys. 4. JTAG W zestaw do samodzielnego montażu JTAGa możemy się zaopatrzyć się na stronie http://www.sklep.avt.pl/go/_info/?id=33226 (16.99 PLN brutto)lub też zestaw zmontowane i przygotowany do uruchomienia http://www.sklep.avt.pl/go/_info/?id=481469 (34.00 PLN). Prędkość działania układu to 1.4 KB/s. Dla użytkowników komputerów bez złącza LPT istnieje alternatywa w postaci JTAGa wykorzystującego interfejs USB. W taki JTAG można się zaopatrzyć na stronie http://www.shop.kristech.eu/product_info.php?cpath=24_30&products_id=80. Firma ta jest bezpośrednim dystrybutorem firmy OLIMEX w Polsce. Niestety cena zestawu nie jest zachęcająca i wynosi około 200zł netto, do zalet można oczywiście zaliczyć prędkość działania układu 14KB/s. Programowanie Mikrokontrolerów - Rev.01 2009 by Szymon Maćków 4
Podłączenie JTAGa do komputera Rys. 5. Podłączenie JTAG do komputera Zasilacz kolejną częścią którą powinien posiadać zestaw do programowania mikrokontrolerów jest zasilacz. Rys. 6. Zasilacz Jako zasilacz można wykorzystać ładowarkę do telefonu komórkowego. W tym przypadku zastosowano zasilacz od telefonu komórkowego NOKIA. Parametry zasilacza: -Input: 230V~/ 50Hz/ 21mA/ 4,8VA -Output: 3,7V=/ 355mA/ 1,3VA Należy pamiętać o bardzo istotniej sprawie gdy chcemy zasilać mikrokontroler bezpośrednio z takiego zasilacza z pominięciem stabilizatora napięcia, aby nie przekroczyć parametrów Programowanie Mikrokontrolerów - Rev.01 2009 by Szymon Maćków 5
granicznych napięć i prądów danego typu mikrokontrolera. Parametry graniczne napięć i prądów można znaleźć w notach katalogowych udostępnianych na stronie producenta. W tym wypadku www.ti.com. Podłączenie makiety z JTAGiem Rys. 7. Połączenie makiety z JTAGiem Podłączenie makiety z JTAGiem odbywa się przy pomocy przewodu połączeniowego 14 żyłowego (złącze 2x7). JTAG + zasilanie + makieta uruchomieniowa Rys. 7. JTAG + zasilanie + makieta uruchomieniowa Programowanie Mikrokontrolerów - Rev.01 2009 by Szymon Maćków 6
Kompletny moduł uruchomieniowy z podłączonym zasilaniem oraz interfejsem JTAG. Komputer + JTAG + zasilanie + makieta uruchomieniowa Rys. 8. Komputer + JTAG + zasilanie + makieta uruchomieniowa Środowisko programistyczne IAR dla mikrokontrolerów MSP430. Rys. 9. Plik instalacyjny wraz z kluczem aktywacyjnym Środowisko programistyczne IAR można pobrać ze strony producenta www.iar.com z działu Downloads ---> Evaluation software. Mamy do wyboru dwa rodzaje oprogramowania. Pierwsze to IAR Embedded Workbench 30-day evaluation edition, drugie to IAR Embedded Workbench KickStart edition dla MSP430 (4KB edition). Wybieramy to drugie. Ograniczenie, które posiada to drugie to 4KB kodu wynikowego napisanego w języku C. Programy napisane w języku ASEMBLER nie posiadają takiego Programowanie Mikrokontrolerów - Rev.01 2009 by Szymon Maćków 7
ograniczenia. Aby pobrać oprogramowanie należy wypełnić formularz na stornie klikając w MSP430 tj. na rys poniżej. Rys. 10. Wybór odpowiedniej wersji oprogramowania Rys. 11. Kolejny krok rejestracji Programowanie Mikrokontrolerów - Rev.01 2009 by Szymon Maćków 8
Rys. 12. Formularz do wypełnienia Gdy pomyślnie wykonamy wszystkie kroki rejestracji otrzymamy informację na maila dotyczące kodu rejestracyjnego oraz link do pobrania oprogramowania. Po zainstalowaniu oprogramowania pozostaje nam prawidłowe jego skonfigurowanie, aby można było swobodnie i bez żadnych problemów korzystać ze sprzętowego debugera. Poniżej przedstawiono kolejne kroki tworzenia projektu i konfiguracji oprogramowania. Start -> programy -> IAR Systems -> IAR Embedded Workbench KickStart for MSP430 -> IAR Embedded Workbench Programowanie Mikrokontrolerów - Rev.01 2009 by Szymon Maćków 9
Rys. 13. Ekran powitalny Tworzymy nowy projekt klikając w okno Create New Project in current workspace Rys. 14. Projekt w języku C Programowanie Mikrokontrolerów - Rev.01 2009 by Szymon Maćków 10
Zaznaczamy zakładkę main i wybieramy OK. Rys. 15. Tworzenie projektu Tworzymy katalog w dowolnym miejscu na dysku i podajemy nazwę dla naszego projektu. W naszym wypadku nazwa projektu to LED. Klikamy Zapisz. W tym miejscu zostaje utworzony plik main.c Rys. 15. Main.c Programowanie Mikrokontrolerów - Rev.01 2009 by Szymon Maćków 11
Teraz czas na konfiguracje projektu. Rys. 15. LED Debug Aby prawidłowo uruchomić konfigurator opcji należy zaznaczyć w projekcie po lewej stronie LED Debug -> Options Alt+F7. Rys. 16. Wybór urządzenia Z listy wybieramy mikrokontroler który posiadamy na naszej makiecie uruchomieniowej. W naszym przypadku MSP430F122. Programowanie Mikrokontrolerów - Rev.01 2009 by Szymon Maćków 12
Następnie zakładka Linker powinna być skonfigurowana wg. poniższego rysunku Rys. 17. Output file Rys. 18. Config Następnie konfigurujemy zakładkę Debugger. Programowanie Mikrokontrolerów - Rev.01 2009 by Szymon Maćków 13
Rys. 19. Debugger W tej zakładce wybieramy opcję FET Debugger. Oznacza to że będziemy wykorzystywać sprzętowy moduł (makieta) podłączony przez interfejs JTAG. Ostatnią zakładką którą należy skonfigurować jest zakładka FET Debugger. Rys. 20. FET Debugger Programowanie Mikrokontrolerów - Rev.01 2009 by Szymon Maćków 14
Connection ta opcja definiuje interfejs komunikacji. W naszym wypadku jest to port równoległy LPT. Zatwierdzamy nasz nastaw opcji przez OK. Teraz możemy przystąpić do napisania pierwszego programu. Pierwszym programem, który pozwoli unaocznić działanie programu jest włącznie i wyłącznie diody LED. Rys. 21. Listing programu (DODATEK B str.20) Możemy przystąpić do kompilacji naszego programu. Aby skompilować program możemy użyć klawisz funkcyjnego F7. Programowanie Mikrokontrolerów - Rev.01 2009 by Szymon Maćków 15
Rys. 22. Zapisanie przestrzenie w której pracujemy Jeżeli kompilator nie wykryje błędów podczas kompilacji w oknie komunikatów powinien pojawić się komunikat tj.na rysunku poniżej. Rys. 23. Okno informacyjne kompilatora Programowanie Mikrokontrolerów - Rev.01 2009 by Szymon Maćków 16
Następnym krokiem, jest skomunikowanie się z makietą i włączenie sprzętowego debugera. Możemy tego dokonać używając skrótu klawiszowego Ctrl + D, lub tj. na rysunku poniżej, poprzez zaznaczenie ikony w belce narzędziowej. Rys. 24. Włącznie trybu debugera Poniżej przedstawiono okno komunikacji z makietą i załadowanie programu do pamięci FLASH mikrokontrolera Rys. 25. Załadowanie aplikacji do pamięci mikrokontrolera Debugger posiada wiele użytecznych opcji tj. podgląd aktualnego stanu rejestrów, praca krokowa, możliwość ustawiania pułapek, możliwość zatrzymania programu w dowolnym momencie. Więcej opcji możemy znaleźć w zakładce View. Programowanie Mikrokontrolerów - Rev.01 2009 by Szymon Maćków 17
Rys. 26. Dodatkowe opcje debugera Rys. 27. Stan rejestrów mikrokontrolera w czasie pracy krokowej Programowanie Mikrokontrolerów - Rev.01 2009 by Szymon Maćków 18
DODATEK A Programowanie Mikrokontrolerów - Rev.01 2009 by Szymon Maćków 19
/*program zapalajacy diode LED */ DODATEK B /* pliki naglowkowe */ #include <msp430x12x2.h> //plik naglowkowy ktory zawiera deklaracje //zasobow mikrokontrolera /*deklaracje zmiennych*/ int delay; //zmienna typu int wykorzystywana //w petli opoznienia /*definicje stalych*/ #define LED 0x02 //dioda LED na 1 pinie portu 2 /*funkcja main*/ void main( void ) { WDTCTL = WDTPW + WDTHOLD; // funkcja zatrzymująca Watchdog-a P2DIR = 0x02; //wlaczenie pinu 1 portu 2 00000010 P2OUT = 0x02; //pin 1 portu 2 ustawiony jako wyjscie while(1) { P2OUT ^= LED; //nieskonczona petla while //WLACZENIE diody LED for(delay=0; delay<=0x8fff; delay++); //opoznienie P2OUT ^= LED; //WYLACZENIE diody LED for(delay=0; delay<=0x8fff; delay++); //opoznienie }; //koniec peli while } //koniec funkcji main Programowanie Mikrokontrolerów - Rev.01 2009 by Szymon Maćków 20
DODATEK C MSP430 uni BOARD - cechy: 1. Złącze zasilania + PWR LED 2. Złącze JTAG 3. Złącze JTAG-U1_U2 (programowanie układów U1 i U2) 4. Piny JTAG Power_In i Power_Out 5. PORTY P1, P2, P3, P4, P5, P6 6. BUZZER (P2.0) 7. LED2 (P2.1) 8. SWITCH (P2.2) 9. RESET 10. Gniazdo baterii CR2032 (BOT) 11. Stabilizator 3V3 @ 100mA 12. Oscylatory kwarcowe Q1, Q2 (32 768Hz), Q3 13. PCB: FR-4, 1.5 mm, Cu 17um, opis TOP i BOT 14. Wymiary: 73.4 x 52.8 mm Makieta umożliwia implementację kilku rodzajów mikrokontrolerów z rodziny MSP430. Typy mikrokontrolerów oraz rodzaj obudowy zostały zamieszczone w tabeli 1. Tabela 1. Typy obudów mikrokontrolera Nazwa U1 U2 U3 obudowa MSP430F11x + 20TSSOP MSP430F11x1 + 20TSSOP MSP430F11x1A + 20TSSOP MSP430F11x2 + 20TSSOP MSP430F12x2 + 28TSSOP MSP430F12x + 28TSSOP MSP430F13x + 64LQFP MSP430F14x + 64LQFP MSP430F14xx + 64LQFP MSP430F15x + 64LQFP MSP430F16x + 64LQFP MSP430F161x + 64LQFP Opracowanie: Szymon Maćków rusken(małpa)op.pl Programowanie Mikrokontrolerów - Rev.01 2009 by Szymon Maćków 21