Systemy wbudowane Pracownia specjalistyczna nr 1 Zapoznanie

Transkrypt

Systemy wbudowane Pracownia specjalistyczna nr 1 Zapoznanie
Systemy wbudowane
Pracownia specjalistyczna nr 1
Zapoznanie się ze środowiskiem MPLAB
MPLAB IDE jest programem działającym w systemie operacyjnym Windows , do
tworzenia aplikacji dla mikrokontrolerów firmy Microchip. Proces projektowania obejmuje:
wybór mikrokontrolera, stworzenie projektu, wybór narzędzi językowych, dodawanie plików
do projektu, tworzenie kodu źródłowego, budowę projektu, uruchomienie kodu z
zastosowaniem debuggera i symulatora oraz zaprogramowanie mikrokontrolera.
1. Wybór mikrokontrolera
Pierwszą czynnością jaką naleŜy wykonać jeszcze przed stworzeniem projektu jest
wybór mikrokontrolera, który będzie wykorzystywany do uruchomienia napisanego kodu.
Aby to uczynić naleŜy wybrać polecenie z menu Configure>Select Device. Okno wyboru
mikrokontrolera pokazano na rys. 1. W naszym przypadku będzie to mikrokontroler
PIC16F877A, który wybieramy z listy rozwijanej pod etykietą Device. Kolorowe kropki w
dalszej części okna pokazują, jakie komponenty MPLAB współpracują z wybranym
mikrokontrolerem:
• zielone kropki oznaczają moŜliwość pełnej współpracy;
• Ŝółte kropki oznaczają tylko częściową współpracę z danym komponentem – niektóre
funkcje mogą być nieobsługiwane;
• czerwone kropki oznaczają brak współpracy z danym komponentem systemu.
Rys 1 Okno wyboru mikrokontrolera
1
2. Tworzenie projektu
Następnym krokiem jest stworzenie nowego projektu. Najprościej jest uŜyć do tego celu
kreatora projektów (Project Wizard). Sam projekt jest sposobem organizacji plików, które
mają być kompilowane i uruchamiane. W projekcie zostanie uŜyty jeden plik źródłowy oraz
skrypt linkera. Aby otworzyć okno kreatora naleŜy uŜyć polecenia menu Project>Project
Wizard.
Pierwszym oknem jest okno powitalne kreatora – w tym miejscu naleŜy kliknąć
polecenie Dalej. Następne okno pozwala na wybór urządzenia docelowego. W tym miejscu
naleŜy upewnić się, Ŝe na pewno został wybrany układ PIC16F877A.
3. Wybór narzędzi językowych
Kolejnym krokiem jest wybór narzędzia językowego (kompilatora), które będzie
uŜywane w projekcie. Okno wyboru narzędzia językowego pokazano na rys. 2. Z listy
rozwijanej Active Toolsuite naleŜy wybrać Microchip MPASM Toolsuite. Po wybraniu
zestawu, w niŜszym oknie zostaną pokazane wykorzystywane narzędzia. W tym przypadku
będą to MPASM, MPLINK i MPLIB. JeŜeli środowisko MPLAB zostało zainstalowane w
katalogu domyślnym to ścieŜki do tych narzędzi powinny być następujące:
• MPASM - C:\Program Files\Microchip\MPASM Suite\mpasmwin.exe;
• MPLINK - C:\Program Files\Microchip\MPASM Suite\mplink.exe;
• MPLAB - C:\Program Files\Microchip\MPASM Suite\mplib.exe.
JeŜeli wyświetlone ścieŜki nie są poprawne – naleŜy je skorygować w okienku Location.
Rys. 2 Okno wyboru narzędzia językowego
Po wybraniu narzędzi językowych naleŜy kliknąć Dalej i określić nazwę projektu w
kolejnym kroku kreatora. W naszym przypadku będzie to C:\Projekty\projekt1. Klikamy
Dalej i przechodzimy do kolejnego kroku kreatora.
2
3. Dodawanie plików do projektu
W kolejnym kroku naleŜy dodać do projektu plik z kodem źródłowym. Jako Ŝe nie
mamy wcześniej stworzonego pliku źródłowego, poleŜymy się specjalnym wzorcem pliku
dostosowanym do naszego mikrokontrolera. Wzorzec jest podzielony na kilka
predefiniowanych sekcji, w których naleŜy umieścić własny kod źródłowy. Pomaga to
znacząco przy organizacji kodu. Dla kaŜdego mikrokontrolera stworzone są dwa wzorce.
Jeden przeznaczony jest dla kodu bezwzględnego (absolute) i znajduje się w katalogu Code, a
drugi dla kodu relokowanego (relocatable) i znajduje się w katalogu Object. Kod
bezwzględny nie uŜywa linkera przy budowaniu projektu natomiast przy budowie kodu
relokowanego jest on uŜywany. W naszym projekcie linker nie będzie uŜywany więc naleŜy
wybrać z katalogu Code plik o nazwie 16F877ATEMP.ASM. Pełna ścieŜka do wzorca
wygląda następująco:
C:\Program Files\Microchip\MPASMSuite\Template\Code\18F877ATEMP.ASM.
Po wybraniu pliku wzorca naleŜy zmienić sposób umieszczenia pliku w projekcie. W
tym celu naleŜy trzykrotnie kliknąć literę A w prawym oknie przy nazwie dodawanego pliku,
aŜ pojawi się tam litera C – w ten sposób plik wzorca zostanie skopiowany do katalogu
projektu. Wybór pliku wzorca pokazano na rys. 3.
Rys. 3 Wybór pliku wzorca
Po kliknięciu przycisku Dalej wyświetlone zostaje okno końcowe kreatora, gdzie
moŜna zobaczyć podsumowanie projektu. Po naciśnięciu przycisku zakończ projekt zostanie
stworzony oraz zostanie wyświetlone okno projektu (rys. 4). Dodatkowe pliki mogą być
dodawane do projektu z menu kontekstowego dostępnego po przyciśnięciu prawego klawisza
myszy na nazwie projektu.
3
Rys. 4 Okno projektu
4. Tworzenie kodu źródłowego
Aby otworzyć plik wzorcowy z kodem naszego projektu naleŜy kliknąć go dwukrotnie
lewym klawiszem myszy. Otworzy się wówczas okno edytora kodu. Pierwsza część wzorca
określa konfigurację kompilatora, miejsce definicji zmiennych oraz miejsce na procedury
obsługi przerwań (rys. 5). Kod źródłowy, który wprowadzimy zostanie umieszczony w po
etykiecie main.
Rys. 5 Plik wzorca.
4
Pierwszy napisany program będzie czytał w pętli zawartość portu B mikrokontrolera i
przesyłał go do portu C. Na początku programu zerowany jest rejestr W. Następnie zerowane
są porty B i C mikrokontrolera, poprzez przesłanie do nich zawartości rejestru W. Następnie
odbywa się konfiguracja portów B i C - odpowiednio – jako wejście i jako wyjście. Aby
dostać się do rejestrów konfiguracyjnych TRISB i TRISC naleŜy wybrać bank rejestrów o
numerze 1. W tym celu naleŜy odpowiednio ustawić bity RP0 i RP1 w rejestrze STATUS.
Dalsza część kodu odpowiada za przesyłanie danych z portu B do portu C mikrokontrolera w
nieskończonej pętli. Kod programu pokazano na rys. 6.
Rys. 6. Kod programu
5. Kompilacja projektu
Rezultatem kompilacji projektu jest plik wynikowy, który moŜe być zaprogramowany
w mikrokontrolerze. Aby zbudować projekt naleŜy wybrać jeden z trzech sposobów:
• z menu Project>Build All;
• kliknąć prawym klawiszem myszy nazwę projektu w oknie projektu i wybrać
polecenie Build All;
• kliknąć odpowiednią ikonę na pasku narzędzi.
Okno wyjściowe (Output) pokazuje rezultaty procesu budowy projektu. Na tym etapie nie
powinno być Ŝadnych błędów i ostrzeŜeń (rys. 7).
5
Rys. 7 Zawartość okna wyjściowego po zbudowaniu projektu
JeŜeli kod nie zbudował się prawidłowo naleŜy sprawdzić jedną z poniŜszych
moŜliwości:
• jeŜeli asembler wskazuje błędy w oknie wyjściowym naleŜy dwukrotnie kliknąć w
linię opisująca błąd – wówczas niebieska strzałka w edytorze kodu wskaŜe błędną
linię;
• naleŜy sprawdzić gramatykę i format kodu źródłowego w oknie edytora – upewnić się,
czy nazwy rejestrów są wpisane wielkimi literami (PORTC, TRISC);
• naleŜy sprawdzić czy został wybrany właściwy asembler (MPASM) i linker
(MPLINK) – moŜna to sprawdzić wybierając z menu Project>Set Language Tool
Locations i zweryfikować czy plik mpasmwin.exe znajduje się we właściwej
lokalizacji.
Po poprawnym zbudowaniu programu zostanie wygenerowany plik wyjściowy, którego
zawartość moŜe zostać zaprogramowana w mikrokontrolerze. Plik wyjściowy zawiera takŜe
informacje potrzebne do debuggowania kodu, więc zmienne z kodu źródłowego będą
widoczne w postaci symboli w oknie podglądu.
6. Uruchamianie kodu i zastosowanie symulatora
Symulator jest programem, który symuluje na komputerze PC wykonywanie instrukcji
mikrokontrolera PIC. Nie dzieje się to w czasie rzeczywistym, poniewaŜ działanie symulatora
zaleŜy od szybkości komputera PC, złoŜoności kodu, wydajności systemu operacyjnego itp.
Jednak symulator potrafi teŜ dokładnie zmierzyć czas wykonania kodu w rzeczywistym
systemie opartym o mikrokontroler za pomocą narzędzia Stopwatch. W bieŜącym przykładzie
zostanie uŜyty symulator MPLAB SIM, który jest zintegrowany ze środowiskiem MPLAB.
6
Aby wybrać jako debugger narzędzie MPLAB SIM naleŜy wybrać opcję z menu
Debugger>Select Tool>MPLAB SIM. Po wybraniu tego narzędzia w oknie głównym pojawią
się następujące zmiany:
• w pasku stanu w lewym dolnym rogu pojawi się napis MPLAB SIM;
• w menu View zostaną udostępnione dodatkowe okna;
• na pasku narzedzi pojawią się dodatkowe ikony do sterowania funkcjami debuggera;
• w menu debuggera pojawią się dodatkowe opcje;
• zakładka MPLAB SIM zostanie dodana do okna wyjściowego.
W momencie, gdy projekt jest stworzony oraz gdy został wybrany debugger moŜna
zapisać na dysku informacje o przestrzeni projektowej (File>Save Workspace).
Rys. 8 Okno edytora po resecie procesora
Pierwszym krokiem przy symulacji jest zerowanie mikrokontrolera. MoŜna to
wykonać wybierając polecenie Debugger>Reset>Procesor Reset. Zielona strzałka w oknie
edytora kodu wskaŜe wówczas początek programu. Jedną z pierwszych instrukcji jest
instrukcja skoku do etykiety main, gdzie został umieszczony nasz kod (rys. 8).
Aby wykonywać krok po kroku nasz program naleŜy wybrać polecenie
Debugger>Step Into. Polecenie to spowoduje wykonanie aktualnie zaznaczonej strzałką linii
kodu i przesunięcie strzałki do następnej wykonywanej linii. Po wybraniu tego polecenia lub
naciśnięciu odpowiedniej ikony z paska narzędzi debugger przejdzie do wstawionej przez nas
części kodu (rys. 9).
7
Rys. 9 Okno edytora po wykonaniu operacji Step Into
Aby zobaczyć czy kod działa właściwie (na porcie C pojawiają się kolejne wartości)
moŜna uŜyć okna podglądu Watch (View>Watch). W górnej części okna znajdują się dwie
rozwijane listy, z których moŜna wybrać rejestr SFR lub symbol zmiennej w celu obserwacji
ich zawartości. Dla przykładu moŜna dodać z pierwszej listy rejestr PORTB i nacisnąć
przycisk Add SFR. Podobnie moŜna zrobić dla innych wykorzystywanych w programie
rejestrów, np. PORTC, TRISB, TRISC, STATUS. Okno podglądu podaje informacje o
adresie, nazwie i wartości obserwowanych rejestrów (rys. 10). Po dodaniu okna podglądu
moŜna jeszcze raz zapisać obszar roboczy projektu (File>Save Workspace). Przechodząc krok
po kroku przez linie programu moŜna zaobserwować zmiany zawartości obserwowanych
rejestrów.
Rys. 10. Okno podglądu
Narzędzie Stimulus jest generatorem sygnałów zewnętrznych podawanych do
mikrokontrolera. Za pomocą tego narzędzia moŜna zmieniać poziom sygnałów lub generować
impulsy na portach wejściowych mikrokontrolera. Stimulus umoŜliwia dwa tryby generacji
sygnałów:
• asynchroniczny – jednorazowa zmiana sygnału na wyprowadzeniu układu poprzez
naciśnięcie odpowiedniego przycisku;
8
•
synchroniczny – predefiniowana seria zmian sygnałów na wejściach mikrokontrolera.
Stimulus zostanie wykorzystany w trybie synchronicznym do podawania wartości na
port B mikrokontrolera. W tym celu naleŜy przejść do zakładki Pin/Register Actions i dodać
kolumnę PORTB klikając na nagłówku tabeli (Rys. 11). Następnie ustalamy jakie mają być
wartości na porcie B w określonych przedziałach czasu. Jako jednoskę czasu wybieramy cykl
procesora (cyc). Pierwszy wiersz określa wartość na porcie B przy starcie programu (0x00).
Kolejny wiersz określa wartość portu po 10 cyklach procesora (0xFF), a następny po 14
cyklach (0x00). Dodatkowo ustalamy, Ŝe wartości te bądą zmieniać się cyklicznie co 4 cykle
procesora (Repeat after 4 dec, restart at 10 dec). Tak przygotowany zestaw sygnałów
wejściowych naleŜy zastosować w symulacji poprzez naciśnięcie przycisku Apply. Będzie on
wykorzystany przy następnym uruchomieniu symulacji programu.
Rys. 11. Okno narzędzia Stimulus
Kolejną uŜyteczną funkcją jest moŜliwość dodawania punktów zatrzymania
(breakpoint). Aby dodać punkt zatrzymania naleŜy kliknąć dwukrotnie na wybranej linii lub
kliknąć prawym klawiszem myszy na linii i wybrać polecenie Add Breakpoint z menu
kontekstowego. Linia zostanie oznaczona za pomocą litery B umieszczonej w czerwonym
kole (rys. 12). Aby zaobserwować sposób działania punktu zatrzymania moŜna umieścić go w
linii:
movwf PORTC ; przenieś dane z rejestru W do portu C,
a następnie zresetować procesor i wybrać polecenie Debugger>Run lub odpowiednią ikonę z
paska narzędzi.
9
Rys. X. 12. Wstawianie punktu zatrzymania
Na pasku stanu pojawi się na krótko tekst „Running…”, a następnie program zatrzyma
się w pierwszym napotkanym punkcie zatrzymania. W oknie podglądu moŜna zaobserwować
zmiany zawartości rejestrów PORTB i PORTC (Rys. X.13).
Rys X. 13. Widok okna podglądu
Kolejne wybranie polecenia Run powoduje wykonanie jednej iteracji pętli i
zatrzymanie programu w wyznaczonym przez punkt zatrzymania miejscu.
JeŜeli jest potrzeba dokładnego określenia czasu trwania jakiejś części kodu, moŜna
uŜyć w tym celu narzędzia Stopwatch. Aby to zrobić usuwamy istniejący punkt zatrzymania i
ustawiamy go na linii:
movf PORTB,W ; przenieś dane z portu B do rejestru W
oraz wykonujemy reset procesora.
10
Rys. 14. Okno narzędzia Stopwatch po pierwszym uruchomieniu programu
Następnie z menu wybieramy polecenie Debugger>StopWatch, co spowoduje
pojawienie się okna Stopwatch. Po uruchomieniu programu (Run) widać, Ŝe przy domyślnej
częstotliwości taktowania procesora (20 MHz), czas wykonania programu do pierwszego
punktu zatrzymania wynosi 2,2 mikrosekundy (rys. 14). Po wyzerowaniu czasu przyciskiem
Zero i kolejnym uruchomieniu programu widać, Ŝe jeden przebieg pętli zajmuje 0,8
mikrosekundy (rys. 15). Częstotliwość procesora moŜna zmienić wybierając polecenie
Debugger>Settings.
Rys. 15. Okno narzędzia Stopwatch po drugim uruchomieniu programu
7. Programowanie mikrokontrolera
Kiedy symulacja programu przebiegła poprawnie, moŜna zaprogramować wybrany
wcześniej mikrokontroler za pomocą posiadanego programatora. Aby wybrać programator
naleŜy uŜyć polecenia Programmer>Select Programmer. MoŜna wybrać jeden z kilku
wspieranych przez środowisko MPLAB programatorów:
• MPLAB PM3;
• PRO MATE 2;
• PICSTART Plus,
• PCKit 1, 2, 3;
• MPLAB REAL ICE;
• MPLAB ICD i MPLAB ICD 2.
Przed wybraniem programatora powinien być on podłączony do komputera. Kiedy
programator został wybrany, moŜna zaobserwować następujące zmiany w środowisku
MPLAB:
• Pojawienie się dodatkowych opcji w menu Programmer;
11
Pojawienie się paska narzędzi programatora;
Pojawienie się nazwy programatora w pasku stanu.
Aby zaprogramować mikrokontroler naleŜy najpierw zbudować projekt w trybie
Release. Wcześniej wykorzystywany był tryb Debug, aby umoŜliwić obserwacje symboli w
oknach podglądu. Tryb naleŜy zmienić korzystając z listy rozwijanej Debug/Release
dostępnej na pasku narzędzi okna głównego.
Po zbudowaniu projektu w trybie Release moŜna przystąpić do programowania
mikrokontrolera wykonując następujące czynności:
• Sprawdzić wartości bitów konfiguracyjnych (Configure>Configuration Bits);
• Sprawdzić ustawienia programowania (Programmer>Settings);
• Wybrać z menu polecenie Programmer>Program.
•
•
JeŜeli nie posiadamy programatora wspieranego przez środowisko MPLAB, do
zaprogramowania mikrokontrolera moŜna uŜyć dowolnego innego programatora z własnym
oprogramowaniem wykorzystując do programowania plik z rozszerzeniem *.HEX, który jest
rezultatem kompilacji projektu.
12

Podobne dokumenty