Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania SYSTEMY CZASU RZECZYWISTEGO (SCR) Podstawy programowanie systemów wbudowanych na bazie platformy sprzętowo-programowej ZL9AVR i systemu operacyjnego czasu rzeczywistego NutOS Ćwiczenie Laboratoryjne nr 7 Opracowanie: Tomasz Rutkowski, dr inż. Gdańsk 2014 1/9
Zajęcia laboratoryjne oparte są o następującą platformę sprzętowoprogramową: zestaw uruchomieniowy ZL9AVR: o płyta główna ZL9AVR o moduł ZL7AVR, moduł dipavr z mikrokontrolerem ATmega-128 o moduł ZL1ETH, uniwersalny interfejs Ethernet z kontrolerem RTL8019AS o moduł wyświetlacza alfanumerycznego LCD1602 (2x16 znaków) ze sterownikiem HD44780 programator: o ZL16PRG zgodny z AVR JTAG ICE o lub programator AVRPRG kompatybilny z STK 500 (tryb ISP) komputer PC (host sterujący): o z zainstalowanym środowiskiem Win AVR o z zainstalowanym środowiskiem AVR Studio o z bibliotekami systemu operacyjnego czasu rzeczywistego NutOS przygotowanymi dla zestawu uruchomieniowego ZL9AVR (biblioteki umieszczone są w strukturze katalogów WinAVR) odpowiednio przygotowane pliki Makefile i Sources sterujące kompilacją opracowanych projektów w środowisku AVR Studio (znajdują się w dodatkowym archiwum ZIP z przykładowym projektami do realizacji w trakcie ćwiczeń laboratoryjnych) Uwaga: Przed przystąpieniem do realizacji zadań laboratoryjnych należy: Ze struny internetowej przedmiotu pobrać archiwum ZIP o nazwie _SCR_Lab_07_AVR_Projekty_.zip. Jego zawartość należy rozpakować na ścieżce głównej C:\ komputera PC (host sterujący). Jeżeli taki katalog na ścieżce C:/ już istnieje, to należy go usunąć i dopiero wtedy rozpakować pobrane archiwum ZIP. o W utworzonym katalogu znajdują się: pliki źródłowe projektów pomocniczych, umożliwiających efektywną realizację poszczególnych zadań laboratoryjnych (podkatalog: AVR_projekty ), karty katalogowe platformy sprzętowej wykorzystywanej w trakcie zajęć (podkatalog: Karty_katalogowe_ZL9AVR ) opis systemu operacyjnego Nut/OS v4.2 w postaci zestawu stron HTML, które można przeglądać off-line (podkatalog: NutOs-HTMLhelp ). Podłączyć programator JTAG ICE (ZL1PRG) lub STK 500 (AVRPROG), odpowiednio do zestawu uruchomieniowego ZL9AVR (10-pinowe gniazdo typu kanada na płycie głównej ZL(AVR) lub modułu ZL7AVR (gniazdo ISP modułu dipavr z mikrokontrolerem ATmega-128) i komputera hosta sterującego (USB). Podłączyć do zestawu uruchomieniowego ZL9AVR odpowiedni kabel interfejsu szeregowego (gniazdo UART0 lub UART1) oraz kabel interfejsu ethernetowego (gniazdo RJ45 modułu ZL1ETH). Podłączyć zasilanie zestawu uruchomieniowego ZL9AVR. 2/9
Zadanie 1 Podstawy obsługi interfejsu szeregowego. 1) Zapoznać się z zawartością katalogu scr_zad1 2) Zapoznać się z zawartością pliku Makefile (nie należy modyfikować jego zawartości) 3) Zapoznać się z zawartością pliku Sources (można modyfikować jego zawartość) 4) Otworzyć projekt scr_zad1 dla środowiska AVR Studio (dwukrotnie kliknąć na plik scr_zad1.aps ) 5) Zapoznać się z zawartością pliku scr_zad1.c 6) Ustawić wykorzystanie w środowisku AVR Studio zewnętrznego pliku Makefile (menu: Projekt -> Configuration Options) 7) Upewnić się, że struktura pliku Sources jest odpowiednia dla realizowanego 8) Zbudować projekt 9) Zaprogramować zestaw uruchomieniowy ZL9AVR 10) Uruchomić odpowiednio skonfigurowany monitor portu szeregowego PuTTY (w razie potrzeby dokładnych informacji udzieli prowadzący) 1) Zmodyfikować tak kod źródłowy zadania, by komunikat był wyświetlany w monitorze portu szeregowego w trybie ciągłym, co jedną sekundę. Wskazówka: 1) Wykorzystać funkcję NutSleep(). 3/9
Zadanie 2 Podstawy obsługi wyświetlacza LCD. 1) Zapoznać się z zawartością katalogu scr_zad2 2) Zapoznać się z zawartością pliku Makefile (nie należy modyfikować jego zawartości) 3) Zapoznać się z zawartością pliku Sources (można modyfikować jego zawartość) 4) Otworzyć projekt scr_zad2 dla środowiska AVR Studio (dwukrotnie kliknąć na plik scr_zad1.aps ) 5) Zapoznać się z zawartością pliku scr_zad2.c 6) Zapoznać się z zawartością plików lcd.h i lcd.c 7) Ustawić wykorzystanie w środowisku AVR Studio zewnętrznego pliku Makefile (menu: Projekt -> Configuration Options) 8) Upewnić się, że struktura pliku Sources jest odpowiednia dla realizowanego 9) Zbudować projekt 10) Zaprogramować zestaw uruchomieniowy ZL9AVR 1) Zmodyfikować tak kod źródłowy zadania, by tekst wyświetlany w drugiej linii wyświetlacza LCD zastąpić licznikiem sekund upływających od uruchomienia systemu. Wskazówka: 1) Wykorzystać funkcję ze standardowych bibliotek C, które umożliwiają pracę z łańcuchami znaków, np: strcpy(), strcat(), sprintf(), atoi(). 4/9
Zadanie 3 Podstawy obsługi przycisków i diod (przykładowe wejścia i wyjścia dyskretne użytkownika). 1) Zapoznać się z zawartością katalogu scr_zad3 2) Zapoznać się z zawartością pliku Makefile (nie należy modyfikować jego zawartości) 3) Zapoznać się z zawartością pliku Sources (można modyfikować jego zawartość) 4) Otworzyć projekt scr_zad3 dla środowiska AVR Studio (dwukrotnie kliknąć na plik scr_zad3.aps ) 5) Zapoznać się z zawartością pliku scr_zad3.c 6) Ustawić wykorzystanie w środowisku AVR Studio zewnętrznego pliku Makefile (menu: Projekt -> Configuration Options) 7) Upewnić się, że struktura pliku Sources jest odpowiednia dla realizowanego 8) Zbudować projekt 9) Zaprogramować zestaw uruchomieniowy ZL9AVR 10) Omówić działanie programu 1) Na bazie dokumentacji płyty bazowej ZL9AVR, odpowiedzieć na pytanie do jakich portów i linii I/O mikrokontrolera są podłączone przyciski S2, S3, S4, S5 i diody D1, D2, D3, D4? 2) Zmodyfikować tak kod źródłowy zadania, by była możliwość sygnalizowania przyciśnięcia każdego z przycisków (S2, S3, S4 i S5) zapaloną diodą (odpowiednio D1, D2, D3 i D4). 5/9
Zadanie 4 Podstawy obsługi wątków w Nut/OS. 1) Zapoznać się z zawartością katalogu scr_zad4 2) Zapoznać się z zawartością pliku Makefile (nie należy modyfikować jego zawartości) 3) Zapoznać się z zawartością pliku Sources (można modyfikować jego zawartość) 4) Otworzyć projekt scr_zad4 dla środowiska AVR Studio (dwukrotnie kliknąć na plik scr_zad4.aps ) 5) Zapoznać się z zawartością pliku scr_zad4.c 6) Ustawić wykorzystanie w środowisku AVR Studio zewnętrznego pliku Makefile (menu: Projekt -> Configuration Options) 7) Upewnić się, że struktura pliku Sources jest odpowiednia dla realizowanego 8) Zbudować projekt 9) Zaprogramować zestaw uruchomieniowy ZL9AVR 10) Uruchomić odpowiednio skonfigurowany monitor portu szeregowego PuTTY (w razie potrzeby dokładnych informacji udzieli prowadzący) 1) Zweryfikować wpływ wartości priorytetów oraz czasów uśpienia poszczególnych wątków (łącznie z wątkiem main) na sekwencje ich wykonywania. 6/9
Zadanie 5 Model symulacyjny klasycznego układu sterowania SISO. W analizowanym modelu symulacyjnym wykorzystano model obiektu w postaci transmitancji pierwszego rzędu (równanie różnicowe na podstawie przyrostów lewostronnych) oraz dyskretny regulator PID w wersji pozycyjnej. 1) Zapoznać się z zawartością katalogu scr_zad5 2) Zapoznać się z zawartością pliku Makefile 3) Zapoznać się z zawartością pliku Sources 4) Otworzyć projekt scr_zad5 dla środowiska AVR Studio 5) Zapoznać się z zawartością pliku scr_zad5.c 6) Ustawić wykorzystanie w środowisku AVR Studio zewnętrznego pliku Makefile 7) Upewnić się, że struktura pliku Sources jest odpowiednia dla realizowanego 8) Zbudować projekt 9) Zaprogramować zestaw uruchomieniowy ZL9AVR 10) Uruchomić odpowiednio skonfigurowany monitor portu szeregowego PuTTY Uwaga: Należy zwrócić uwagę na typ danych poszczególnych zmiennych modelu symulacyjnego. 1) Czy w przypadku wykorzystanego typu danych (int) kolejność wykonywania poszczególnych operacji arytmetycznych będzie miała znaczenie? 2) Bazując na doświadczeniu z Zadań 1-4, zweryfikować program bazowy zapisany w pliku scr_zad5.c tak aby w osobnych wątkach realizować następujące zadania: a. zmiany wartości wielkości zadanej za pomocą dwóch przycisków użytkownika S2 i S3, odpowiednio przyciśnięcie przez użytkownika przycisku S2 powinno zwiększyć a przycisku S3 zmniejszyć wartość wielkości zadanej, b. obsługi wyświetlacza LCD, c. obsługi komunikacji przez port szeregowy, d. realizacji modelu symulacyjnego układu sterowania. 3) Rozwinąć poprzedni podpunkt o wielowątkową realizację kodu algorytmu regulatora PID. Wskazówka: 1) Można wykorzystać zmienne globalne. 7/9
Zadanie 6 Prosty serwer http. 1) Zapoznać się z zawartością katalogu scr_zad6 2) Zapoznać się z zawartością pliku Makefile 3) Zapoznać się z zawartością pliku Sources 4) Otworzyć projekt scr_zad6 dla środowiska AVR Studio 5) Zapoznać się z zawartością pliku scr_zad6.c 6) Zapoznać się z zawartością podkatalogu stronawww 7) Ustawić wykorzystanie w środowisku AVR Studio zewnętrznego pliku Makefile 8) Upewnić się, że struktura pliku Sources jest odpowiednia dla realizowanego 9) Zbudować projekt 10) Zaprogramować zestaw uruchomieniowy ZL9AVR Zadanie dodatkowe: 1) Zmodyfikować projekt serwera http w taki sposób, aby uruchomiony na nim serwis internetowy składał się z kilku powiązanych ze sobą dokumentów *html (proste menu z odsyłaczami względnymi). 8/9
Zadanie 7 Rozbudowany serwer http. 1) Zapoznać się z zawartością katalogu scr_zad7 2) Zapoznać się z zawartością pliku Makefile 3) Zapoznać się z zawartością pliku Sources 4) Otworzyć projekt scr_zad7 dla środowiska AVR Studio 5) Zapoznać się z zawartością pliku scr_zad7.c 6) Zapoznać się z zawartością podkatalogu stronawww 7) Ustawić wykorzystanie w środowisku AVR Studio zewnętrznego pliku Makefile 8) Upewnić się, że struktura pliku Sources jest odpowiednia dla realizowanego 9) Zbudować projekt 10) Zaprogramować zestaw uruchomieniowy ZL9AVR 9/9