(4) Mikrokontrolery MSP430: obsługa programatora i opcje emulatora wbudowanego w zestaw MSP-EXP430FR5739
Opcje emulatora
Jednym z komponentów środowiska IAR EW jest emulator. Opcje emulatora zademonstrujemy na przykładzie programu Oblicz_PI. Program należy pobrać z działu downloads. W programie na podstawie poniższego wzoru jest obliczana wartość liczby π.
Uruchamiamy projekt i w opcjach projektu (Project->Options) sprawdzamy czy wyjście linkera jest ustawione na format Debug information for C-SPY. Jeśli nie jest, to wprowadzamy ustawienia jak na rysunku 10. Zatwierdzamy je przyciskiem OK.
Rys.10. IAR EW – tworzenie pliku wynikowego emulatora, konfiguracja linkera
Następnie kompilujemy projekt ( | Project->Compile | Ctrl+F7), linkujemy pliki projektu ( | Project->Make | F7) i programujemy mikrokontroler z włączona opcją emulatora ( | Project->Download and Debug | Ctrl+D). Uruchamiany jest emulator projektu (rysunek 11).
Rys.11. IAR EW – okno emulatora, projekt Oblicz PI: a) kod źródłowy programu b) kod maszynowy programu c) okno komunikatów emulatora
Pracą mikrokontrolera możemy sterować przy pomocy poleceń zestawionych w tabeli 1.
Tab. 1. Ikony i polecenie służące do sterowania pracą mikrokontrolera w emulatorze zintegrowanym w środowisku IAR EW
Przycisk | Menu -> Debug | Skrót klawiszowy | Opis |
Reset | – | Restart mikrokontrolera | |
Break | – | Przerwanie pracy mikrokontrolera | |
Step Over | F10 | Pojedynczy krok, bez wchodzenia do funkcji | |
Step Into | F11 | Wejście od funkcji | |
Step Out | Shift + F11 | Wyjście z funkcji | |
Run to Cursor | – | Wykonaj program do miejsca ustawienia kursora. Zatrzymaj pracę mikrokontrolera w miejscu ustawienia kursora | |
Go | F5 | Uruchom pracę mikrokontrolera |
W kodzie źródłowym programu możemy ustawiać pułapki sprzętowe. Umieszczamy kursor w miejscu w którym chcemy ustawić pułapkę sprzętową i wciskamy przycisk: . Ten sam efekt uzyskamy wybierając z zakładki Edit polecenie Toggle Breakpoint lub stosując skrót klawiszowy F9. Żeby zdjąć pułapkę sprzętową postępujemy w analogiczny sposób.
Emulator środowiska IAR EW pozwala nam na dostęp do zmiennych programu (odczyt, oraz modyfikacja). Podstawowe opcje dostępu przedstawiono w tabeli 2.
Tab. 2. Wybrane opcje dostępu do zmiennych programu
Menu -> View | Opis |
Watch | Podgląd i modyfikacja zmiennych oraz wyrażeń wskazanych przez programistę. Żeby dodać zmienną/wyrażenie do okna Watch zaznaczmy zmienną/wyrażenie w programie, wciskamy prawy przycisk myszki i wybieramy opcję: Add to Watch. Zmienne/wyrażenia można także dodawać bezpośrednio w oknie Watch. Należy kliknąć w pole click to edit i wprowadzić nazwę zmiennej, albo zdefiniować wyrażenie. Wyrażeniem w oknie Watch może być formuła matematyczna, rejestr procesora, itp. |
Locals | Podgląd i modyfikacja zmiennych lokalnych |
Statics | MPodgląd i modyfikacja statycznych zmiennych globalnych |
Wartość zmiennych, oraz wyrażeń, może być prezentowana w jednym z kilku formatów (binarnie, dziesiętnie, heksadecymalnie, itd.). Format prezentacji danych ustalamy klikając prawym przyciskiem myszki na zmienną/wyrażenie i wybierając jedną z dostępnych opcji. (rysunek 12)
Rys. 12. IAR EW – okno emulatora: a) Watch b) Statics c) Locals d) konfiguracja formatu prezentacji danych
Korzystając z emulatora środowiska IAR EW możemy również uzyskać dostęp do rejestrów mikrokontrolera (View-> Register). Możemy odczytywać, a także modyfikować poszczególne bity konfiguracyjne rejestrów. Możliwy jest również dostęp do pamięci mikrokontrolera (View->Memory) oraz odczyt wywołań stosu programu (View->Call Stack). Okno emulatora z włączonymi opcjami „rejestry/pamięć/wywołania stosu” pokazano na rysunku 13.
Rys. 13. IAR EW – okno emulatora: a) rejestry mikrokontrolera – moduł licznika TimerA b) wywołania stosu – funkcja main c) pamięć mikrokontrolera – obszar pamięci FRAM
Wróćmy do projektu Oblicz PI. W oknie emulatora (rysunek 11) zamykamy zakładkę kodu maszynowego (b), oraz zakładkę komunikatów emulatora (c). Dodajemy zakładkę Watch (View->Watch) i ustawiamy dostęp do zmiennej globalnej pi_2 (połowa wartości liczby P), dostęp do zmiennej lokalnej n (argument funkcji Pi), oraz wprowadzamy wyrażenie pi_2 *2 (wartość liczby P). Następnie uruchamiamy pracę mikrokontrolera ( | Debug -> Go | F5). Wygląd okna emulatora ilustruje rysunek 14.
Rys. 14. IAR EW – okno emulatora: projekt Oblicz PI, uruchomienie pracy mikrokontrolera MSP430
Następnie kursor myszki ustawiamy w linii numer 23 (wywołanie procedury obliczającej wartość liczby π) oraz ustawiamy pułapkę sprzętową ( | Edit ->Toggle Breakpoint | F9). Praca mikrokontrolera zostaje zatrzymana „na pułapce”. W oknie Watch są wyświetlane uaktualnione wartości zmiennych n, pi_2 oraz nowo obliczono wartość formuły pi_2*2. W przykładzie demonstrowanym na rysunku 15 po zrealizowaniu 2200 iteracji algorytmu (n = 2200) obliczona wartość liczby π wynosi: 3,14123559356554 (zgodność ze wzorcem liczby π wynosi 3 cyfry po przecinku).
Rys. 15. IAR EW – okno emulatora: projekt Oblicz PI, zatrzymanie pracy MSP430
Żeby uzyskać bardziej precyzyjną wartość liczby π, usuwamy pułapkę sprzętową ( | Edit ->Toggle Breakpoint | F9) i ponownie uruchomić pracę mikrokontrolera ( | Debug -> Go | F5). Po pewnym czasie ponownie ustawiamy pułapkę sprzętową, a praca mikrokontrolera zostaje zatrzymana. Wówczas z okna Watch odczytujemy nową wartość liczby π. Pracując z emulatorem możemy również używać pozostałych funkcji sterujących MSP430 opisanych w tabeli 1. W praktyce bardzo użyteczne są funkcje pojedynczego kroku ( | Step Over | F10), wejścia do funkcji ( | Step Into | F11), oraz wyjścia z funkcji( | Step Out | Shift + F11). Działanie tych oraz innych funkcji emulatora można przećwiczyć korzystając z omawianego projektu Oblicz PI. Żeby zakończyć pracę emulatora wciskamy przycisk . Ewentualnie z zakładki Debug wybieramy opcje Stop Debugging albo używamy skrótu klawiszowego Ctrl+Shift+D.