Systemy czasu rzeczywistego

Wielkość: px
Rozpocząć pokaz od strony:

Download "Systemy czasu rzeczywistego"

Transkrypt

1 Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki Instrukcje do zajęć laboratoryjnych Laboratorium z przedmiotu: Systemy czasu rzeczywistego Kod: ES2C Elektrotechnika studia stacjonarne II stopnia, sem. I specjalność Automatyka Przemysłowa i Technika Mikroprocesorowa Opracował dr inż. Rafał Kociszewski Białystok 2017

2 Program szczegółowy laboratorium 30 godz. Zajęcia organizacyjne. Cz. 1 system Ethernut (Nut/OS) 1. Zapoznanie z zestawem uruchomieniowym z mikrokontrolerem ATmega128. 2h 2. Obsługa wybranych bloków peryferyjnych mikrokontrolera ATmega128 z wykorzystaniem systemu Ethernut. 3. Tworzenie i uruchamianie wątków w systemie Ethernut. 4h 4. Implementacja protokołu Telnet. 4h 5. Implementacja komunikacji sieciowej TCP. 4h Termin zaliczeniowy 1. Cz. 2 system QNX 6. Podstawy obsługi systemu QNX. 2h 7. Zarządzanie procesami i wątkami w systemie QNX. 4h 8. Komunikacja w systemie QNX. 4h Termin zaliczeniowy 2. 1h 2h 1h 2h Literatura 1. Bennett S.: Real-time computer control: an introduction, Prentice-Hall, New York Cormen T.H. (i in.): Wprowadzenie do algorytmów, WNT Warszawa Sacha K.: Systemy Czasu Rzeczywistego, Oficyna Wydawnicza Politechniki Warszawskiej, Warszawa Mazur Z. (red.): Modele i zastosowania systemów czasu rzeczywistego. WKiŁ, Warszawa Mielczarek W.: Szeregowe interfejsy cyfrowe. Helion Parker T.: TCP/IP: księga eksperta, Helion, Gliwice Pełka R.: Mikrokontrolery: architektura, programowanie, zastosowania, WKiŁ, Warszawa Prata S.: Język C. Szkoła programowania. Wyd. Helion, Gliwice Silberschatz A., Galvin P.B., Gagne G. Podstawy systemów operacyjnych, WNT, Warszawa Sokół R.: Tworzenie stron WWW: kurs. Helion, Gliwice Szymczyk P.: Systemy operacyjne czasu rzeczywistego. AGH, Uczelniane Wydawnictwa Naukowo-Dydaktyczne, Kraków Ułasiewicz J.: System czasu rzeczywistego QNX6 Neutrino. Wydawnictwo BTC, Warszawa, ATmega128 (dokumentacja techniczna: QNX Neutrino System Architecture (dokument elektroniczny do wersji RTL8019AS (dokumentacja techniczna: ZL7AVR - dipatmega128 moduł z mikrokontrolerem ATmega128 (dokumentacja producenta: ZL9AVR - płyta bazowa dla modułów ZL7AVR (dokumentacja producenta: Zl1ETH - interfejs LAN z układem RTL8019AS (dokumentacja producenta: 2

3 INSTRUKCJA STANOWISKOWA BHP Wydział Elektryczny Katedra Automatyki i Elektroniki Dotyczy zasad użytkowania stanowiska do ćwiczeń laboratoryjnych z zakresu systemów czasu rzeczywistego. Dotyczy zasad użytkowania następujących urządzeń: 1. Oscyloskop cyfrowy Tektronix Aby uniknąć obrażeń, porażenia prądem elektrycznym lub uszkodzenia użytkowanych urządzeń, zaleca się uważne przeczytanie i przestrzeganie poniższych uwag eksploatacyjnych z zakresu bezpieczeństwa pracy. Użytkowanie - Urządzenia lub stanowiska powinno być zgodne z jego instrukcją obsługi oraz odrębnymi instrukcjami obsługi elementów składowych jeżeli takie występują. - Wszelkie czynności serwisowe (naprawy, regulacje, wymiany bezpieczników, itp.) powinny być wykonywane jedynie przez odpowiednio wykwalifikowane osoby. Przed przystąpieniem do pracy na stanowisku należy: - Zapoznać się z instrukcją obsługi użytkowanych urządzeń. - Zapewnić poprawne uziemienie przyrządu, realizowane przez przewód ochronny kabla sieciowego podłączony do sprawnego gniazdka sieciowego z kołkiem uziemiającym. - Używać właściwego kabla sieciowego zaprojektowanego dla urządzenia i spełniający odpowiednie normy krajowe. - Przed wykonaniem jakichkolwiek połączeń wyjść i wejść urządzenia należy upewnić się, że urządzenie jest prawidłowo uziemione. - Zapewnić wymagane chłodzenie przyrządu poprzez prawidłowy obieg powietrza chłodzącego przyrząd. - Aby uniknąć ryzyka pożaru lub porażenia prądem, należy zwracać uwagę na wszelkie ostrzeżenia na obudowie przyrządu i nie przekraczać podanych w instrukcji i na obudowie maksymalnych dopuszczalnych wartości napięcia i prądu w gniazdach urządzenia. Podczas pracy na stanowisku laboratoryjnym należy: - Zachować ład i porządek. - Przyrządy powinny być tak ustawione, aby nie mogły spaść. - Wykonywać połączenia tak, aby nie zagrażały użytkownikom stanowiska. - Należy unikać połączeń przewodami zwisającymi lub mogącymi leżeć na podłodze. - Prawidłowo podłączać i odłączać kable pomiarowe. - Nie należy podłączać lub odłączać sond i przewodów pomiarowych, gdy znajdują się one pod napięciem. - Nie pracować ze zdjętymi elementami obudowy lub zdemontowanymi panelami. - Nie dotykać metalowych elementów obwodu (gniazd, styków, podzespołów, nieizolowanych przewodów mogących znaleźć się pod napięciem, itp.), gdy włączone jest zasilanie urządzenia. - Jeżeli zachodzi podejrzenie uszkodzenia urządzenia lub jego nieprawidłowej pracy, należy wyłączyć zasilanie i fakt ten zgłosić osobie prowadzącej zajęcia. Przed 3

4 przystąpieniem do dalszej pracy urządzenie takie powinno być sprawdzone przez odpowiednio wykwalifikowaną osobę. - Nie używać przyrządu w miejscach o dużej wilgotności, w atmosferze zawierającej gazy wybuchowe i agresywne korozyjnie. - Dbać, aby powierzchnia przyrządu była zawsze czysta i sucha. Po skończeniu pracy na stanowisku należy: - Wyłączyć urządzenia zasilane energią elektryczną. - Uporządkować stanowisko. Czynności zabronione: - Używanie urządzeń niezgodnie z ich przeznaczeniem i instrukcją obsługi. - Łączenie elektrycznych obwodów pomiarowych znajdujących się pod napięciem. - Samowolne otwieranie obudów i naprawianie urządzeń zasilanych energią elektryczną. Pierwsza pomoc: - W przypadku porażenia prądem elektrycznym należy uwolnić osobę porażoną spod działania prądu elektrycznego przez natychmiastowe wyłączenie napięcia za pomocą przycisku bezpieczeństwa na tablicy zasilającej. - Udzielić pomocy przedlekarskiej osobom poszkodowanym. Przy nieszczęśliwych wypadkach należy bezzwłocznie wezwać Pogotowie Ratunkowe (tel. 999, kom. 112). W przypadku pożaru: - Odłączyć zasilanie urządzeń, rozpocząć ewakuację ludzi z zagrożonego obszaru. - Gasić urządzenia dostępnymi środkami ochrony p.poż., a w koniecznym przypadku wezwać Straż Pożarną (tel. 998, kom. 112). Instrukcja przygotowana na podstawie dokumentacji technicznych ww. urządzeń. 4

5 Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki Instrukcja do zajęć laboratoryjnych Numer ćwiczenia: 1 Temat: Zapoznanie z zestawem uruchomieniowym z mikrokontrolerem ATmega128 Laboratorium z przedmiotu: Systemy czasu rzeczywistego Kod: ES2C Elektrotechnika studia stacjonarne II stopnia, sem. I specjalność Automatyka Przemysłowa i Technika Mikroprocesorowa Opracował dr inż. Rafał Kociszewski Białystok

6 1. Cel ćwiczenia Zapoznanie się z zestawem uruchomieniowym z mikrokontrolerem ATmega128. Programowa obsługa wybranych modułów peryferyjnych zaimplementowanych w mikrokontrolerze ATmega Wprowadzenie Zestaw uruchomieniowy stosowany podczas pierwszej części zajęć laboratoryjnych składa się z płytki bazowej ZL9AVR, modułu ZL7AVR zawierającego 8-bitowy mikrokontroler ATmega128 oraz modułu ZL1ETH stanowiącego interfejs LAN. Moduły wraz z płytką bazową stanowią integralną platformę sprzętową służącą do tworzenia i weryfikacji aplikacji na mikrokontroler ATmega128 pracujących pod kontrolą systemu czasu rzeczywistego Ethernut (Nut/OS). Rys. 1. Wygląd płyty bazowej ZL9AVR (źródło: a) b) c) Rys. 2. Moduł z mikrokontrolerem Atmega128 a), interfejs LAN b), wyświetlacz LCD c) (źródło: 6

7 Podstawowe parametry płytki ZL9AVR: gniazdo do dołączenia modułu dipavr z mikrokontrolerem ATmega128, gniazdo do dołączenia modułu interfejsu sieci 10Base-T z układem RTL8019AS, gniazdo do dołączenia konwertera UART/USB, pamięć SRAM o pojemności 32kB, 2 interfejsy RS232, głośnik piezoelektryczny, gniazdo alfanumerycznego wyświetlacza LCD o organizacji 2x16 znaków, 8 diod LED, 4 mikroprzełączniki, złącze JTAG, złącza szpilkowe dla linii I/O, napięcie zasilania VDC. Podstawowe parametry modułu dipatmega128: mikrokontroler ATmega128, pamięć programu (ISP): 128 kb, pamięć danych EEPROM: 4 kb, pamięć danych SRAM: 4 kb, częstotliwość taktowania: 16 MHz, wbudowany separator linii ISP (z automatycznym sterowaniem), złącze do programowania Kanda ISP wbudowany generator sygnału zerującego, możliwość zastosowania zewnętrznego źródła napięcia referencyjnego dla przetwornika A/C, liczba linii I/O: 53, zasilanie: 4,5...5,5 V/100 ma (maks.) Podstawowe parametry płytki ZL1ETH: kontroler RTL8019AS, sprzętowa zgodność z systemem Ethernut, złącze RJ-45 (Ethernet 10Base-T), 3 diody LED (Link, Rx, Tx), nieulotna pamięć konfiguracji kontrolera (EEPROM), 8-bitowa magistrala danych, wyprowadzenia modułu z rastrem 0,1 (2,54 mm), napięcie zasilania modułu 5 VDC. 7

8 3. Stanowisko laboratoryjne Komputer PC z zainstalowanym środowiskiem programowym AVR Studio 4. Zestaw uruchomieniowy ZL9AVR z modułami rozszerzeniowymi. 4. Przebieg ćwiczenia Przed ćwiczeniem: - korzystając z noty aplikacyjnej mikrokontrolera ATmega128 (dokument doc2467.pdf) należy zapoznać się z walorami użytkowymi mikrokontrolera, - należy zapoznać się ze schematem ideowym płytki ZL9AVR oraz modułu ZL7AVR - należy przypomnieć: zasady tworzenia projektów w środowisku AVR Studio 4; podstawy programowania w języku C; zasady tworzenia algorytmów (schematów blokowych - sieci działań). Ćwiczenie jest planowane jako 2-godzinne i obejmuje: Zapoznanie się z metodyką programowania mikrokontrolerów rodziny AVR w języku wysokiego poziomu w środowisku AVR Studio 4. Przygotowanie programów obsługujących porty I/O mikrokontrolera ATmega128. Szczegóły odnośnie programów ustala prowadzący ćwiczenie. Wynikiem pracy grupy laboratoryjnej są programy na mikrokontroler ATmega128. Wnioski i spostrzeżenia jakie nasunęły się podczas wykonywania ćwiczenia należy zamieścić w sprawozdaniu. 5. Wymagania BHP Warunkiem przystąpienia do realizacji ćwiczenia jest zapoznanie się z obowiązującą w laboratorium instrukcją BHP oraz przestrzeganie zasad w niej zawartych. Konieczne jest także zapoznanie z ogólnymi zasadami pracy przy stanowisku komputerowym. Instrukcje BHP powinny być podane studentom podczas pierwszych zajęć laboratoryjnych i dostępne do wglądu w laboratorium. Tekst instrukcji stanowiskowej obowiązującej w Laboratorium został umieszczony na początku niniejszego opracowania. 6. Sprawozdanie studenckie Sprawozdanie powinno zawierać: cel i zakres ćwiczenia, opis stanowiska badawczego, opis przebiegu ćwiczenia z wyszczególnieniem wykonywanych czynności, algorytm oraz listing opracowanego programu merytoryczne komentarze i wnioski 8

9 Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki Instrukcja do zajęć laboratoryjnych Numer ćwiczenia: 2 Temat: Obsługa wybranych bloków peryferyjnych mikrokontrolera ATmega128 z wykorzystaniem systemu Ethernut Laboratorium z przedmiotu: Systemy czasu rzeczywistego Kod: ES2C Elektrotechnika studia stacjonarne II stopnia, sem. I specjalność Automatyka Przemysłowa i Technika Mikroprocesorowa Opracował dr inż. Rafał Kociszewski Białystok

10 1. Cel ćwiczenia Zapoznanie się z wykorzystaniem systemu czasu rzeczywistego Ethernut do tworzeniem aplikacji obsługujących wybrane bloki peryferyjne mikrokontrolera ATmega Wprowadzenie 2.1. System czasu rzeczywistego Ethernut Ethernut (Nut/OS) to wielowątkowy system operacyjny czasu rzeczywistego (RTOS). Kod źródłowy systemu jest objęty licencją BSD (Berkeley Software Distribution), co umożliwia tworzenie komercyjnych aplikacji, nawet o zamkniętym kodzie źródłowym. System jest dostępny dla kilku platform sprzętowych i obsługuje dużą liczbę urządzeń peryferyjnych. Nut/OS napisano w języku C z niewielką liczbą wstawek asemblerowych. Podstawowe cechy sytemu: wielowątkowość z podziałem czasu procesora, priorytety wątków, zarządzanie pamięcią, dynamiczna alokacja RAM, komunikacja międzyprocesowa obsługa systemów plików (UROM i FAT), sterowniki urządzeń, timery (jednorazowe, okresowe), wysokopoziomowa obsługa przerwań. System operacyjny Nut/OS posiada rozszerzony interfejs do obsługi urządzeń peryferyjnych, dzięki któremu komunikacja z nimi odbywa się za pośrednictwem zawartych w systemie sterowników. Dostępne sterowniki: kontrolery Ethernet - LAN91C111, RTL8019AS, CS8900, DM9000; porty szeregowe; magistrala 1-Wire, SPI, I2C; wyświetlacz LCD (zgodny z HD44780); zegar czasu rzeczywistego (RTC); pamięć DataFlash. Wymienione wyżej cechy stanowią minimalną funkcjonalność jądra systemu niezbędną do uruchomienia istotnego elementu - stosu TCP/IP (Nut/Net) o następujących właściwościach: obsługa protokołów: ARP, IP, TCP, UDP, ICMP; obsługa DNS, HTTP; gniazda API; sterownik Ethernet obsługiwany z przerwania; autokonfiguracja interfejsu sieciowego z wykorzystaniem DHCP; zarządzanie tablicami routingu; możliwość łączenia się z Internetem za pomocą protokołu PPP (modem); dynamiczne generowanie WWW, skrypty CGI, autoryzacja użytkowników. Jądro systemu oraz stos TCP/IP wraz z zaimplementowanymi protokołami DHCP, UDP, ICMP, SMTP oraz HTTP z prostymi skryptami CGI skompilowano do bibliotek, które wraz ze specjalnym kodem startowym są dołączane do programu użytkownika. 10

11 Podstawowe biblioteki nutinit.o kod startowy systemu, uruchamiany po zerowaniu mikrokontrolera. Jego główne zadania to inicjalizacja peryferiów mikrokontrolera (m.in. zewnętrznej pamięci RAM), ustawienie stosu, uruchomienie zarządzania wątkami. Po wykonaniu powyższych czynności, kod startowy przechodzi do funkcji main() programu użytkownika. libnutarch.a funkcje specyficzne dla używanej platformy sprzętowej (np. przełączanie kontekstu mikrokontrolera) oraz sterowniki urządzeń przeznaczone wyłącznie dla konkretnej architektury (np. UART wbudowany w mikrokontroler, kontroler Ethernet RTL8019). libnutdev.a pozostałe sterowniki urządzeń. libnutfs.a funkcje obsługi systemów plików UROM i FAT. libnutcrt.a niewielka wersja standardowej biblioteki języka C. Zawiera takie funkcje jak printf(), malloc(), fopen() itd. libnutos.a zarządzanie wątkami, obsługa komunikacji międzyprocesowej oraz funkcje dynamicznej alokacji pamięci. libnutnet.a stos TCP/IP, funkcje obsługi gniazd sieciowych (tzw. socketów). libnutpro.a obsługa popularnych protokołów sieciowych: DNS, DHCP (automatyczna konfiguracja sieci), HTTP, FTP. Dołączenie kodu startowego oraz bibliotek: nutarch, nutos, nutdev i nutcrt jest konieczne do prawidłowej kompilacji programów, natomiast biblioteki sieciowe (nutnet i nutpro) oraz systemu plików (nutfs) są opcjonalne. Aplikacje dla systemu Nut/OS można kompilować w środowisku AVR Studio. Oprócz utworzonego projektu, zawierającego niezbędne pliki z funkcją główną oraz nagłówkowe, należy pamiętać o dodaniu zewnętrznego pliku Makefile Rys.1. Przygotowanie do kompilacji projektu z użyciem pliku Makefile 11

12 oraz o modyfikacji pliku Sources w następujący sposób: w linii SOURCES należy umieścić listę plików źródłowych projektu, w linii OUTPUT należy wpisać nazwę projektu, która musi być dokładnie taka sama jak nazwa w AVR Studio, w linii MY_CFLAGS należy podać dodatkowe opcje dla kompilatora GCC (np. tryb optymalizacji, dodatkowe ścieżki poszukiwania plików nagłówkowych, itp.), w linii LIBS należy podać biblioteki, które będą dołączone do programu (także biblioteki Nut/OS), w linii CRUROM_DIR można ustawić ścieżkę do katalogu, którego zawartość znajdzie się w pamięci Flash mikrokontrolera (np. wbudowanej w urządzenie strony WWW) Moduł transmisji szeregowej USART Mikrokontroler ATmega128 zawiera szereg bloków peryferyjnych ułatwiających konstruktorowi tworzenie systemów cyfrowych bazujących na tym układzie. Wejścia lub wyjścia poszczególnych modułów są dostępne jako funkcje alternatywne na poszczególnych pinach portów. Podczas zajęć laboratoryjnych będzie wykorzystywany moduł komunikacji szeregowej USART oraz przetwornik analogowo-cyfrowy ADC. Oprogramowanie tych modułów będzie realizowane z poziomu systemu Nut/OS. W celu zobrazowania problematyki programowania wspomnianych bloków zostaną zaprezentowane przykłady ich inicjalizacji za pomocą standardowych funkcji bez użycia systemu oraz z użyciem systemu Nut/OS. Komunikacja z wykorzystaniem interfejsu szeregowego RS-232 jest popularnym sposobem wymiany danych pomiędzy układami bazującymi na mikrokontrolerze a komputerem PC. Zaletą jest łatwość obsługi portu szeregowego COM w systemie Windows. W rozwiązaniach przemysłowych z powodu pewnych ograniczeń wynikających z założeń RS-232 stosuje się interfejsy RS-422 lub RS-485. Szczególnie ten drugi zyskał popularność dzięki transmisji różnicowej pozwalającej na przesył danych na dużo większe odległości niż RS-232. Jeżeli łączymy mikrokontroler z komputerem PC za pomocą łącza szeregowego musimy pamiętać o dopasowaniu poziomów. Najpopularniejszym układem do tego rodzaju konwersji jest MAX232 (zasilanie TTL), którego podstawowy schemat aplikacyjny, zgodny jego notą jest pokazany na rysunku 2. Rys. 2. Połączenie komputera PC z mikrokontrolerem (Tx, Rx) za pośrednictwem MAX232 12

13 Mikrokontroler ATmega128 posiada dwa interfejsy szeregowe USART (Universal Synchronous and Asynchronous Receiver and Transmitter), dostępne na porcie E oraz D: USART0 PE0, PE1; USART1 PD2, PD3. Struktura wewnętrzna modułu jest przedstawiona na poniższym rysunku. Rys.3. Struktura wewnętrzna modułu USART występującą w mikrokontrolerach rodziny ATmega Cechy USART w ATmega128: transmisja full duplex (w obydwie strony), operacje synchroniczne i asynchroniczne, tryb master / slave, różne prędkości nadawania / odbierania, ramki danych: 5,6, 7, 8, 9-bitowe z 1 lub 2 bitem stopu, sprawdzenie parzystości, nieparzystości, filtracja szumów i zakłóceń, detekcje błędów. 13

14 Inicjalizacja modułu Dokonywana przed użyciem modułu. Pozwala określić parametry transmisji: prędkość (baud rate), format ramki danych. W przedstawionej funkcji wykorzystano najczęściej stosowany format, tj. 8 bitów danych, 1 bit stopu, brak parzystości. Prędkość transmisji ubrr przekazywana jest przed funkcją główną jako parametr, np. w poniższy sposób:... #define UART0_BAUD 9600 #define UART0_UBRR F_CPU / 16 / UART0_BAUD - 1 uart0_init(uart0_ubrr);... void uart0_init(unsigned int ubrr) { // predkosc transmisji UBRR0H = (uint8_t)(ubrr >> 8); UBRR0L = (uint8_t)ubrr; // wlaczenie nadajnika i odbiornika UCSR0B = (1 << RXEN0) (1 << TXEN0); } // ramka: 8 bitów danych, 1 bit stopu, brak parzystości UCSR0C = (1 << UCSZ00) (1 << UCSZ01); Wysyłanie danych Nadajnik jest uruchamiany poprzez ustawienie bitu TXEN0 w rejestrze UCSR0B. W momencie gdy jest on aktywny, operacje na porcie TxD są zablokowane. Transmisja danych rozpoczyna się od załadowania danych do bufora - rejestru UDR0. Funkcja wysyłająca bajt danych opiera się na oczekiwaniu na zakończenie nadawania (sprawdzanie czy bit UDRE0 jest wyzerowany), a następnie wpisaniu danej do wysłania do rejestru UDR0. void uart0_putc(unsigned char data) { // oczekiwanie na zakończenie nadawania while (!(UCSR0A & (1 << UDRE0))); } // wyslanie danych UDR0 = data; void uart0_puts(const char *s) { while (*s) uart_putc(*s++); //wysyla ciag znakow } Odbieranie danych Nadajnik jest uruchamiany poprzez ustawienie bitu RXEN0 w rejestrze UCSR0B. W momencie gdy jest on aktywny, operacje na porcie RxD są zablokowane. Funkcja odbierająca dane polega na oczekiwaniu na pojawienie się danych w buforze, a następnie na odczytaniu ich z rejestru UDR0. Ten sam rejestr jest wykorzystywany podczas wysyłania 14

15 danych. Fizycznie są to dwa niezależne rejestry i nie zachodzi konflikt w przypadku używania funkcji zapisu lub odbierania danych. unsigned char uart0_get(void) { // zaczekaj na dane w buforze while (UCSR0A & (1 << RXC0)); } //zwroc dane znajdujace sie w buforze return UDR0; unsigned char uart0_getc(void) { while(!uart0_get()); } return UDR0; Realizacja transmisji szeregowej w systemie Nut/OS wykorzystująca moduł USART mikrokontrolera ATmega128 nie wymaga stosowania podanych wcześniej procedur. W tym celu wykorzystuje się podane niżej funkcje. NutRegisterDevice(&DEV_DEBUG, 0, 0); // NutRegisterDevice(&DEV_UART0, 0, 0); /* * Kazde uzadzenie w systemie NutOS musi byc zarejestrowane i zainicjowane * jest to wskaznik do struktury opisujacej sterownik urzadzenia. * Odpowiada za to funkcja: NutRegisterDevice. * Struktura DEV_DEBUG odpowiada za UART0 * UART0 jest wbudowany w ATmega128 - dwa pozostałe parametry funkcji * NutRegisterDevice sa ustawione na 0. */ freopen(dev_debug_name, "w", stdout); /* * Po zarejestrowaniu urzadzenia mozna przekierowac standardowy * strumien wyjsciowy (stdout) do portu szeregowego UART0 (plik DEV_DEBUG_NAME) * w trybie do zapisu "w". Poszczegolne urzadzenia, tak jak w systemie Unix sa * widziane jak pliki */ _ioctl(_fileno(stdout), UART_SETSPEED, &baudrate); /* * Funkcja niskiego poziomu _ioctl sluzy do ustawienia predkosci przesylania * danych przez port szeregowy. Aby uzyskac numer deskryptora pliku urzadzenia * wykorzystana jest funkcja _fileno odwolujaca sie do standardowego wyjscia. */ 15

16 Przykładowe programy #include <dev/board.h> #include <io.h> #include <sys/timer.h> int main(void) { DDRF = 0xFF; NutRegisterDevice(&DEV_DEBUG, 0, 0); // odwolanie do funkcji NutSleep(500) w celu wygenerowania opoznienia // o wartosci ok. 0,5 sek. w systemie Nut/OS wymaga zarejestrowania UART // mimo, ze nie jest on wykorzystywany } PORTF = (1<<PF7); NutSleep(500); PORTF &=~ (1<<PF7); NutSleep(500); for(;;); #include <dev/board.h> #include <io.h> #include <sys/version.h> #include <stdio.h> int main(void) { long baud = 19200; NutRegisterDevice(&DEV_DEBUG, 0, 0); freopen(dev_debug_name, "w", stdout); _ioctl(_fileno(stdout), UART_SETSPEED, &baud); printf("wersja Ethernut: %s\n", NutVersionString()); for(;;); } 2.2. Przetwornik ADC Każdy współczesny mikrokontroler posiada wbudowany przetwornik analogowo - cyfrowy. Obecność przetwornika pozwala na pomiar napięć, które często reprezentują wartość określonej wielkości mierzonej przez czujniki z wyjściem analogowym. Przykładem może być czujnik temperatury LM35, akcelerometr ADXL335 czy czujnik odległości GP2Y0A21YK0F. Stosowane w mikrokontrolerach przetworniki wykorzystujące metodę sukcesywnej aproksymacji lub sigma-delta. Cechy przetwornika analogowo-cyfrowego zaimplementowanego w ATmega128: rozdzielczość: 10 bitów, nieliniowość charakterystyki przetwarzania: 0.5 LSB, całkowita dokładność ±2 LSB, czas konwersji: µs, liczba multipleksowanych pojedynczych wejść: 8, zakres pomiaru napięcia: 0... VCC, przerwanie od zakończenia konwersji napięcia na postać cyfrową. 16

17 Przetwornik ADC podłączony jest do 8-kanałowego analogowego multipleksera, którego wejścia podłączone są do portu F. Rys. 4. Wejścia przetwornika oraz sposób filtracji jego napięcia zasilającego Rys. 5. Struktura bloku przetwornika ADC Przetwornik posiada wewnętrznie odseparowany obwód. Źródłem napięcia odniesienia może być źródło wewnętrzne o wartości 2.56V lub napięcie Vcc - zasilające mikrokontroler. Warto pamiętać, że im niższa wartość napięcia referencyjnego tym możemy przeprowadzić dokładniejszy pomiar. Wartość wskazana przez ADC w postaci 0x000 to wartość poziomu masy (GND), zaś wartość 0x3FF (1024) jest wartością napięcia referencyjnego minus 1 najmniej znaczący bit. Przetwornik konwertuje napięcie podane na dowolne wejście ADC0...ADC7 na 10- bitową wartość cyfrową. Minimalne i maksymalne wartości napięć zostały podane wyżej. Opcjonalnie AVCC oraz wewnętrzne źródło odniesienia 2.56V mogą być podłączone do AREF poprzez zapis bitu REFSn w rejestrze ADMUX. Dane wejście analogowe jest 17

18 wybierane poprzez zapis bitów MUX w tym samym rejestrze. Przetwornik aktywowany jest poprzez ustawienie bitu ADEN w rejestrze ADCSRA. Ustawienie napięcia odniesienia oraz kanału wejściowego nie odniesie skutku dopóki ADEN nie zostanie ustawiony. Przetwornik generuje 10-bitowy wynik, który przechowywany jest w rejestrach ADCH i ADCL. Domyślnie wynik prezentowany jest ze skorygowaniem do prawej (wyrównanie do prawej), ale można to zmienić ustawiając korygowanie do lewej za pomocą bitu ADLAR w rejestrze ADMUX. Przetwornik posiada własne przerwanie, które wyzwalane jest po zakończeniu przetwarzania. Konwersja rozpoczyna się w momencie ustawienia bitu ADSC. Bit ten pozostaje ustawiony do chwili zakończenia konwersji. Następnie jest on automatycznie zerowany. Jeżeli podczas konwersji zostanie wybrany inny kanał, wówczas przetwornik skończy bieżącą konwersje przed zmianą kanału. Aby uzyskać maksymalną rozdzielczość pomiaru wejściowy zegar powinien pracować z częstotliwością w zakresie kHz. W przypadku mniejszej rozdzielczości można zwiększyć częstotliwość taktowania powyżej 200kHz. Blok przetwornika zawiera preskaler, który generuje odpowiedni sygnał zegarowy. Preskaler ustawiany jest poprzez wybór bitu ADPS w rejestrze ADCSRA i zaczyna zliczać od momentu kiedy przetwornik zostaje załączony (bit ADEN w rejestrze ADCSRA). Po konwersji pomiaru (ustawiony bit ADIF), jak wspomniano wyżej wynik zostaje zapisany w rejestrach ADCL oraz ADCH. Zależności wiążące wynik przetwarzania z rozdzielczością przetwornika oraz napięciem odniesienia są następujące: VIN 1024 VREF 1024 ADC =, VIN = V ADC REF Realizacja aplikacji woltomierza cyfrowego wykorzystującego przetwornik ADC (kanał ADC0) w trybie odpytywania w systemie Nut/OS jest następująca: #include <dev/board.h> #include <dev/adc.h> #include <cfg/os.h> #include <cfg/crt.h> #include <stdio.h> #include <string.h> #include <io.h> #include <sys/timer.h> int main(void) { long baud = 19200; int adc_value = 0; NutRegisterDevice(&DEV_DEBUG, 0, 0); freopen(dev_debug_name, "w", stdout); _ioctl(_fileno(stdout), UART_SETSPEED, &baud); ADCInit(); } while(1) { ADCStartConversion(); while (ADCRead(&adc_value)) { NutThreadYield(); } printf(" %d\n", adc_value); NutSleep(500); } 18

19 3. Stanowisko laboratoryjne Komputer PC z zainstalowanym środowiskiem programowym AVR Studio 4. Zestaw uruchomieniowy ZL9AVR z modułami rozszerzeniowymi. Oscyloskop cyfrowy. 4. Przebieg ćwiczenia Przed ćwiczeniem: - korzystając z noty aplikacyjnej mikrokontrolera ATmega128 (dokument doc2467.pdf) należy zapoznać się z budową modułu USART oraz ADC, - należy przypomnieć zasady transmisji szeregowej w standardzie RS-232 oraz ogólną zasadę działania przetwornika analogowo-cyfrowego. Ćwiczenie jest planowane jako 2-godzinne i obejmuje: Zapoznanie się z metodyką programowania mikrokontrolerów rodziny AVR działających pod kontrolą systemu Ethernut. Przygotowanie programów obsługujących moduł USART oraz ADC* zaimplementowane w mikrokontrolerze ATmega128 z wykorzystaniem systemu Ethernut. *również bez Nut/OS Szczegóły odnośnie programów ustala prowadzący ćwiczenie. Wynikiem pracy grupy laboratoryjnej są programy na mikrokontroler ATmega128. Wnioski i spostrzeżenia jakie nasunęły się podczas wykonywania ćwiczenia należy zamieścić w sprawozdaniu. 5. Wymagania BHP Warunkiem przystąpienia do realizacji ćwiczenia jest zapoznanie się z obowiązującą w laboratorium instrukcją BHP oraz przestrzeganie zasad w niej zawartych. Konieczne jest także zapoznanie z ogólnymi zasadami pracy przy stanowisku komputerowym. Instrukcje BHP powinny być podane studentom podczas pierwszych zajęć laboratoryjnych i dostępne do wglądu w laboratorium. Tekst instrukcji stanowiskowej obowiązującej w Laboratorium został umieszczony na początku niniejszego opracowania. 6. Sprawozdanie studenckie Sprawozdanie powinno zawierać: cel i zakres ćwiczenia, opis stanowiska badawczego, opis przebiegu ćwiczenia z wyszczególnieniem wykonywanych czynności, algorytm oraz listing opracowanego programu merytoryczne komentarze i wnioski 19

20 Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki Instrukcja do zajęć laboratoryjnych Numer ćwiczenia: 3 Temat: Tworzenie i uruchamianie wątków w systemie Ethernut Laboratorium z przedmiotu: Systemy czasu rzeczywistego Kod: ES2C Elektrotechnika studia stacjonarne II stopnia, sem. I specjalność Automatyka Przemysłowa i Technika Mikroprocesorowa Opracował dr inż. Rafał Kociszewski Białystok

21 1. Cel ćwiczenia Zapoznanie się z ideą funkcjonowania wątków w systemach czasu rzeczywistego. Zapoznanie się ze sposobem programowego tworzenia wątków w systemie Ethernut. 2. Wprowadzenie W wielu aplikacjach pracujących pod kontrolą systemu operacyjnego czasu rzeczywistego, jak np. przeglądarka internetowa, która inicjuje jednocześnie kilka połączeń z serwerem do pobierania tekstu, grafiki wymaga się, aby te elementy były wykonywane równolegle. Dzięki temu strony WWW otwierają się szybciej. W systemach czasu rzeczywistego tego rodzaju problematyka jest znana pod pojęciem wielowątkowości (multithreading). Pozwala ona na równoległe wykonywanie określonych fragmentów programu, zwanych wątkami. Wielowątkowość można traktować jako pewną formę wielozadaniowości (multitasking) czyli mechanizmu, dzięki któremu systemy operacyjne mogą wykonywać jednocześnie więcej niż jeden program (proces). Zasadniczą różnicą między procesami a wątkami jest współdzielenie danych globalnych przez wątki (różne wątki mogą korzystać ze wspólnych zmiennych globalnych). Zmienne lokalne (czyli stos) są oddzielne dla każdego wątku/procesu. Wykonywanie więcej niż jednego fragmentu kodu w tej samej chwili jest możliwe tylko w systemach wieloprocesorowych lub z procesorami wielordzeniowymi. W praktyce jednoczesne wykonywanie wątków jest realizowane przez szybkie przełączanie procesora między nimi. Przełączanie polega na: przerwaniu obecnie pracującego wątku i zapisaniu jego stanu w strukturze zwanej switchframe. Każdy wątek ma własną tego rodzaju strukturę, która zawiera wszystkie parametry procesora (zawartości rejestrów, licznik rozkazów, wskaźnik stosu, wartości flag) jednoznacznie określające jego stan, załadowaniu do rejestrów procesora wartości ze struktury switchframe tego wątku, na który się przełączamy. Podstawowym wątkiem we wszystkich aplikacjach systemu Nut/Os jest wątek main. Od jego uruchomienia rozpoczyna się działanie całego programu zaraz po wykonaniu poleceń zapisanych w kodzie startowym (nutinit.o). Może on zawierać dowolne instrukcje, takie jak inicjalizacja UART, zarejestrowanie kontrolera Ethernet, itp. Po wykonaniu wszystkich zapisanych w nim zadań, priorytet wątku ustawiany jest na najniższy. Na końcu kodu wątku znajduje się nieskończona pętla z funkcją NutSleep(). Za przełączanie wątków odpowiada funkcja NutThreadSwitch(). W opisywanej wyżej sytuacji można zauważyć pewne podobieństwo do obsługi przerwań w systemie mikroprocesorowym gdy wystąpi przerwanie, stan procesora jest zapisywany na stosie, a po zakończeniu jego obsługi do rejestrów ładowane są uprzednio zapisane wartości. O kolejności wykonywania poszczególnych wątków przez procesor decyduje element systemu operacyjnego nazywany planistą (scheduler). W systemie Nut/OS wątek może znajdować się w jednym z niżej wymienionych stanów: RUNNING - aktualnie wykonywany wątek; SLEEP - wątek uśpiony, który nie jest gotowy na wznowienie działania; READY - wątek oczekujący na wznowienie działania. 21

22 W stanie RUNNING każdorazowo znajduje się tylko jeden, aktualnie wykonywany wątek. Jego przejście do stanu SLEEP, a tym samym zwolnienie procesora dla innego wątku następuje w kilku przypadkach: wywołanie funkcji NutSleep(), powodującej uśpienie aktualnego wątku na określony czas; wywołanie funkcji NutThreadYield(), powodującej zwolnienie procesora oraz natychmiastowe przełączenie na wątek o tym samym lub wyższym priorytecie, będący w stanie READY, o ile taki istnieje; wywołanie funkcji NutEventWait(), powodującej oczekiwanie na wystąpienie określonego zdarzenia; wywołanie dowolnej funkcji wejścia-wyjścia operującej na gnieździe sieciowym. W stanie uśpienia może jednocześnie znajdować się wiele wątków. Przerwanie wykonywania aktualnie pracującego wątku, powoduje zapisanie jego stanu, czyli zawartości wszystkich rejestrów procesora, licznika rozkazów, wskaźnika stosu oraz wartości flag. Po zwolnieniu procesora następuje załadowanie stanu wątku, znajdującego się w stanie oczekiwania, którego priorytet jest najwyższy. Jeżeli w chwili zwolnienia procesora żaden wątek nie znajduje się w stanie READY, uruchomiony zostaje wątek "jałowy" idle. Pracuje on do czasu przejścia dowolnego, innego wątku do stanu oczekiwania. Przejście wątku ze stanu SLEEP do stanu READY następuje po upłynięciu czasu uśpienia zadeklarowanego w funkcji NutSleep(), wystąpieniu zdarzenia na które oczekiwał wątek, lub po zakończeniu wykonywania operacji wejścia-wyjścia. W stanie READY może znajdować się jednocześnie wiele wątków. W systemie Nut/OS nie stosuje się wywłaszczenia, nie ma wobec tego możliwości przerwania przez system operacyjny aktualnie pracującego wątku. Każdy uruchomiony wątek wykonywany jest tak długo, dopóki nie zostanie wprowadzony w stan uśpienia. Z tego powodu, przy pisaniu kodu każdego wątku, należy bezwzględnie pamiętać o wywoływaniu funkcji zwalniającej procesor przynajmniej raz w głównej pętli. Zaniechanie tej czynności doprowadzi do zawieszenia się aplikacji na aktualnie wykonywanym zadaniu, gdyż nie będzie możliwości przełączenia się na inny wątek. Wyjątek stanowi uruchamianie nowego wątku poprzez wywołanie funkcji NutThreadCreate(). W tym wypadku, jeżeli aktualnie wykonywany wątek ma priorytet mniejszy lub równy priorytetowi domyślnemu (64), przechodzi on do stanu uśpienia, a nowo utworzony wątek do stanu RUNNING. Każdy wątek ma przypisany priorytet. Jest to liczba z zakresu od 0 do 254, przy czym 0 oznacza najwyższy, a 254 najniższy priorytet. Priorytet obecnie pracującego wątku można ustawić za pomocą funkcji NutThreadSetPriority(). Najwyższe priorytety (od 0 do 31) są zarezerwowane dla wątków systemu operacyjnego i nie powinno się ich ustawiać. Mechanizm działania planisty: jeśli pracujący w danej chwili wątek zwolni procesor, system operacyjny przełączy go na wątek znajdujący się w stanie READY o najwyższym priorytecie, jeśli żaden z wątków nie jest gotowy (stan SLEEP), system przełączy się na wątek idle o najniższym priorytecie. Z zastosowania takiego algorytmu wynika, że przełączenie wątków jest możliwe tylko gdy obecnie wykonujący się wątek dobrowolnie zwolni procesor. Możemy to zrobić przez wywołanie jednej z następujących funkcji: THREAD(nazwa_funkcji, nazwa_parametru) Makro generuje deklarację funkcji (wraz z odpowiednimi atrybutami dla kompilatora) mającej pracować jako wątek. Na przykład wywołanie: THREAD(moj_watek, argumenty) { kod funkcji } utworzy funkcję o postaci: 22

23 void moj_watek(void *argumenty) attribute ((noreturn)); void moj_watek(void *argumenty) { kod funkcji } // atrybut noreturn jest //podpowiedzia dla kompilatora C, ze funkcja //nigdy sie nie konczy HANDLE NutThreadCreate(char *name, void (*fn) (void *), void *arg, size_t stacksize); Tworzy nowy wątek o nazwie name. Wątek zaczyna swoją pracę od wywołania funkcji fn z parametrem arg. Przez arg można przekazać funkcji fn dowolny wskaźnik jako argument (lub podać NULL, jeżeli go nie potrzebujemy). Wartość stacksize określa rozmiar stosu dla tworzonego wątku. Domyślna wartość to 768 bajtów (makrodefinicja NUT_THREAD_MAINSTACK). Nowo utworzony wątek ma priorytet 64. u_char NutThreadSetPriority(u_char level); Ustawia priorytet obecnie pracującego wątku na wartość level. Należy pamiętać o tym, że wątki tworzone przez użytkownika mogą mięć priorytety z przedziału , przy czym mniejsza wartość oznacza większy priorytet. Funkcja wraca wartość priorytetu wątku przed zmianą. void NutThreadYield(void); Wywołanie tej funkcji powoduje natychmiastowe przełączenie bieżącego wątku zgodnie z algorytmem planisty. void NutSleep(u_long ms); Przerywa działający wątek na czas co najmniej ms milisekund i przełącza go zgodnie z algorytmem planisty. Rzeczywisty czas, na jaki wątek zostanie uśpiony zależy od rozdzielczości timera systemowego (domyślnie 62,5 milisekundy). Funkcji NutSleep nie wolno używać do odmierzania precyzyjnych opóźnień. void NutDelay(u_long ms); Czeka dokładnie ms milisekund. Bieżący wątek nie jest przełączany. Funkcję można stosować do precyzyjnych opóźnień. void *malloc(size_t), free(void *); Funkcje alokujące i zwalniające pamięć zgodne ze standardową biblioteką języka C. void *NutHeapAlloc(size_t), NutHeapFree(void *); Ethernutowe odpowiedniki funkcji malloc() i free(). Można używać zamiennie z malloc() i free(). size_t NutHeapAvailable(); Zwraca ilość dostępnej pamięci sterty w bajtach. 23

24 Interfejs programistyczny (API) systemu Nut/OSt udostępnia standardowe funkcje języka C umożliwiające dynamiczną alokację pamięci malloc oraz free. Można je używać w taki sam sposób jak w aplikacjach pisanych na komputer PC. Należy przy tym pamiętać, że w mikrokontrolerze ATmega128 mamy do dyspozycji ok. 32 kb pamięci RAM. Ilość pamięci dostępnej w danej chwili zwraca funkcja NutHeapAvailable(). 3. Stanowisko laboratoryjne Komputer PC z zainstalowanym środowiskiem programowym AVR Studio 4. Zestaw uruchomieniowy ZL9AVR z modułami rozszerzeniowymi. Oscyloskop cyfrowy. 4. Przebieg ćwiczenia Przed ćwiczeniem: - należy przypomnieć podstawowe wiadomości dotyczące wątków w systemach czasu rzeczywistego - należy zapoznać się z mechanizmem tworzenia i zarządzani wątkami w systemie Nut/Os. Ćwiczenie jest planowane jako 4-godzinne i obejmuje: 1. Przygotowanie programów korzystających z kilku wątków (inicjalizacja, ustawienie priorytetu) i obsługujących wybrane moduły peryferyjne mikrokontrolera ATmega128 w zakresie działań pomiarowo-kontrolnych. Szczegóły odnośnie programów ustala prowadzący ćwiczenie. Wynikiem pracy grupy laboratoryjne są programy na mikrokontroler ATmega128. Wnioski i spostrzeżenia jakie nasunęły się podczas wykonywania ćwiczenia należy zamieścić w sprawozdaniu. 5. Wymagania BHP Warunkiem przystąpienia do realizacji ćwiczenia jest zapoznanie się z obowiązującą w laboratorium instrukcją BHP oraz przestrzeganie zasad w niej zawartych. Konieczne jest także zapoznanie z ogólnymi zasadami pracy przy stanowisku komputerowym. Instrukcje BHP powinny być podane studentom podczas pierwszych zajęć laboratoryjnych i dostępne do wglądu w laboratorium. Tekst instrukcji stanowiskowej obowiązującej w Laboratorium został umieszczony na początku niniejszego opracowania. 6. Sprawozdanie studenckie Sprawozdanie powinno zawierać: cel i zakres ćwiczenia, opis stanowiska badawczego, opis przebiegu ćwiczenia z wyszczególnieniem wykonywanych czynności, algorytm oraz listing opracowanych programów, merytoryczne komentarze i wnioski. 24

25 Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki Instrukcja do zajęć laboratoryjnych Numer ćwiczenia: 4 Temat: Implementacja protokołu Telnet Laboratorium z przedmiotu: Systemy czasu rzeczywistego Kod: ES2C Elektrotechnika studia stacjonarne II stopnia, sem. I specjalność Automatyka Przemysłowa i Technika Mikroprocesorowa Opracował dr inż. Rafał Kociszewski Białystok

26 1. Cel ćwiczenia Zapoznanie się ze mechanizmem korzystania z protokołu Telnet w systemie Ethernut do realizacji zdalnego sterowania elementami podłączonymi do portów I/O mikrokontrolera ATmega Wprowadzenie Telnet to protokół polegający na przesyłaniu znaków wpisywanych przez danego użytkownika na jego klawiaturze do innego komputera i wyświetlanie wyników tego działania na komputerze tego użytkownika. Rys.1. Idea działania Telnet (źródło: Protokół ten został pierwotnie stworzony w celu obsługi zdalnych połączeń terminalowych. Nazwa telnet używana jest również jako nazwa programu umożliwiającego interakcyjny dostęp do odległych komputerów, jak również jako nazwa czynności używania tego programu. Po stronie zalet protokołu Telnet można wymienić dostęp do wielu usług informacyjnych typu bazy danych - poczynając od ogromnej liczby dostępnych w Internecie katalogów bibliotecznych, poprzez bazy danych o lotach sond kosmicznych, trzęsieniach ziemi, aż po notowania giełdowe i wyniki sportowe (po wykupieniu subskrypcji i uzyskania konta można skorzystać z zasobów serwisów Polskiej Agencji Prasowej). Usługa Telnet wymaga tylko połączenia TCP/IP z Internetem lub innym komputerem (siecią komputerów). Program Telnet jest dostępny w większości systemów operacyjnych używanych na komputerach PC. Rys.2. Połączenie Telnet realizowane za pomocą programu PuTTY oraz Hercules port 23 26

27 Program uruchamiamy komendą: telnet adres gdzie adres jest adresem komputera, z którym chcemy się połączyć (tzw. komputer zdalny). Możemy użyć zarówno adresu symbolicznego - w postaci nazwy jak i numerycznego - IP. Po wydaniu komendy powinno zostać nawiązane połączenie między komputerem, na którym pracujemy (tzw. lokalnym) a komputerem zdalnym. Następnie komputer zdalny poprosi o podanie nazwy konta (login:) oraz hasła (password:), które nie będzie widoczne na ekranie podczas wpisywania. Po poprawnym zalogowaniu się możemy pracować na odległym komputerze jak na maszynie lokalnej (oczywiście tylko w trybie tekstowym). Telnet przeznaczony jest w zasadzie do pracy na własnym koncie. Istnieją jednak komputery z dostępnymi kontami, na których można pracować bez konieczności podawania hasła. Konta te noszą zwykle nazwy "guest", "visitor", "anonymous" itp. Istnieją również komputery, które udostępniają konta do wykonywania jednej konkretnej usługi. Na takie konto można zalogować się bez hasła, lub hasło jest powszechnie znane, ale po uzyskaniu połączenia nie mamy dostępu do linii komend, lecz od razu uruchamiany jest określony program i tylko z nim możemy pracować. Zakończenie pracy z tym programem powoduje automatyczne zamknięcie sesji. Sesja telnetu składa się z faz: 1) Wywołanie programu telnet, 2) Połączenie z wybranym komputerem, 3) Zalogowanie się na komputerze. Po wykonaniu tych czynności użytkownik może wykonywać pracę tak jakby był fizycznie podłączony do komputera, z którym nawiązano łączność. Sesja telnet może pracować w dwóch trybach: input state lub command state. W trybie pierwszym można wykonywać komendy tylko dla sesji telnet. Realizacja ćwiczenia laboratoryjnego będzie wymagać użycia kontrolera RTL8019AS dostępnego na płytce ZL1ETH. Jest to zintegrowany kontroler sieci Ethernet umożliwiający wykonanie karty sieciowej zgodnej z NE2000 z funkcją Plug & Play oraz z możliwościami transmisji typu full-duplex i trybami obniżonego poboru mocy. Komunikacja pomiędzy RTL8019AS a mikrokontrolerem odbywa się za pomocą 8-bitowej magistrali. Sterowanie kontrolerem polega na Rys. 3. Układ RTL8019AS wpisywaniu odpowiednich wartości do rejestrów sterujących i konfiguracyjnych oraz na odczycie jego rejestrów statusu i danych. Wybór danego rejestru do zapisu/odczytu odbywa się przez wystawienie jego adresu na 5-liniowej magistrali adresowej. Rejestry RTL8019AS można podzielić na dwie grupy ze względu na ich adres i funkcje: zgodne z NE2000; związane z funkcją Plug & Play. Połączenie w ramach protokołu Telnet w systemie Nut/OS można zrealizować jako prosty serwer TCP bazujący na układzie RTL8019AS i korzystający z portu 23. Ogólnie numery portów reprezentowane są przez z zakresu od 0 do Niektóre numery portów (od 0 do 1023) są zarezerwowane na standardowo przypisane do nich usługi. Dzięki temu oprócz procesów można identyfikować ogólnie znane usługi działające na odległych systemach. Sieć działań serwera korzystającego z protokołu Telnet jest pokazana na rysunku 4. Na początku za pomocą funkcji NutTcpCreateSocket() tworzone jest nowe gniazdo sieciowe (socket). Jest ono dwukierunkowym punktem końcowym pojedynczego połączenia sieciowego, z którego można odczytywać dane. Zostaną one odebrane dokładnie w takiej postaci i kolejności w jakiej zostały nadane. Jest to ważna cecha protokołu TCP, dzięki czemu nie ma konieczności sprawdzania sum kontrolnych. 27

28 Start kolejne połączenie NutTcpCreateSocket() NutTcpAccept() _fdopen() NutTcpsend() NutTcpReceive() fread(), fwrite() fgetc(), fprinf() _fclose() NutTcpCloseSocket() Rys. 4. Idea działania serwera w systemie Nut/OS Po utworzeniu gniazda, poprzez wywołanie funkcji NutTcpAccept() następuje oczekiwanie serwera na połączenie przychodzące na określony port (w przypadku Telnet jest to port 23). Gdy połączenie zostanie odebrane poprawnie, wówczas NutTcpAccept()zwraca 0. Od tego momentu jest możliwa wymiana danych. Służą w tym celu funkcje NutTcpSend() oraz NutTcpreceive(). W wielu przypadkach pewnym uproszczeniem jest potraktowanie gniazda jak zwykłego pliku. Można wówczas wykorzystać takie funkcje jak fread(), fwrite(), fprintf(), itd. Wybierając ten sposób komunikacji, należy na początku skorzystać z funkcji _fdopen(), która tworzy plik połączony z gniazdem sieciowym. Operacje wejścia/wyjścia na pliku będą de facto powodowały zapis/odczyt do/z gniazda. W programie należy ponadto skorzystać z funkcji fflush(), która wymusza wysłanie danych znajdujących się w buforze zapisu pliku. Uzasadnienie wynika z faktu, że wywołanie tej funkcji np. po fprintf() daje pewność, że dane zapisane przez fprintf() zostaną natychmiast wysłane do klienta. 3. Stanowisko laboratoryjne Komputer PC z zainstalowanym środowiskiem programowym AVR Studio 4. Zestaw uruchomieniowy ZL9AVR z modułami rozszerzeniowymi. 4. Przebieg ćwiczenia Przed ćwiczeniem: - należy zapoznać się z mechanizmem działania protokołu Telnet - na podstawie noty aplikacyjnej RTL8019AS zapoznać się z podstawowymi właściwościami tego układu. Ćwiczenie jest planowane jako 4-godzinne i obejmuje: 1. Przygotowanie programu w systemie Ethernut umożliwiającego sterowanie wybranymi podłączonymi do portu I/O mikrokontrolera ATmega128 w czasie rzeczywistym przy wykorzystaniu protokołu Telnet. Szczegóły odnośnie programów ustala prowadzący ćwiczenie. 28

29 Wynikiem pracy grupy laboratoryjne są programy na mikrokontroler ATmega128. Wnioski i spostrzeżenia jakie nasunęły się podczas wykonywania ćwiczenia należy zamieścić w sprawozdaniu. 5. Wymagania BHP Warunkiem przystąpienia do realizacji ćwiczenia jest zapoznanie się z obowiązującą w laboratorium instrukcją BHP oraz przestrzeganie zasad w niej zawartych. Konieczne jest także zapoznanie z ogólnymi zasadami pracy przy stanowisku komputerowym. Instrukcje BHP powinny być podane studentom podczas pierwszych zajęć laboratoryjnych i dostępne do wglądu w laboratorium. Tekst instrukcji stanowiskowej obowiązującej w Laboratorium został umieszczony na początku niniejszego opracowania. 6. Sprawozdanie studenckie Sprawozdanie powinno zawierać: cel i zakres ćwiczenia, opis stanowiska badawczego, opis przebiegu ćwiczenia z wyszczególnieniem wykonywanych czynności, algorytm oraz listing opracowanych programów, merytoryczne komentarze i wnioski. 29

30 Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki Instrukcja do zajęć laboratoryjnych Numer ćwiczenia: 5 Temat: Implementacja komunikacji sieciowej TCP Laboratorium z przedmiotu: Systemy czasu rzeczywistego Kod: ES2C Elektrotechnika studia stacjonarne II stopnia, sem. I specjalność Automatyka Przemysłowa i Technika Mikroprocesorowa Opracował dr inż. Rafał Kociszewski Białystok

31 1. Cel ćwiczenia Poznanie sposobu tworzenia serwera WWW w systemie Ethernut realizowanego w ramach komunikacji sieciowej TCP i służącego do wymiany danych w czasie rzeczywistym. 2. Wprowadzenie Stos TCP/IP jest zestawem kilku protokółów sieciowych zaprojektowanych do komunikowania się komputerów w dużych, rozległych sieciach. Model logiczny stosu TCP/IP składa się z czterech warstw: warstwy interfejsu sieciowego warstwy internetowej warstwy transportowej warstwy aplikacji. Każda z warstw odpowiada jednej lub kilku warstwom modelu OSI. Rysunek 1 przedstawia architekturę logiczną stosu protokółów TCP/IP oraz odpowiadające poszczególnym warstwom tego modelu warstwy modelu OSI. Rys. 1. Architektura stosu TCP/IP Warstwa interfejsu sieciowego Jest odpowiedzialna za przekazywanie i odbieranie pakietów z kanału transmisyjnego. Stos protokółów TCP/IP został zaprojektowany w ten sposób, aby uniezależnić się od rodzaju kanału transmisyjnego, formatu ramki fizycznej czy architektury sieciowej. Dzięki temu protokół TCP/IP może być stosowany w sieciach wykorzystujących różną technologię, jak na przykład Ethernet, Token Ring, X.25, Frame Relay, ATM. Warstwa sieciowa (internetowa) Jest odpowiedzialna za adresowanie, podział na pakiety oraz routing. W skład tej warstwy wchodzą następujące protokoły: Protokół IP (Internet Protocol) odpowiada za prawidłowe adresowanie pakietów oraz dostarczanie ich do miejsca przeznaczenia. Protokół ARP (Address Resolution Protocol) odpowiedzialny za identyfikację sprzętowego adresu interfejsu sieciowego komputera docelowego (identyfikacja adresów MAC). 31

32 Protokół ICMP Internet Control Message Protocol) odpowiedzialny za diagnozowanie transmisji datagramów IP oraz za raportowanie o błędach, które mogą pojawić się w trakcie przesyłania datagramów IP. Protokół IGMP (Internet Group Management Protocol) odpowiedzialny za rozsyłanie informacji w trybie multicasting. Warstwa transportowa Gwarantuje poprawną komunikację między komputerami w sieci oraz przepływ danych między warstwą sieciową a warstwa aplikacji. Do podstawowych protokółów warstwy transportowej należą: Protokół TCP Protokół UDP Protokoły UDP i TCP różnią się tzw. dbałością o transmitowane dane. Protokół UDP nie daje żadnej gwarancji, że dane dotrą do celu i służy do przesyłania krótkich informacji, które mogą się zmieścić w jednym datagramie. Natomiast TCP ma zapewnić pewny kanał transmisji, w którym dotarcie danych do celu jest potwierdzane przez odbiorcę. W razie potrzeby dane są retransmitowane. Protokół TCP charakteryzuje się następującymi cechami: - jest zorientowany na połączenie: program użytkowy, który chce skorzystać z protokółu TCP musi najpierw zwrócić się do odbiorcy z prośbą o uzyskanie połączenia i uzyskać jego zgodę; - jest protokółem typu punkt-punkt: każde połączenie TCP ma dokładnie dwa końce; - zapewnia dwukierunkową komunikację: komunikacja w połączeniu TCP odbywa się w dwu kierunkach, czyli zarówno od nadawcy do odbiorcy jak i od odbiorcy do nadawcy; - zapewnia strumieniowy interfejs: program może wysyłać połączeniem całą sekwencję bajtów, w konsekwencji prowadzi to do tego, że dane nie musza być dostarczane do odbiorcy w kawałkach tych samych wielkości, w których zostały wysłane; - zapewnia łagodne kończenie połączenia: gwarantuje niezawodne dostarczenie pakietów przed zamknięciem połączenia. Aby możliwa była komunikacja między komputerami w sieci każdy z nich musi mieć jednoznaczny identyfikator. W sieciach wykorzystujących protokół IP takim identyfikatorem jest numer 32-bitowy. Numer ten zwany adresem przypisany jest w sposób jednoznaczny do danego komputera w sieci. W celu łatwiejszego posługiwania się adresami IP zapisujemy go w specjalnej postaci. Postać ta polega na podziale 32-bitowego adresu na 4 części (po 8 bitów) oddzielonych od siebie kropkami i zapisaniu każdej z nich w notacji dziesiętnej. Przykładowy format IP może być następujący: Rys. 2. Budowa adresu IP

33 Każdy host w sieci pracuje w obrębie określonej sieci lokalnej. Sieci lokalne mogą być ze sobą połączone tworząc siec rozległą. Ta struktura odzwierciedlona jest w adresie IP. Zawiera on w sobie dwie informacje identyfikujące jednoznacznie host w sieci rozległej. Numer sieci (network ID) jest to unikalny w obrębie sieci globalnej identyfikator danej sieci komputerowej. Określa on wszystkie urządzenia znajdujące się w tym samym segmencie sieci fizycznej i połączone z tym samym routerem. Wszystkie urządzenia podłączone do jednej sieci fizycznej musza mieć ten sam numer sieci. Numer sieci określany jest tez często adresem sieciowym. Numer hosta ( host ID) jest to unikalny w obrębie danej sieci fizycznej identyfikator urządzenia (komputera, routery, drukarki sieciowej itp.) pracującego w sieci. Do adresowania urządzeń w sieciach IP stosuje klasy: A, B, C, D, E, przy czym klasy D i E nie są stosowane do adresowania hostów. Obecnie Klasę adresu można rozpoznać po jego pierwszych czterech bitach. Adres IP jest więc adresem samoidentyfikującym, gdyż w nim samym jest zawarta informacja o jego klasie. Tab. 1. Klasy adresów IP Klasa 4 pierwsze bity Pierwszy oktet Adres sieci Liczba sieci Liczba hostów w jednej sieci A 0??? w B 10?? w.x C 110? w.x.y D E W ćwiczeniu laboratoryjnym protokół TCP/IP będzie wykorzystywany do opracowania i uruchomienia prostego, statycznego oraz dynamicznego serwera WWW. W tym celu będzie wykorzystywany protokół HTTP (Hypertext Transfer Protocol) umożliwiający między innymi pobieranie zasobów z serwera w postaci storn internetowych. Żądanie KLIENT Odpowiedź SERWER Rys.3. Schemat komunikacji z wykorzystaniem protokołu HTTP Protokół HTTP jest protokołem przesyłania plików hipertekstowych, który nie utrzymuje sesji połączeniowej między serwerem a klientem. Oznacza to, że przeglądarka po otrzymaniu z serwera dokumentu kończy połączenie TCP/IP. Ponieważ HTTP jest protokołem jednokierunkowym żądania wychodzą od klienta, natomiast serwer dostarcza jedynie informacji na żądanie. Protokół HTTP normalizuje format przesyłanych komunikatów oraz określa czynności, które powinien podjąć serwer WWW bądź przeglądarka w reakcji na określone połączenia. Protokół HTTP korzysta z portu 80, a znalezienie zasobów w Internecie sprowadza się do podania adresu w przeglądarce, będącego unikatowym identyfikatorem definiującym trasę do pliku. 33

34 Przebieg transferu HTTP z wykorzystaniem protokołu TCP/IP dzieli się na trzy fazy: 1. Połączenie Faza nawiązania połączenia między przeglądarką a serwerem WWW. 2. Zadanie Po utworzeniu połączenia klient wysyła do serwera zadanie, określając protokół komunikacyjny oraz plik, który ma zostać pobrany. Ponadto przesyła informacje o typach danych, które jest w stanie obsłużyć. Odpowiedź Serwer po przetworzeniu żądania wysyła do klienta odpowiedź w postaci pliku, bądź w przypadku błędu komunikat o jego wystąpieniu. 3. Zamknięcie połączenia Zakończenie połączenia między serwerem a klientem. Proces pobierania zasobów przez klienta (np. przeglądarkę internetową) rozpoczyna się od nawiązania połączenia z serwerem HTTP, najczęściej przy pomocy protokołu TCP z wykorzystaniem wspomnianego wcześniej portu numer 80. Po nawiązaniu połączenia klient porozumiewa się z serwerem za pośrednictwem żądań i odpowiedzi. Żądanie konstruowane jest z szeregu wierszy zawierających znormalizowane metody i nagłówki HTTP, natomiast koniec zapytania zawsze sygnalizowany jest znakami CR+LF (carriage return, line feed), czyli powrót karetki i nowy pusty wiersz. Serwer po przetworzeniu zapytania sprawdza dostępność zasobu i generuje kod odpowiedzi zawierający w pierwszej linii informację dla klienta o sposobie realizacji zapytania lub jej braku w przypadku wystąpienia błędu. Istnieje około 40 rodzajów trzycyfrowych kodów, jednak ze względu na ich znaczenie można podzielić je na pięć grup[xxx]: 1xx kody informacyjne, 2xx kody informujące o pomyślnym wyniku zapytania, 3xx kody informujące o przekierowaniu, 4xx kody błędów klienta, 5xx kody błędów serwera. Najczęściej spotykanymi są: 200 OK oznacza, że zadanie zostało prawidłowo obsłużone i zasób zostanie przesłany. 404 Not Found - oznacza, że zasób, do którego odnosi się zapytanie nie istnieje 503 Service Unavailible wysłanie takiego komunikatu oznacza, że serwer w danym momencie jest przeciążony lub odbywają się na nim prace modernizacyjne. System Nut/OS ma wbudowaną obsługę określonych protokołów sieciowych, dlatego też stworzenie serwera jest rzeczą prostą. Sprowadza się ona do wywołania funkcji NutHttpProcessRequest() po odebraniu połączenia na porcie 80 odpowiedzialnym za protokół HTTP. W klasycznych systemach opis strony internetowej znajduje się w specjalnym katalogu, z którego czyta serwer. W przypadku systemów opartych na Nut/OS lub innych uproszczony system plików, tylko do odczytu, jest tworzony w pamięci Flash. Strona internetowa z podstronami może być umieszczona w tej strukturze danych. W systemie NutOS jest zaimplementowany system plików UROM, przeznaczony do przechowywania niewielkich plików razem z kodem programu. Podczas kompilacji projektów odwołujących się do Nut/OS należy w pliku Sources edytować linię CRUROM_DIR, podając ścieżkę do katalogu, którego zawartość ma zostać zapisana w pamięci Flash mikrokontrolera. Po 34

35 kompilacji powstanie plik nazwa_katalogu_crurom.c. System plików UROM jest interpretowany przez system Ethernut jako oddzielne urządzenie, dlatego w projekcie należy je zainicjować za pomocą funkcji NutRegisterDevice(&devUrom,0,0). Omówiony wyżej protokół HTTP umożliwia dostęp do statycznych zasobów serwera, które nie mogą zostać użyte w sytuacji, gdy zachodzi potrzeba prezentacji dynamicznie zmieniających się danych, np. odczytów zmian wartości temperatury, itp. Aby umożliwić dostęp poprzez strony internetowe do dynamicznych danych opracowano znormalizowany interfejs CGI (Common Gateway Interface) pozwalający dynamicznie kreować zasoby, które później są przesyłane do klienta. Istotną cechą skryptów CGI jest fakt, że nie są one powiązane z żadnym konkretnym językiem programowania. Standard ten służy do określenia sposobu wymiany danych pomiędzy aplikacją a serwerem. Serwer usługi HTTP przekazuje aplikacji, pracującej współbieżnie, parametry trzema drogami: za pośrednictwem zmiennych środowiskowych; poprzez wpisywanie parametrów do konsoli wiersza poleceń; poprzez standardowe wejście. Aplikacja zwykle zwraca do serwera znormalizowany nagłówek zawierający typ wygenerowanego przez siebie zasobu, oraz po oddzieleniu nagłówka znakiem CR+LF właściwe dane. Najczęściej zwracany jest kod strony internetowej zapisany w języku HTML, ale istnieje możliwość przesyłania również wygenerowanych plików graficznych a także wielu innych informacji. W kolejnym kroku serwer dodaje swoje informacje do nagłówka po czym całość przesyła do klienta. Zasadę tworzenia odpowiedzi przez skrypt CGI przedstawia poniższy rysunek. Żądanie KLIENT Odpowiedź SERWER Wynik Dane CGI Rys. 4. Tworzenie odpowiedzi przez skrypt CGI Wszystkie programy mające służyć, jako skrypty CGI są umieszczane w specjalnym katalogu o nazwie /cgi-bin, dzięki takiemu mechanizmowi serwer jest w stanie rozróżnić czy dana aplikacja jest skryptem CGI czy zasobem, który należy przesłać do odbiorcy. W systemie Nut/OS problem skryptów CGI został rozwiązany w ten sposób, aby umożliwić przede wszystkim przesyłanie danych za pośrednictwem stron internetowych, które wykorzystywane są do sterowania urządzeniami peryferyjnym kontrolera. Skrypt CGI fizycznie nie istnieje na serwerze, a reprezentuje go funkcja napisana w języku C. Mechanizm wywołania przez klienta skryptu jest identyczny jak w przypadku wywołania fizycznych plików skryptowych. Aby przesłać do funkcji dodatkowe argumenty należy je umieścić po adresie skryptu poprzedzając znakiem? według schematu: 35

36 Ponieważ pliki zastąpione są funkcjami w języku C konieczne jest skojarzenie nazwy pliku z funkcją, która ma realizować jego zadania. Odpowiada za to funkcja int NutRegisterCgi(char *name, int(*)(file *, REQUEST *) func ); która przyjmuje dwa parametry: pierwszy to nazwa pliku, który ma pełnić rolę skryptu CGI, drugi jest adresem funkcji odpowiedzialnej za jego wykonanie. Funkcja symulująca działanie skryptu również przyjmuje dwa parametry: znacznik do strumienia, który pozwala wysyłać dane bezpośrednio do przeglądarki klienta oraz REQUEST, który przyjmuje strukturę danych opisująca odebrane żądanie od klienta. Mechanizm generacji stron z dynamiczną zawartością wymaga użycia znacznika <%dowolny_tekst_znacznika%> w kodzie strony. Na przykład <html> <head> <title>test strony</title> </head> <body>napis będzie wygenerowany dynamicznie:<br> <%napis%> </body> </html> Po napotkaniu znacznika <%napis%> serwer wbudowany w Nut/OS wywoła wybraną funkcję callback. Aby zawartość strony zmieniała się dynamicznie należy plik z kodem zapisać z rozszerzeniem.asp. W systemie Nut/OS skrót ASP oznacza Active Server Pages, przy czym nie jest to zbiór technologii ASP.NET firmy Microsoft. Kontynuując podany wyżej przykład należy go zainicjować w sposób następujący NutRegisterAsp(); NutRegisterAspCallback(ASP_callback); // uruchomienie mechanizmu ASP // wybor funkcji wywolywanej przy // napotkaniu znacznika <%...%> Funkcja callback w najprostszym przypadku wygląda następująco: static int ASP_callback (char *tag_name, FILE *f) { if(!strcmp(tag_name,"napis")) { fprintf(f, "Napis wygenerowany dynamicznie"); return 0; } return 1; } Pierwszy argument tag_name jest nazwą znacznika ASP umieszczonego w kodzie strony, drugi f to strumień, do którego są zapisywane dane, które następnie zostaną przesłane do klienta zamiast znacznika ASP. W tym przypadku znacznik <%napis%> wskazuje na tekst Napis wygenerowany dynamicznie. 36

37 3. Stanowisko laboratoryjne Komputer PC z zainstalowanym środowiskiem programowym AVR Studio 4. Zestaw uruchomieniowy ZL9AVR z modułami rozszerzeniowymi. 4. Przebieg ćwiczenia Przed ćwiczeniem: - należy zapoznać się z mechanizmem działania stosu TCP/IP, - należy zapoznać się z ideą skryptów cgi - należy zapoznać się z podstawami tworzenia prostych stron internetowych w języku HTML. Ćwiczenie jest planowane jako 4-godzinne i obejmuje: 1. Przygotowanie programu w systemie Ethernut generującego statyczny lub dynamiczny serwer HTTP. W drugim przypadku należy zaprezentować określon dane (np. z przetwornika ADC) zmieniające się w czasie rzeczywistym. Szczegóły odnośnie programów ustala prowadzący ćwiczenie. Wynikiem pracy grupy laboratoryjne są programy na mikrokontroler ATmega128. Wnioski i spostrzeżenia jakie nasunęły się podczas wykonywania ćwiczenia należy zamieścić w sprawozdaniu. 5. Wymagania BHP Warunkiem przystąpienia do realizacji ćwiczenia jest zapoznanie się z obowiązującą w laboratorium instrukcją BHP oraz przestrzeganie zasad w niej zawartych. Konieczne jest także zapoznanie z ogólnymi zasadami pracy przy stanowisku komputerowym. Instrukcje BHP powinny być podane studentom podczas pierwszych zajęć laboratoryjnych i dostępne do wglądu w laboratorium. Tekst instrukcji stanowiskowej obowiązującej w Laboratorium został umieszczony na początku niniejszego opracowania. 6. Sprawozdanie studenckie Sprawozdanie powinno zawierać: cel i zakres ćwiczenia, opis stanowiska badawczego, opis przebiegu ćwiczenia z wyszczególnieniem wykonywanych czynności, algorytm oraz listing opracowanych programów, merytoryczne komentarze i wnioski. 37

38 Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki Instrukcje do zajęć laboratoryjnych Laboratorium z przedmiotu: Systemy czasu rzeczywistego Kod: ES2C Elektrotechnika studia stacjonarne II stopnia, sem. I specjalność Automatyka Przemysłowa i Technika Mikroprocesorowa Opracował dr inż. Rafał Kociszewski Białystok

39 Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki Instrukcja do zajęć laboratoryjnych Numer ćwiczenia: 6 Temat: Podstawy obsługi systemu QNX Laboratorium z przedmiotu: Systemy czasu rzeczywistego Kod: ES2C Elektrotechnika studia stacjonarne II stopnia, sem. I specjalność Automatyka Przemysłowa i Technika Mikroprocesorowa Opracował dr inż. Rafał Kociszewski Białystok

40 1. Cel ćwiczenia Zapoznanie się z podstawami obsługi systemu operacyjnego czasu rzeczywistego QNX. Tworzenie aplikacji w zintegrowanym środowisku programistycznym QNX Momentics. 2. Wprowadzenie System QNX został opracowany przez kanadyjską firmę QNX Software Systems, Ltd. Spełnia on standardy POSIX wraz rozszerzeniami dotyczącymi systemów czasu rzeczywistego. Jest to system operacyjny czasu rzeczywistego, co oznacza, że oprócz podstawowego zadania realizowanego przez każdy system operacyjny, jakim jest zarządzanie zasobami komputera, ma on zdeterminowany czas reakcji na zdarzenie zewnętrzne. System QNX jest bardzo efektywny w działaniu, mało obciążającym zasoby sprzętowe komputera oraz skalowalnym (pozwalającym dobierać potrzebne komponenty systemu w zależności od potrzeb) w szerokim zakresie. Cechy te osiągnięto głównie dzięki architekturze system opartej na mikrojądrze. Ważną cechą systemu jest zaimplementowanie w nim protokołu sieciowego pozwalającego łączyć zasoby komputerów pracujących w sieci Qnet w jeden logiczny komputer. Sieć ta zapewnia pełną przezroczystość w dostępie do zasobów niezależnie od tego, na którym węźle sieci się one znajdują. Cechy systemu QNX: 1. Wielozadaniowość i wielowątkowość z priorytetami i wywłaszczaniem, 2. Trzy algorytmy kolejkowania procesów: - FIFO (First In, First Out), - karuzelowy (round robin) - adaptacyjny (adaptive) 3. Synchronizacja procesów poprzez: - semafory, - synchroniczną wymianę wiadomości, - zastosowanie algorytmu kolejkowania FIFO (w ograniczonym zakresie) 4. Komunikacja międzyprocesowa i międzywątkowa: - synchroniczna wymiana wiadomości (message passing), - sygnały, - pamięć dzielona (shared memory), 5. Czasomierze, 6. Zdeterminowany czas reakcji na przerwanie i czas przełączania kontekstu 7. Hierarchiczny system plików. 8. Szerokie możliwości konfigurowania i skalowania. QNX jako maszyna wirtualna Praca z systemem (obrazem systemu) polega na wykonaniu poniższych czynności: 1. Uruchomić VMWare Player. 2. Wybrać opcję Open Virtual Machine. 3. Wskazać w katalogu QNX plik (po instalacji systemu) z rozszerzeniem vmx. 4. Uruchomić wybrana maszynę - VM Play 5. Login wymaga podania nazwy użytkownika należy wpisać root bez hasła. Po wykonaniu tych kroków pojawia się interfejs graficzny Photon systemu QNX. 40

41 Przejście do systemu Windows jest możliwe dzięki użyciu klawiszy CTL+ALT, zaś kliknięcie w obszar VM powoduje powrót do obsługi QNX. Terminal - otwarcie sesji $ - po zgłoszeniu zwykłego użytkownika, # - po zgłoszeniu administratora. Otwarcie nowej sesji automatycznie uruchamia proces interpretera komend systemowych sh (shell). Interpreter odczytuje komendy użytkownika i wyświetla na ekranie stosowne komunikaty obrazujące rezultaty ich wykonania (lub komunikaty o błędach). Uzyskiwanie pomocy Skrócony opis poleceń systemowych można uzyskać pisząc w oknie terminala polecenie: $ use nazwa_polecenia Pliki i katalogi Wszystkie dane przechowywane w systemie QNX zapisuje się w plikach na dysku. Każdy plik jest opatrzony indywidualną nazwą. Aby ułatwić wyszukiwanie danych, pliki grupuje się w katalogach. Każdy katalog może zawierać pliki, jak i katalogi niższego poziomu. Pliki zapisane w tym samym katalogu muszą mieć różne nazwy, natomiast pliki zapisane w różnych katalogach nie muszą spełniać tego warunku. Nazwa piku jest dowolnym ciągiem znaków (max 48). System QNX rozróżnia małe i duże litery, natomiast nie wyróżnia żadnych części nazwy. Kropka nie ma tu żadnego znaczenia i jest takim samym znakiem jak każdy inny. Przestrzega się jednak pewnej konwencji: - początkowa kropka wyróżnia systemowe pliki konfiguracyjne, - ostatni segment nazwy, oddzielony od reszty kropka, może określać rodzaj zapisanych w pliku danych. System umożliwia dostęp do plików w trybie odczytu, zapisu lub wykonania. Symboliczne oznaczenia praw dostępu do pliku jest następujące: r - prawo odczytu (ang. read) w - prawo zapisu (ang. write) x - prawo wykonania (ang. execute) Prawa te mogą być zdefiniowane dla właściciela pliku, grupy do której on należy i wszystkich innych użytkowników: u - właściciela pliku (ang. user) g - grupy (ang. group) o - innych użytkowników (ang. other) Polecenia dotyczące katalogów Katalog ma postać drzewa z wierzchołkiem oznaczonym znakiem /. Położenie określonego pliku w drzewie katalogów określa się za pomocą ścieżki. Rozróżnia się ścieżki absolutne i relatywne. Ścieżka absolutna podaje drogę jaka trzeba przejść od wierzchołka drzewa do danego pliku. Przykład ścieżki absolutnej to /home/automatyka/programy/hello.c. 41

42 Ścieżka absolutna zaczyna się od znaku /. Ścieżka relatywna zaczyna się od innego znaku niż /. Określa ona położenie pliku względem katalogu bieżącego. Po zarejestrowaniu się użytkownika w systemie katalogiem bieżącym jest jego katalog domowy. Uzyskiwanie nazwy katalogu bieżącego Nazwę katalogu bieżącego uzyskuje się pisząc polecenie pwd: $pwd /home/automatyka Listowanie zawartości katalogu Zawartość katalogu uzyskuje się wydając polecenie ls. Składnia polecenia jest następująca: ls [-l] [nazwa] gdzie: l - listowanie w długim formacie, wyświetlane są atrybuty pliku Jeżeli nazwa określa pewien katalog to wyświetlona będzie jego zawartość. Gdy nazwa katalogu zostanie pominięta wówczas wyświetlana jest zawartość katalogu bieżącego. Listowane są prawa dostępu, liczba dowiązań, właściciel pliku, grupa, wielkość, data utworzenia oraz nazwa. Zmiana katalogu bieżącego Katalog bieżący zmienia się na inny za pomocą polecenia cd. Składnia polecenia jest następująca: cd nowy_katalog Jeżeli jako parametr podamy dwie kropki.. to przejdziemy do katalogu położonego o jeden poziom wyżej. Przykład: $pwd /home/automatyka $cd programy $pwd /home/automatyka/programy $cd.. $pwd /home/automatyka Tworzenie nowego katalogu Nowy katalog tworzy się poleceniem mkdir: mkdir nazwa_katalogu $ls programy $mkdir przyklad $ls programy przyklad #cd przyklad 42

43 Kasowanie katalogu Katalog (pusty) kasuje się poleceniem rmdir. rmdir nazwa_katalogu Przykład: $ls programy przyklad $rmdir przyklad $ls programy Można też skasować katalog z zawartością: rm -r nazwa_katalogu Polecenia dotyczące plików Tworzenie nowego pliku tekstowego Plik tworzymy: cat > nazwa pliku treść CTRL+D Listowanie zawartości pliku Zawartość pliku tekstowego listuje się za pomocą poleceń: more nazwa_pliku less nazwa_pliku cat nazwa_pliku. Do edycji pliku można użyć TextEditora lub też innych narzędzi jak edytor vi. Kopiowanie pliku Pliki kopiuje się za pomocą polecenia cp. cp [ ifr] plik_źródłowy plik_docelowy cp [ ifr] plik_źródłowy katalog_docelowy gdzie: i - żądanie potwierdzenia, gdy plik docelowy może być nadpisany, f - bezwarunkowe skopiowanie pliku, R - gdy plik źródłowy jest katalogiem to będzie skopiowany z podkatalogami. $ls plik.txt programy $ls programy $ $cp plik.txt programy $ls programy plik.txt Zmiana nazwy pliku Nazwę pliku zmienia się za pomocą polecenia mv. mv [ if] stara_nazwa nowa_nazwa mv [ if] nazwa_pliku katalog_docelowy gdzie: i - żądanie potwierdzenia gdy plik docelowy może być nadpisany. f - bezwarunkowe skopiowanie pliku. 43

44 $ls pismo.txt $mv pismo.txt plik.txt $ls plik.txt Kasowanie pliku Pliki kasuje się za pomocą polecenia rm. rm [-Rfi] nazwa gdzie: i - żądanie potwierdzenia przed usunięciem pliku. f - bezwarunkowe skasowanie pliku. R - gdy nazwa jest katalogiem to kasowanie zawartości wraz z podkatalogami. $ls programy plik.txt $rm plik.txt $ls programy Konta użytkowników i prawa dostępu Administracja kontami użytkowników sprowadza się do (bezpośredniej lub przy użyciu komend i programów) edycji dwóch plików. Konta użytkowników zdefiniowane są w pliku: /etc/passwd, zaś informacje na temat grup, do których użytkownicy przynależą, zawarte są w pliku /etc/group. Przed zdefiniowaniem użytkownika należy utworzyć grupę, do której użytkownik będzie przynależeć. W tym celu należy dokonać edycji pliku /etc/group. Każdy wiersz pliku składa się z czterech pól oddzielonych dwukropkami: nazwa_grupy::gid:lista_użytkowników_należących_do_grupy W polu lista_użytkowników_należących_do_grupy możliwe jest zdefiniowanie dodatkowych użytkowników przynależących do grupy, nawet jeśli ich grupa podstawowa jest inna. Każdemu użytkownikowi odpowiada jeden wiersz w pliku /etc/passwd, składający się z 7 pól oddzielonych dwukropkami, w postaci: nazwa_użytkownika:hasło:uid:gid:opis_użytkownika: katalog_osobisty:program_powłoki hasło - plik /etc/passwd jest plikiem publicznym więc pole 2 przechowujące hasło, może być puste lub zawierać znak x. Hasła (w postaci zakodowanej) przechowywane są wtedy w osobnym pliku /etc/shadow. UID - identyfikator użytkownika (User ID) GID - identyfikator grupy podstawowej (Group ID), do której użytkownik należy katalog_osobisty - ścieżka dostępu do katalogu domowego, zazwyczaj /home/nazwa_użytkownika. 44

45 program_powłoki - ścieżka dostępu do programu powłoki (interpretera komend). W systemie QNX domyślną powłoką jest /bin/sh. Prawa dostępu do plików i katalogów Każdy plik i katalog w systemie QNX posiada 10 bitów protekcji w formacie d r w x r w x r w x Są one widoczne np. po wykonaniu polecenia: ls l gdzie opcja 1 umożliwia identyfikację rodzaju pliku: d katalog, - plik, l dowiązanie (skrót) do pliku, b plik specjalny (urządzenie blokowe), c plik specjalny (urządzenie znakowe), - bity 2-4 uprawnienia właściciela pliku, - bity 5-7 uprawnienia grupy do której należy właściciel, - bity 8-10 uprawnienia pozostałych użytkowników, Znaczenie poszczególnych bitów - r (4) prawo do odczytu, - w (2) prawo do zapisu, - x (1) prawo do uruchomienia, jeśli plik jest programem. Administrowanie uprawnieniami możliwe jest przy użyciu poniższych instrukcji: chmod prawa n_pliku - umożliwia zmianę praw dostępu do pliku bądź katalogu, chown prawa n_pliku - umożliwia zmianę właściciela pliku bądź katalogu, chgrp prawa n_pliku - umożliwia zmianę grupy, do której należy plik. W systemie QNX istnieją dwie możliwości podawania praw: bezpośredni za pomocą wartości numerycznych (0-7) lub symbolicznych (zapis -rwx). Ustawiając wartości symboliczne pierwszą rzeczą, którą należy ustalić jest argument kogo ma dotyczyć dane prawo: u - użytkownik, g - grupa, o - inni, a - wszyscy. Następnym parametrem jest czy prawo ma zostać dodane, odjęte, czy ustawione: +, -,=. Możliwość wykonywania pliku test wszystkim użytkownikom systemu: chmod a+x test Jeżeli nie chcemy, żeby poza nami ktokolwiek miał dostęp do pliku test1: chmod go-rwx plik1 Drugi sposób ustawiania praw dostępu do plików to operowanie liczbami ósemkowymi: 0 brak praw dostępu 1 x wykonywanie 2 w- zapis 4 r- odczyt Sumując liczby otrzymujemy odpowiednie prawa. 45

46 Wydając polecenie chmod podajemy po nim 3 liczby, które oznaczają kolejno - właściciela, grupę, innych. Przykładowo chmod 755 oznacza, że właściciel będzie mógł odczytywać, zapisywać i wykonywać plik (7), natomiast grupa i inni tylko odczytywać i wykonywać (5). Pliki ustawione na chmod 644 pozwalają właścicielowi na odczyt i zapis (6), natomiast grupie i innym tylko na odczyt (4). Tworzenie konta nowego użytkownika W celu utworzenia konta użytkownika, należy wykonać działania: 1. Utworzyć grupę użytkowników (edycja pliku /etc/group). 2. Utworzyć użytkownika poleceniem passwd nazwa_nowego_uzytkownika (lub edycja pliku /etc/passwd). 3. Jeżeli w punkcie 2 nie użyto polecenia passwd, należy zmienić hasło nowo utworzonego użytkownika (polecenie passwd nazwa_użytkownika drugie pole pliku /etc/shadow zostanie zapisane). 4. Jeżeli w punkcie 2 nie użyto polecenia passwd, należy utworzyć katalog domowy użytkownika, odpowiednio zmienić jego właściciela (chown), przypisać mu odpowiednią grupę (chgrp) i określić uprawnienia dostępu. Uzyskiwanie informacji o stanie systemu Uruchamiając i testując programy potrzebujemy niejednokrotnie różnych informacji o stanie systemu. Dotyczy to w szczególności informacji o uruchomionych procesach, wątkach i użytych zasobach. Służą do tego następujące programy i polecenia: pidin tekstowa informacja o procesach i wątkach ps informacja o procesach hogs informacja o wykorzystaniu procesora przez procesy kill zakończenie procesu lub wysłanie sygnału do procesu lub grupy procesów slay zakończenie procesu lub procesów wymienionych na liście nazw, ifconfig informacje o karcie sieciowej QNX Neutrino i QNX Momentics IDE Dwa składniki QNX Neutrino traktowane łącznie jako jądro, objęte jedną nazwą pronto, to: - mikrojądro systemu, będące modułem programowym dostarczającym elementarnych usług umożliwiających działanie procesów; - administrator procesów, czyli proces zarządzający pamięcią, przestrzenią nazw plików, czy procesami w systemie. Do programowania pronto wykorzystuje się QNX Momentics. Zawiera on w pakiecie system operacyjny QNX Neutrino, środowisko graficzne Photon wraz z oprogramowaniem do tworzenia aplikacji okienkowych phab, środowisko programistyczne IDE, narzędzia do pisania sterowników DDK, pakiety BSP, biblioteki i narzędzia GNU, instruktażowe klipy wideo, obszerną dokumentację oraz szereg kodów. Pakiety BSP (ang. Board Support Package) są zestawem narzędzi do uruchamiania systemu operacyjnego wraz z kompletną obsługą urządzeń docelowej platformy sprzętowej. 46

47 Po zainstalownaiu pakietu, przy pierwszym uruchomieniu QNX Momentics IDE ukazuje się zakładka Welcome (dostępna przy późniejszych próbach odsłony z menu Help > Welcome ). Rys.1. Widok okna programu przy pierwszym uruchomieniu Zakładka oferuje dostęp do dokumentacji środowiska i języków programowania, wprowadzenie, kursy, przykładowe projekty oraz bezpośrednie przekierowanie do części Workbench, celem rozpoczęcia pracy nad projektem. Po wybraniu tej opcji uruchomiona zostaje właściwa część środowiska. Następnie należy utworzyć nowy projekt (File->New->QNX C Project). W otwartym oknie dialogowym należy wpisać nazwę tworzonego projektu (np. test) po czym przejść do następnego kroku, klikając przycisk Next. 47

48 W środowisku Momentics jest możliwe generowanie plików binarnych dla różnych procesorów. W kolejnym kroku kreatora projektu należy określić dla jakiego procesora (należącego do określonej rodziny) tworzone będą pliki binarne projektu. Rys. 2 Wybór wariantów dla budowanej aplikacji. W laboratorium system QNX jest zainstalowany na procesorach z rodziny x86 - zaznaczamy na karcie Build Variants pole x86 i konfigurację trybu wydania oraz debugowania. Po kliknięciu przycisku Finish pojawi się okno z przykładowym kodem prostej aplikacji oraz okno eksploratora projektu. Rys. 3 Nowy projekt 48

49 Układ aktualnie wyświetlonych okien tworzy tzw. perspektywę (domyślną perspektywą dla nowych projektów jest C/C++). Przełączanie perspektyw można uzyskać wybierając odpowiednią pozycję z menu Window->Open Perspective. Okna otwiera się po wybraniu odpowiedniej pozycji z menu Window->Show View. Po zbudowaniu projektu (Project- >Build Project) informacje o procesie budowania i ewentualne informacje trafiają do konsoli, a w oknie plików źródłowych pojawiają się ewentualne sugestie ułatwiające skorygowanie błędów. Rys. 4 Projekt po kompilacji Po kompilacji do kartoteki został dodany podkatalog Binaries, zawierający pliki wykonywalne. Pliki te fizycznie znajdują się w podkartotekach o i o-g kartoteki x86 i oznaczone są ikonami Run i Bug. Aby uruchomienie zbudowanych programów było w możliwe z poziomu IDE, na komputerze docelowym należy uruchomić usługę qconn. W oknie dialogowym Run Configurations należy wybrać typ konfiguracji C/C++ QNX QConn (IP) i kilknąć ikonę nowej konfiguracji. 49

50 Rys. 5 Okno dialogowe nowej konfiguracji uruchamiania. W polu Name wpisujemy nazwę tworzonej konfiguracji, w polu Project wpisujemy nazwę projektu, dla którego tworzymy konfigurację (projekt można wybrać z listy dostępnych projektów, wyświetlonej po kliknięciu przycisku Browse na prawo od pola Project). W polu C/C++ Application wpisujemy nazwę pliku binarnego, który będzie uruchamiany na komputerze docelowym (plik aplikacji można wybrać z listy binarnych plików projektu po kliknięciu przycisku Search project...). W końcu należy wybrać komputer docelowy QNX na którym zostanie wykonana aplikacja. W tym celu klikamy przycisk Add New Target i w otwartym oknie dialogowym podajemy numer IP komputera docelowego. Jeżeli jest to ten sam komputer wówczas tą opcję pomijamy. Wprowadzone zmiany należy zapisać przyciskiem Apply. Po określeniu wszystkich opcji przycisk Run zostaje uaktywniony i można uruchomić aplikację na target host. Po wykonaniu programu w oknie konsoli pojawia się tekst aplikacji. Stworzoną konfigurację można wykorzystać w przyszłości do uruchamiania aplikacji poprzez polecenie Run->Run As. Na czas wykonania aplikacji, plik binarny jest kopiowany na target host do kartoteki zdefiniowanej na karcie Upload okna dialogowego Run Configurations. Po wykonaniu programu plik binarny jest z target host usuwany. Pakiet QNX Momentics można wykorzystać do prostego zarządzania plikami i do wykonywania transferu plików między target host i development host. Połączenie z target host można nawiązać wybierając polecenie Window->Show View->Target Navigator. Po kliknięciu ikony New QNX Target pojawia się okno dialogowe pokazane na rysunku 5. Po nawiązaniu połączenia w oknie Target Navigator pojawia się podgląd procesów na target host (jednym z nich jest wspomniany już qconn). Więcej informacji o stanie systemu QNX można uzyskać wybierając perspektywę QNX System Information (Window->Open Perspective). System plików QNX zostanie wyświetlony po wybraniu polecenia Window->Show View->Target File System Navigator. Po otwarciu tego okna pliki projektu mogą być przenoszone z projektu do wybranej kartoteki na target host metodą przeciągnij i upuść. 50

51 Rys. 6 Operacje plikowe w oknie Target File System Navigator. 3. Stanowisko laboratoryjne Komputer PC z zainstalowanym środowiskiem programistycznym QNX Momentics oraz obrazem QNXNeutrino650Target. 4. Przebieg ćwiczenia Przed ćwiczeniem: - należy zapoznać się z podstawami dotyczącymi operacji na plikach oraz katalogach, a także ze sposobem przygotowania pakietu Momentics do pisania aplikacji na system QNX Ćwiczenie jest planowane jako 2-godzinne i obejmuje: 1. Poznanie funkcji systemu QNX jako maszyny wirtualnej. W tym celu należy: b) Zapoznać się z opcjami menu: * Utilities - File Manager - Terminal * Configure * Users 51

Systemy Czasu Rzeczywistego (SCR)

Systemy Czasu Rzeczywistego (SCR) Systemy Czasu Rzeczywistego (SCR) Wykład 14: System operacyjny czasu rzeczywistego w praktyce - przykładowa platforma sprzętowo-programowa ZL9AVR + Nut/OS SKiTI2017 WYDZIAŁ ELEKTROTECHNIKI I AUTOMATYKI

Bardziej szczegółowo

Politechnika Białostocka

Politechnika Białostocka Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: ELEKTRONIKA 2 Kod: ES1C400 026 ZASTOSOWANIA WYBRANYCH UKŁADÓW SCALONYCH

Bardziej szczegółowo

SYSTEMY CZASU RZECZYWISTEGO (SCR)

SYSTEMY CZASU RZECZYWISTEGO (SCR) 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

Bardziej szczegółowo

ZL9AVR. Płyta bazowa dla modułów ZL7AVR (ATmega128) i ZL1ETH (RTL8019)

ZL9AVR. Płyta bazowa dla modułów ZL7AVR (ATmega128) i ZL1ETH (RTL8019) ZL9AVR Płyta bazowa dla modułów ZL7AVR (ATmega128) i ZL1ETH (RTL8019) ZL9AVR to płyta bazowa umożliwiająca wykonywanie różnorodnych eksperymentów związanych z zastosowaniem mikrokontrolerów AVR w aplikacjach

Bardziej szczegółowo

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania Podstawowe kroki programowania zestawu uruchomieniowego ZL9AVR z systemem operacyjnym NutOS w środowisku

Bardziej szczegółowo

TECHNIKA MIKROPROCESOROWA

TECHNIKA MIKROPROCESOROWA LABORATORIUM TECHNIKA MIKROPROCESOROWA Port transmisji szeregowej USART ATmega Opracował: Tomasz Miłosławski 1. Cel ćwiczenia Celem ćwiczenia jest zapoznanie się ze sposobami komunikacji mikrokontrolera

Bardziej szczegółowo

PRZETWORNIK ADC w mikrokontrolerach Atmega16-32

PRZETWORNIK ADC w mikrokontrolerach Atmega16-32 Zachodniopomorski Uniwersytet Technologiczny WYDZIAŁ ELEKTRYCZNY Katedra Inżynierii Systemów, Sygnałów i Elektroniki LABORATORIUM TECHNIKA MIKROPROCESOROWA PRZETWORNIK ADC w mikrokontrolerach Atmega16-32

Bardziej szczegółowo

Instytut Teleinformatyki

Instytut Teleinformatyki Instytut Teleinformatyki Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska Mikroprocesory i Mikrokontrolery Zastosowanie przetwornika analogowo-cyfrowego do odczytywania napięcia z potencjometru

Bardziej szczegółowo

Komunikacja w mikrokontrolerach Laboratorium

Komunikacja w mikrokontrolerach Laboratorium Laboratorium Ćwiczenie 2 Magistrala UART Program ćwiczenia: konfiguracja transmisji danych między komputerem PC a mikrokontrolerem przy użyciu magistrali UART. Zagadnienia do przygotowania: podstawy programowania

Bardziej szczegółowo

dokument DOK 02-05-12 wersja 1.0 www.arskam.com

dokument DOK 02-05-12 wersja 1.0 www.arskam.com ARS3-RA v.1.0 mikro kod sterownika 8 Linii I/O ze zdalną transmisją kanałem radiowym lub poprzez port UART. Kod przeznaczony dla sprzętu opartego o projekt referencyjny DOK 01-05-12. Opis programowania

Bardziej szczegółowo

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania Podstawowe kroki programowania zestawu uruchomieniowego ZL9AVR z systemem operacyjnym NutOS w środowisku

Bardziej szczegółowo

Programowanie mikrokontrolerów. 8 listopada 2007

Programowanie mikrokontrolerów. 8 listopada 2007 Programowanie mikrokontrolerów Marcin Engel Marcin Peczarski 8 listopada 2007 Alfanumeryczny wyświetlacz LCD umożliwia wyświetlanie znaków ze zbioru będącego rozszerzeniem ASCII posiada zintegrowany sterownik

Bardziej szczegółowo

MODEL WARSTWOWY PROTOKOŁY TCP/IP

MODEL WARSTWOWY PROTOKOŁY TCP/IP MODEL WARSTWOWY PROTOKOŁY TCP/IP TCP/IP (ang. Transmission Control Protocol/Internet Protocol) protokół kontroli transmisji. Pakiet najbardziej rozpowszechnionych protokołów komunikacyjnych współczesnych

Bardziej szczegółowo

2. Architektura mikrokontrolerów PIC16F8x... 13

2. Architektura mikrokontrolerów PIC16F8x... 13 Spis treści 3 Spis treœci 1. Informacje wstępne... 9 2. Architektura mikrokontrolerów PIC16F8x... 13 2.1. Budowa wewnętrzna mikrokontrolerów PIC16F8x... 14 2.2. Napięcie zasilania... 17 2.3. Generator

Bardziej szczegółowo

LABORATORIUM - ELEKTRONIKA Układy mikroprocesorowe cz.2

LABORATORIUM - ELEKTRONIKA Układy mikroprocesorowe cz.2 LABORATORIUM - ELEKTRONIKA Układy mikroprocesorowe cz.2 1. Cel ćwiczenia Celem ćwiczenia jest pokazanie budowy systemów opartych na układach Arduino. W tej części nauczymy się podłączać różne czujników,

Bardziej szczegółowo

Wydział Elektryczny. Katedra Automatyki i Elektroniki. Instrukcja. do ćwiczeń laboratoryjnych z przedmiotu: SYSTEMY CYFROWE 1.

Wydział Elektryczny. Katedra Automatyki i Elektroniki. Instrukcja. do ćwiczeń laboratoryjnych z przedmiotu: SYSTEMY CYFROWE 1. Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: SYSTEMY CYFROWE 1 PAMIĘCI SZEREGOWE EEPROM Ćwiczenie 3 Opracował: dr inŝ.

Bardziej szczegółowo

Uproszczony schemat blokowy konwertera analogowo-cyfrowego przedstawiony został na rys.1.

Uproszczony schemat blokowy konwertera analogowo-cyfrowego przedstawiony został na rys.1. Dodatek D 1. Przetwornik analogowo-cyfrowy 1.1. Schemat blokowy Uproszczony schemat blokowy konwertera analogowo-cyfrowego przedstawiony został na rys.1. Rys. 1. Schemat blokowy przetwornika A/C Przetwornik

Bardziej szczegółowo

Zaliczenie Termin zaliczenia: Sala IE 415 Termin poprawkowy: > (informacja na stronie:

Zaliczenie Termin zaliczenia: Sala IE 415 Termin poprawkowy: > (informacja na stronie: Zaliczenie Termin zaliczenia: 14.06.2007 Sala IE 415 Termin poprawkowy: >18.06.2007 (informacja na stronie: http://neo.dmcs.p.lodz.pl/tm/index.html) 1 Współpraca procesora z urządzeniami peryferyjnymi

Bardziej szczegółowo

Protokoły sieciowe - TCP/IP

Protokoły sieciowe - TCP/IP Protokoły sieciowe Protokoły sieciowe - TCP/IP TCP/IP TCP/IP (Transmission Control Protocol / Internet Protocol) działa na sprzęcie rożnych producentów może współpracować z rożnymi protokołami warstwy

Bardziej szczegółowo

Komunikacja w mikrokontrolerach Laboratorium

Komunikacja w mikrokontrolerach Laboratorium Laboratorium Ćwiczenie 4 Magistrala SPI Program ćwiczenia: konfiguracja transmisji danych między mikrokontrolerem a cyfrowym czujnikiem oraz sterownikiem wyświetlaczy 7-segmentowych przy użyciu magistrali

Bardziej szczegółowo

STM32Butterfly2. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

STM32Butterfly2. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107 Zestaw uruchomieniowy dla mikrokontrolerów STM32F107 STM32Butterfly2 Zestaw STM32Butterfly2 jest platformą sprzętową pozwalającą poznać i przetestować możliwości mikrokontrolerów z rodziny STM32 Connectivity

Bardziej szczegółowo

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki

Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki ĆWICZENIE Nr 10 (3h) Implementacja interfejsu SPI w strukturze programowalnej Instrukcja pomocnicza do laboratorium z przedmiotu

Bardziej szczegółowo

Programowanie mikrokontrolerów AVR z rodziny ATmega.

Programowanie mikrokontrolerów AVR z rodziny ATmega. Programowanie mikrokontrolerów AVR z rodziny ATmega. Materiały pomocnicze Jakub Malewicz jakub.malewicz@pwr.wroc.pl Wszelkie prawa zastrzeżone. Kopiowanie w całości lub w częściach bez zgody i wiedzy autora

Bardziej szczegółowo

ZL25ARM. Płyta bazowa dla modułów diparm z mikrokontrolerami STR912. [rdzeń ARM966E-S]

ZL25ARM. Płyta bazowa dla modułów diparm z mikrokontrolerami STR912. [rdzeń ARM966E-S] ZL25ARM Płyta bazowa dla modułów diparm z mikrokontrolerami STR912 [rdzeń ARM966E-S] ZL25ARM to płyta bazowa umożliwiająca wykonywanie różnorodnych eksperymentów z mikrokontrolerami STR912 (ARM966E-S).

Bardziej szczegółowo

Programowanie mikrokontrolerów. 15 stycznia 2008

Programowanie mikrokontrolerów. 15 stycznia 2008 Programowanie mikrokontrolerów Marcin Engel Marcin Peczarski 15 stycznia 2008 RS232 Jeden z najstarszych interfejsów szeregowych Pierwotne przeznaczenie to łączenie terminali znakowych z komputerem, często

Bardziej szczegółowo

MOBOT-RCR v2 miniaturowe moduły radiowe Bezprzewodowa transmisja UART

MOBOT-RCR v2 miniaturowe moduły radiowe Bezprzewodowa transmisja UART MOBOT-RCR v2 miniaturowe moduły radiowe Bezprzewodowa transmisja UART Własności MOBOT-RCR v2a: - pasmo komunikacji: ISM 433MHz lub 868MHz - zasięg 50m 300m * - zasilanie: z USB, - interfejs wyjściowy:

Bardziej szczegółowo

Obsługa przetwornika ADC na mikrokontrolerze ATmega8 CEZARY KLIMASZ OBSŁUGA PRZETWORNIKA ADC NA MIKROKONTROLERZE ATMEGA8

Obsługa przetwornika ADC na mikrokontrolerze ATmega8 CEZARY KLIMASZ OBSŁUGA PRZETWORNIKA ADC NA MIKROKONTROLERZE ATMEGA8 OBSŁUGA PRZETWORNIKA ADC NA MIKROKONTROLERZE ATMEGA8 Opracowanie zawiera treści różnych publikacji takich jak: książki, datasheety, strony internetowe Cezary Klimasz Kraków 2008 1 Spis treści 1. Wprowadzenie...

Bardziej szczegółowo

Instytut Teleinformatyki

Instytut Teleinformatyki Instytut Teleinformatyki Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska Mikroprocesory i Mikrokontrolery System przerwań laboratorium: 11 autorzy: dr hab. Zbisław Tabor, prof. PK mgr inż.

Bardziej szczegółowo

Tytuł: Instrukcja obsługi Modułu Komunikacji internetowej MKi-sm TK / 3001 / 016 / 002. Wersja wykonania : wersja oprogramowania v.1.

Tytuł: Instrukcja obsługi Modułu Komunikacji internetowej MKi-sm TK / 3001 / 016 / 002. Wersja wykonania : wersja oprogramowania v.1. Zakład Elektronicznych Urządzeń Pomiarowych POZYTON sp. z o. o. 42-200 Częstochowa ul. Staszica 8 p o z y t o n tel. : (034) 361-38-32, 366-44-95, 364-88-82, 364-87-50, 364-87-82, 364-87-62 tel./fax: (034)

Bardziej szczegółowo

ZL9ARM płytka bazowa dla modułów diparm z mikrokontrolerami LPC213x/214x

ZL9ARM płytka bazowa dla modułów diparm z mikrokontrolerami LPC213x/214x ZL9ARM płytka bazowa dla modułów diparm z mikrokontrolerami LPC213x/214x ZL9ARM Płytka bazowa dla modułów diparm z mikrokontrolerami LPC213x/214x 1 ZL9ARM to uniwersalna płyta bazowa dla modułów diparm

Bardziej szczegółowo

Szkolenia specjalistyczne

Szkolenia specjalistyczne Szkolenia specjalistyczne AGENDA Programowanie mikrokontrolerów w języku C na przykładzie STM32F103ZE z rdzeniem Cortex-M3 GRYFTEC Embedded Systems ul. Niedziałkowskiego 24 71-410 Szczecin info@gryftec.com

Bardziej szczegółowo

Pracownia Transmisji Danych, Instytut Fizyki UMK, Toruń. Instrukcja do ćwiczenia nr 10. Transmisja szeregowa sieciami energetycznymi

Pracownia Transmisji Danych, Instytut Fizyki UMK, Toruń. Instrukcja do ćwiczenia nr 10. Transmisja szeregowa sieciami energetycznymi Pracownia Transmisji Danych, Instytut Fizyki UMK, Toruń Instrukcja do ćwiczenia nr 10 Transmisja szeregowa sieciami energetycznymi I. Cel ćwiczenia poznanie praktycznego wykorzystania standardu RS232C

Bardziej szczegółowo

Zarządzanie infrastrukturą sieciową Modele funkcjonowania sieci

Zarządzanie infrastrukturą sieciową Modele funkcjonowania sieci W miarę rozwoju sieci komputerowych pojawiały się różne rozwiązania organizujące elementy w sieć komputerową. W celu zapewnienia kompatybilności rozwiązań różnych producentów oraz opartych na różnych platformach

Bardziej szczegółowo

Obługa czujników do robota śledzącego linie. Michał Wendland 171628 15 czerwca 2011

Obługa czujników do robota śledzącego linie. Michał Wendland 171628 15 czerwca 2011 Obługa czujników do robota śledzącego linie. Michał Wendland 171628 15 czerwca 2011 1 Spis treści 1 Charakterystyka projektu. 3 2 Schematy układów elektronicznych. 3 2.1 Moduł czujników.................................

Bardziej szczegółowo

Wstęp...9. 1. Architektura... 13

Wstęp...9. 1. Architektura... 13 Spis treści 3 Wstęp...9 1. Architektura... 13 1.1. Schemat blokowy...14 1.2. Pamięć programu...15 1.3. Cykl maszynowy...16 1.4. Licznik rozkazów...17 1.5. Stos...18 1.6. Modyfikowanie i odtwarzanie zawartości

Bardziej szczegółowo

MultiTool instrukcja użytkownika 2010 SFAR

MultiTool instrukcja użytkownika 2010 SFAR MultiTool instrukcja użytkownika 2010 SFAR Tytuł dokumentu: MultiTool instrukcja użytkownika Wersja dokumentu: V1.0 Data: 21.06.2010 Wersja urządzenia którego dotyczy dokumentacja: MultiTool ver. 1.00

Bardziej szczegółowo

Poradnik programowania procesorów AVR na przykładzie ATMEGA8

Poradnik programowania procesorów AVR na przykładzie ATMEGA8 Poradnik programowania procesorów AVR na przykładzie ATMEGA8 Wersja 1.0 Tomasz Pachołek 2017-13-03 Opracowanie zawiera opis podstawowych procedur, funkcji, operatorów w języku C dla mikrokontrolerów AVR

Bardziej szczegółowo

Kod produktu: MP-W7100A-RS232

Kod produktu: MP-W7100A-RS232 KONWERTER RS232 - TCP/IP ETHERNET NA BAZIE W7100A FIRMY WIZNET MP-W7100A-RS232 jest gotowym do zastosowania konwerterem standardu RS232 na TCP/IP Ethernet (serwer portu szeregowego). Umożliwia bezpośrednie

Bardziej szczegółowo

ZL8AVR. Płyta bazowa dla modułów dipavr

ZL8AVR. Płyta bazowa dla modułów dipavr ZL8AVR Płyta bazowa dla modułów dipavr Zestaw ZL8AVR to płyta bazowa dla modułów dipavr (np. ZL7AVR z mikrokontrolerem ATmega128 lub ZL12AVR z mikrokontrolerem ATmega16. Wyposażono ją w wiele klasycznych

Bardziej szczegółowo

Przesyłania danych przez protokół TCP/IP

Przesyłania danych przez protokół TCP/IP Przesyłania danych przez protokół TCP/IP PAKIETY Protokół TCP/IP transmituje dane przez sieć, dzieląc je na mniejsze porcje, zwane pakietami. Pakiety są często określane różnymi terminami, w zależności

Bardziej szczegółowo

1.Wstęp. 2.Generowanie systemu w EDK

1.Wstęp. 2.Generowanie systemu w EDK 1.Wstęp Celem niniejszego ćwiczenia jest zapoznanie z możliwościami debuggowania kodu na platformie MicroBlaze oraz zapoznanie ze środowiskiem wspomagającym prace programisty Xilinx Platform SDK (Eclipse).

Bardziej szczegółowo

Wbudowane układy peryferyjne cz. 3 Wykład 9

Wbudowane układy peryferyjne cz. 3 Wykład 9 Wbudowane układy peryferyjne cz. 3 Wykład 9 Komparator analogowy Komparator analogowy 2 Komparator analogowy Pozwala porównać napięcia na wejściu dodatnim i ujemnym Przerwanie może być wywołane obniżeniem

Bardziej szczegółowo

MiniModbus 4DO. Moduł rozszerzający 4 wyjścia cyfrowe. Wyprodukowano dla. Instrukcja użytkownika

MiniModbus 4DO. Moduł rozszerzający 4 wyjścia cyfrowe. Wyprodukowano dla. Instrukcja użytkownika Wersja 1.1 Wyprodukowano dla Dziękujemy za wybór naszego produktu. Niniejsza instrukcja ułatwi Państwu prawidłową obsługę i poprawną eksploatację opisywanego urządzenia. Informacje zawarte w niniejszej

Bardziej szczegółowo

Konwerter Transmisji KT-02

Konwerter Transmisji KT-02 EL-TEC Sp. z o.o. e-mail: info@el-tec.com.pl http://www.el-tec.com.pl Konwerter Transmisji KT-02 Dokumentacja Techniczno Ruchowa Spis treści 1. Opis działania...3 1.1. Dane techniczne...4 1.2. Instalacje

Bardziej szczegółowo

Kod produktu: MP-W7100A-RS485

Kod produktu: MP-W7100A-RS485 KONWERTER RS485/422 - TCP/IP ETHERNET NA BAZIE W7100A FIRMY WIZNET MP-W7100A-RS485 jest gotowym do zastosowania konwerterem standardu RS485 lub RS422 na TCP/IP Ethernet. Umożliwia bezpośrednie podłączenie

Bardziej szczegółowo

Plan wykładu. 1. Sieć komputerowa 2. Rodzaje sieci 3. Topologie sieci 4. Karta sieciowa 5. Protokoły używane w sieciach LAN 6.

Plan wykładu. 1. Sieć komputerowa 2. Rodzaje sieci 3. Topologie sieci 4. Karta sieciowa 5. Protokoły używane w sieciach LAN 6. Plan wykładu 1. Sieć komputerowa 2. Rodzaje sieci 3. Topologie sieci 4. Karta sieciowa 5. Protokoły używane w sieciach LAN 6. Modem analogowy Sieć komputerowa Siecią komputerową nazywa się grupę komputerów

Bardziej szczegółowo

STM32 Butterfly. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107

STM32 Butterfly. Zestaw uruchomieniowy dla mikrokontrolerów STM32F107 Zestaw uruchomieniowy dla mikrokontrolerów STM32F107 STM32 Butterfly Zestaw STM32 Butterfly jest platformą sprzętową pozwalającą poznać i przetestować możliwości mikrokontrolerów z rodziny STM32 Connectivity

Bardziej szczegółowo

Systemy Czasu Rzeczywistego (SCR)

Systemy Czasu Rzeczywistego (SCR) Systemy Czasu Rzeczywistego (SCR) System operacyjny czasu rzeczywistego w praktyce: - przykładowa platforma sprzętowo-programowa ZL9AVR+ Nut/OS Politechnika Gdańska Wydział Elektrotechniki i Automatyki

Bardziej szczegółowo

SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701. SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701.

SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701. SigmaDSP - zestaw uruchomieniowy dla procesora ADAU1701. SigmaDSP - zestaw uruchomieniowy. SigmaDSP jest niedrogim zestawem uruchomieniowym dla procesora DSP ADAU1701 z rodziny SigmaDSP firmy Analog Devices, który wraz z programatorem USBi i darmowym środowiskiem

Bardziej szczegółowo

Systemy Wbudowane. Założenia i cele przedmiotu: Określenie przedmiotów wprowadzających wraz z wymaganiami wstępnymi: Opis form zajęć

Systemy Wbudowane. Założenia i cele przedmiotu: Określenie przedmiotów wprowadzających wraz z wymaganiami wstępnymi: Opis form zajęć Systemy Wbudowane Kod przedmiotu: SW Rodzaj przedmiotu: kierunkowy ; obowiązkowy Wydział: Informatyki Kierunek: Informatyka Specjalność (specjalizacja): - Poziom studiów: pierwszego stopnia Profil studiów:

Bardziej szczegółowo

Wizualizacja stanu czujników robota mobilnego. Sprawozdanie z wykonania projektu.

Wizualizacja stanu czujników robota mobilnego. Sprawozdanie z wykonania projektu. Wizualizacja stanu czujników robota mobilnego. Sprawozdanie z wykonania projektu. Maciek Słomka 4 czerwca 2006 1 Celprojektu. Celem projektu było zbudowanie modułu umożliwiającego wizualizację stanu czujników

Bardziej szczegółowo

Kod produktu: MP01105

Kod produktu: MP01105 MODUŁ INTERFEJSU KONTROLNO-POMIAROWEGO DLA MODUŁÓW Urządzenie stanowi bardzo łatwy do zastosowania gotowy interfejs kontrolno-pomiarowy do podłączenia modułów takich jak czujniki temperatury, moduły przekaźnikowe,

Bardziej szczegółowo

1. Wprowadzenie Programowanie mikrokontrolerów Sprzęt i oprogramowanie... 33

1. Wprowadzenie Programowanie mikrokontrolerów Sprzęt i oprogramowanie... 33 Spis treści 3 1. Wprowadzenie...11 1.1. Wstęp...12 1.2. Mikrokontrolery rodziny ARM...13 1.3. Architektura rdzenia ARM Cortex-M3...15 1.3.1. Najważniejsze cechy architektury Cortex-M3... 15 1.3.2. Rejestry

Bardziej szczegółowo

Zestaw przedłużacza, 4K HDMI HDBaseT, 70 m

Zestaw przedłużacza, 4K HDMI HDBaseT, 70 m Zestaw przedłużacza, 4K HDMI HDBaseT, 70 m Instrukcja obsługi DS-55503 Przed instalacją i obsługą urządzenia należy dokładnie zapoznać się z poniższymi zaleceniami dotyczącymi bezpieczeństwa: 1. Należy

Bardziej szczegółowo

Zestaw przedłużacza, 4K HDMI HDBaseT, 100 m

Zestaw przedłużacza, 4K HDMI HDBaseT, 100 m Zestaw przedłużacza, 4K HDMI HDBaseT, 100 m Instrukcja obsługi DS-55504 Przed instalacją i obsługą urządzenia należy dokładnie zapoznać się z poniższymi zaleceniami dotyczącymi bezpieczeństwa: 1. Należy

Bardziej szczegółowo

LEKCJA TEMAT: Zasada działania komputera.

LEKCJA TEMAT: Zasada działania komputera. LEKCJA TEMAT: Zasada działania komputera. 1. Ogólna budowa komputera Rys. Ogólna budowa komputera. 2. Komputer składa się z czterech głównych składników: procesor (jednostka centralna, CPU) steruje działaniem

Bardziej szczegółowo

ZL2AVR. Zestaw uruchomieniowy z mikrokontrolerem ATmega8

ZL2AVR. Zestaw uruchomieniowy z mikrokontrolerem ATmega8 ZL2AVR Zestaw uruchomieniowy z mikrokontrolerem ATmega8 ZL2AVR jest uniwersalnym zestawem uruchomieniowym dla mikrokontrolerów ATmega8 (oraz innych w obudowie 28-wyprowadzeniowej). Dzięki wyposażeniu w

Bardziej szczegółowo

Sprawozdanie z projektu MARM. Część druga Specyfikacja końcowa. Prowadzący: dr. Mariusz Suchenek. Autor: Dawid Kołcz. Data: r.

Sprawozdanie z projektu MARM. Część druga Specyfikacja końcowa. Prowadzący: dr. Mariusz Suchenek. Autor: Dawid Kołcz. Data: r. Sprawozdanie z projektu MARM Część druga Specyfikacja końcowa Prowadzący: dr. Mariusz Suchenek Autor: Dawid Kołcz Data: 01.02.16r. 1. Temat pracy: Układ diagnozujący układ tworzony jako praca magisterska.

Bardziej szczegółowo

WIZUALIZACJA DANYCH SENSORYCZNYCH Sprawozdanie z wykonanego projektu. Jakub Stanisz

WIZUALIZACJA DANYCH SENSORYCZNYCH Sprawozdanie z wykonanego projektu. Jakub Stanisz WIZUALIZACJA DANYCH SENSORYCZNYCH Sprawozdanie z wykonanego projektu Jakub Stanisz 19 czerwca 2008 1 Wstęp Celem mojego projektu było stworzenie dalmierza, opierającego się na czujniku PSD. Zadaniem dalmierza

Bardziej szczegółowo

Mikroprocesory i mikrosterowniki Wydział Elektroniki Mikrosystemów i Fotoniki Politechniki Wrocławskiej Ćwiczenie nr 4

Mikroprocesory i mikrosterowniki Wydział Elektroniki Mikrosystemów i Fotoniki Politechniki Wrocławskiej Ćwiczenie nr 4 1 Ćwiczenie nr 4 Program ćwiczenia: Interfejs szeregowy SPI obsługa sterownika ośmiopozycyjnego, 7-segmentowego wyświetlacza LED Interfejs szeregowy USART, komunikacja mikrokontrolera z komputerem PC.

Bardziej szczegółowo

Kod produktu: MP01105T

Kod produktu: MP01105T MODUŁ INTERFEJSU DO POMIARU TEMPERATURY W STANDARDZIE Właściwości: Urządzenie stanowi bardzo łatwy do zastosowania gotowy interfejs do podłączenia max. 50 czujników temperatury typu DS18B20 (np. gotowe

Bardziej szczegółowo

Moduł Ethernetowy. instrukcja obsługi. Spis treści

Moduł Ethernetowy. instrukcja obsługi. Spis treści Moduł Ethernetowy instrukcja obsługi Spis treści 1. Podstawowe informacje...2 2. Konfiguracja modułu...4 3. Podłączenie do sieci RS-485 i LAN/WAN...9 4. Przywracanie ustawień fabrycznych...11 www.el-piast.com

Bardziej szczegółowo

Zastosowanie procesorów AVR firmy ATMEL w cyfrowych pomiarach częstotliwości

Zastosowanie procesorów AVR firmy ATMEL w cyfrowych pomiarach częstotliwości Politechnika Lubelska Wydział Elektrotechniki i Informatyki PRACA DYPLOMOWA MAGISTERSKA Zastosowanie procesorów AVR firmy ATMEL w cyfrowych pomiarach częstotliwości Marcin Narel Promotor: dr inż. Eligiusz

Bardziej szczegółowo

Model sieci OSI, protokoły sieciowe, adresy IP

Model sieci OSI, protokoły sieciowe, adresy IP Model sieci OSI, protokoły sieciowe, adresy IP Podstawę działania internetu stanowi zestaw protokołów komunikacyjnych TCP/IP. Wiele z używanych obecnie protokołów zostało opartych na czterowarstwowym modelu

Bardziej szczegółowo

Moduł przełączania temperatury Nr produktu

Moduł przełączania temperatury Nr produktu INSTRUKCJA OBSŁUGI Moduł przełączania temperatury Nr produktu 000126609 Strona 1 z 5 MODUŁ PRZEŁĄCZANIA TEMPERATURY Nr produktu 12 66 09 TCM 220 Nr produktu 12 66 96 TCM 320 Przeznaczenie do użycia Produkt

Bardziej szczegółowo

ZL16AVR. Zestaw uruchomieniowy dla mikrokontrolerów ATmega8/48/88/168

ZL16AVR. Zestaw uruchomieniowy dla mikrokontrolerów ATmega8/48/88/168 ZL16AVR Zestaw uruchomieniowy dla mikrokontrolerów ATmega8/48/88/168 ZL16AVR jest uniwersalnym zestawem uruchomieniowym dla mikrokontrolerówavr w obudowie 28-wyprowadzeniowej (ATmega8/48/88/168). Dzięki

Bardziej szczegółowo

AVR DRAGON. INSTRUKCJA OBSŁUGI (wersja 1.0)

AVR DRAGON. INSTRUKCJA OBSŁUGI (wersja 1.0) AVR DRAGON INSTRUKCJA OBSŁUGI (wersja 1.0) ROZDZIAŁ 1. WSTĘP... 3 ROZDZIAŁ 2. ROZPOCZĘCIE PRACY Z AVR DRAGON... 5 ROZDZIAŁ 3. PROGRAMOWANIE... 8 ROZDZIAŁ 4. DEBUGOWANIE... 10 ROZDZIAŁ 5. SCHEMATY PODŁĄCZEŃ

Bardziej szczegółowo

4 Transmisja szeregowa na przykładzie komunikacji dwukierunkowej z komputerem PC, obsługa wyświetlacza LCD.

4 Transmisja szeregowa na przykładzie komunikacji dwukierunkowej z komputerem PC, obsługa wyświetlacza LCD. 13 4 Transmisja szeregowa na przykładzie komunikacji dwukierunkowej z komputerem PC, obsługa wyświetlacza LCD. Zagadnienia do przygotowania: - budowa i działanie interfejsu szeregowego UART, - tryby pracy,

Bardziej szczegółowo

o Instalacja środowiska programistycznego (18) o Blink (18) o Zasilanie (21) o Złącza zasilania (22) o Wejścia analogowe (22) o Złącza cyfrowe (22)

o Instalacja środowiska programistycznego (18) o Blink (18) o Zasilanie (21) o Złącza zasilania (22) o Wejścia analogowe (22) o Złącza cyfrowe (22) O autorze (9) Podziękowania (10) Wstęp (11) Pobieranie przykładów (12) Czego będę potrzebował? (12) Korzystanie z tej książki (12) Rozdział 1. Programowanie Arduino (15) Czym jest Arduino (15) Instalacja

Bardziej szczegółowo

1. Cel ćwiczenia. Celem ćwiczenia jest zestawienie połączenia pomiędzy dwoma sterownikami PLC za pomocą protokołu Modbus RTU.

1. Cel ćwiczenia. Celem ćwiczenia jest zestawienie połączenia pomiędzy dwoma sterownikami PLC za pomocą protokołu Modbus RTU. 1. Cel ćwiczenia Celem ćwiczenia jest zestawienie połączenia pomiędzy dwoma sterownikami PLC za pomocą protokołu Modbus RTU. 2. Porty szeregowe w sterowniku VersaMax Micro Obydwa porty szeregowe sterownika

Bardziej szczegółowo

Terminal TR01. Terminal jest przeznaczony do montażu naściennego w czystych i suchych pomieszczeniach.

Terminal TR01. Terminal jest przeznaczony do montażu naściennego w czystych i suchych pomieszczeniach. Terminal TR01 Terminal jest m, umożliwiającym odczyt i zmianę nastaw parametrów, stanów wejść i wyjść współpracujących z nim urządzeń automatycznej regulacji wyposażonych w port komunikacyjny lub i obsługujących

Bardziej szczegółowo

Viper Linux Lite, oprogramowanie Linux

Viper Linux Lite, oprogramowanie Linux Viper Linux Lite, oprogramowanie Linux Opis ćwiczenia: Celem dwiczenia jest zapoznanie się z komputerem Viper PC 104 z zainstalowanym Linuxem. Podstawą będzie zapoznanie się z samym urządzeniem komputera

Bardziej szczegółowo

Programowanie mikrokontrolerów AVR z rodziny ATmega.

Programowanie mikrokontrolerów AVR z rodziny ATmega. Programowanie mikrokontrolerów AVR z rodziny ATmega. Materiały pomocnicze Jakub Malewicz jakub.malewicz@pwr.wroc.pl Wszelkie prawa zastrzeżone. Kopiowanie w całości lub w częściach bez zgody i wiedzy autora

Bardziej szczegółowo

ZL15AVR. Zestaw uruchomieniowy dla mikrokontrolerów ATmega32

ZL15AVR. Zestaw uruchomieniowy dla mikrokontrolerów ATmega32 ZL15AVR Zestaw uruchomieniowy dla mikrokontrolerów ATmega32 ZL15AVR jest uniwersalnym zestawem uruchomieniowym dla mikrokontrolerów ATmega32 (oraz innych w obudowie 40-wyprowadzeniowej). Dzięki wyposażeniu

Bardziej szczegółowo

Parametryzacja przetworników analogowocyfrowych

Parametryzacja przetworników analogowocyfrowych Parametryzacja przetworników analogowocyfrowych wersja: 05.2015 1. Cel ćwiczenia Celem ćwiczenia jest zaprezentowanie istoty działania przetworników analogowo-cyfrowych (ADC analog-to-digital converter),

Bardziej szczegółowo

Konwerter Transmisji KT-01

Konwerter Transmisji KT-01 EL-TEC Sp. z o.o. e-mail: info@el-tec.com.pl http://www.el-tec.com.pl Konwerter Transmisji KT-01 Dokumentacja Techniczno Ruchowa Spis Treści 1. Opis działania... 3 1.1. Podstawowe cechy:... 3 1.2. Dane

Bardziej szczegółowo

Moduł CNT020. Przeznaczenie. Oprogramowanie i użyteczne właściwości modułu

Moduł CNT020. Przeznaczenie. Oprogramowanie i użyteczne właściwości modułu Moduł CNT020 9 wejść licznikowych 24V DC Interfejs komunikacyjny: RS-485 Kontrolki LED stanu wejść i wyjść na płycie czołowej Zasilanie 24V DC / 60mA Bezpłatny i w pełni udokumentowany protokół komunikacji

Bardziej szczegółowo

1.10 MODUŁY KOMUNIKACYJNE

1.10 MODUŁY KOMUNIKACYJNE ASTOR GE INTELLIGENT PLATFORMS - VERSAMAX NANO/MICRO 1.10 MODUŁY KOMUNIKACYJNE IC200SET001 konwerter łącza RS (RS232 lub RS485) na Ethernet (10/100Mbit), obsługiwane protokoły: SRTP, Modbus TCP IC200USB001

Bardziej szczegółowo

Politechnika Wrocławska

Politechnika Wrocławska Politechnika Wrocławska Instytut Cybernetyki Technicznej Wizualizacja Danych Sensorycznych Projekt Kompas Elektroniczny Prowadzący: dr inż. Bogdan Kreczmer Wykonali: Tomasz Salamon Paweł Chojnowski Wrocław,

Bardziej szczegółowo

Politechnika Białostocka

Politechnika Białostocka Politechnika Białostocka Wydział Elektryczny Katedra Automatyki i Elektroniki Kod przedmiotu: TS1C 622 388 Instrukcja do ćwiczeń laboratoryjnych z przedmiotu: Elektronika samochodowa Temat: Programowanie

Bardziej szczegółowo

Kod produktu: MP-BTM222-5V

Kod produktu: MP-BTM222-5V Moduł interfejsu Bluetooth na bazie BTM-222, sterowany komendami AT, poziom napięć TTL 5V Urządzenie zbudowano w oparciu o moduł transmisyjny Bluetooth typu BTM-222 firmy Rayson, umożliwiający zasięg bezprzewodowy

Bardziej szczegółowo

RSD Uniwersalny rejestrator danych Zaprojektowany do pracy w przemyśle

RSD Uniwersalny rejestrator danych Zaprojektowany do pracy w przemyśle Uniwersalny rejestrator danych pochodzących z portu szeregowego RS 232 Uniwersalny rejestrator danych Zaprojektowany do pracy w przemyśle - UNIWERSALNY REJESTRATOR DANYCH Max. 35 GB pamięci! to nowoczesne

Bardziej szczegółowo

Mikroprocesory i Mikrosterowniki Analog-Digital Converter Konwerter Analogowo-Cyfrowy

Mikroprocesory i Mikrosterowniki Analog-Digital Converter Konwerter Analogowo-Cyfrowy Mikroprocesory i Mikrosterowniki Analog-Digital Converter Konwerter Analogowo-Cyfrowy Wydział Elektroniki Mikrosystemów i Fotoniki dr inż. Piotr Markowski Na prawach rękopisu. Na podstawie dokumentacji

Bardziej szczegółowo

TECHNIKA MIKROPROCESOROWA II

TECHNIKA MIKROPROCESOROWA II Akademia Górniczo-Hutnicza im. Stanisława Staszica w Krakowie Wydział IEiT Katedra Elektroniki TECHNIKA MIKROPROCESOROWA II LAB 6 Moduł UART - współpraca z komputerem poprzez BlueTooth Mariusz Sokołowski

Bardziej szczegółowo

Moduł MUU020. Przeznaczenie. Oprogramowanie i użyteczne właściwości modułu

Moduł MUU020. Przeznaczenie. Oprogramowanie i użyteczne właściwości modułu Moduł MUU020 16 wejść analogowych 4-20mA 1 wejście licznikowe 24V DC Interfejs komunikacyjny: RS-485 Kontrolki LED stanu wejść i na płycie czołowej Zasilanie 24V DC / 100mA Bezpłatny i w pełni udokumentowany

Bardziej szczegółowo

ZL11ARM. Uniwersalna płytka bazowa dla modułów diparm

ZL11ARM. Uniwersalna płytka bazowa dla modułów diparm ZL11ARM Uniwersalna płytka bazowa dla modułów diparm ZL11ARM to uniwersalna płyta bazowa dla modułów diparm (np. ZL12ARM i ZL19ARM) z mikrokontrolerami wyposażonymi w rdzenie ARM produkowanymi przez różnych

Bardziej szczegółowo

Ćwiczenie 5 Zegar czasu rzeczywistego na mikrokontrolerze AT90S8515

Ćwiczenie 5 Zegar czasu rzeczywistego na mikrokontrolerze AT90S8515 Laboratorium Techniki Mikroprocesorowej Informatyka studia dzienne Ćwiczenie 5 Zegar czasu rzeczywistego na mikrokontrolerze AT90S8515 Cel ćwiczenia Celem ćwiczenia jest poznanie możliwości nowoczesnych

Bardziej szczegółowo

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne

Spis treœci. Co to jest mikrokontroler? Kody i liczby stosowane w systemach komputerowych. Podstawowe elementy logiczne Spis treści 5 Spis treœci Co to jest mikrokontroler? Wprowadzenie... 11 Budowa systemu komputerowego... 12 Wejścia systemu komputerowego... 12 Wyjścia systemu komputerowego... 13 Jednostka centralna (CPU)...

Bardziej szczegółowo

2.1 Przesył danych między procesorem a tabelą zmiennych

2.1 Przesył danych między procesorem a tabelą zmiennych 1 Wstęp...1 2 Jak aplikacja obsługuje procesory?...2 2.1 Przesył danych między procesorem a tabelą zmiennych...2 2.2 Polecenia wysyłane do procesorów...2 3 Podstawowe peryferia procesora HallChip...3 3.1

Bardziej szczegółowo

Hardware mikrokontrolera X51

Hardware mikrokontrolera X51 Hardware mikrokontrolera X51 Ryszard J. Barczyński, 2016 Politechnika Gdańska, Wydział FTiMS, Katedra Fizyki Ciała Stałego Materiały dydaktyczne do użytku wewnętrznego Hardware mikrokontrolera X51 (zegar)

Bardziej szczegółowo

Instytut Teleinformatyki

Instytut Teleinformatyki Instytut Teleinformatyki Wydział Fizyki, Matematyki i Informatyki Politechnika Krakowska Mikroprocesory i Mikrokontrolery Dostęp do portów mikrokontrolera ATmega32 język C laboratorium: 10 autorzy: dr

Bardziej szczegółowo

Instrukcja dla: Icomsat v1.0 SIM900 GSM/GPRS shield for Arduino oraz dla GPRS Shield produkcji Seeedstudio.

Instrukcja dla: Icomsat v1.0 SIM900 GSM/GPRS shield for Arduino oraz dla GPRS Shield produkcji Seeedstudio. Instrukcja dla: Icomsat v1.0 SIM900 GSM/GPRS shield for Arduino oraz dla GPRS Shield produkcji Seeedstudio. IComsat jest to shield GSM/GPRS współpracujący z Arduino oparty o moduł SIM900 firmy SIMCOM.

Bardziej szczegółowo

E-TRONIX Sterownik Uniwersalny SU 1.2

E-TRONIX Sterownik Uniwersalny SU 1.2 Obudowa. Obudowa umożliwia montaż sterownika na szynie DIN. Na panelu sterownika znajduje się wyświetlacz LCD 16x2, sygnalizacja LED stanu wejść cyfrowych (LED IN) i wyjść logicznych (LED OUT) oraz klawiatura

Bardziej szczegółowo

2.1 Porównanie procesorów

2.1 Porównanie procesorów 1 Wstęp...1 2 Charakterystyka procesorów...1 2.1 Porównanie procesorów...1 2.2 Wejścia analogowe...1 2.3 Termometry cyfrowe...1 2.4 Wyjścia PWM...1 2.5 Odbiornik RC5...1 2.6 Licznik / Miernik...1 2.7 Generator...2

Bardziej szczegółowo

Zastosowania mikrokontrolerów w przemyśle

Zastosowania mikrokontrolerów w przemyśle Zastosowania mikrokontrolerów w przemyśle Cezary MAJ Katedra Mikroelektroniki i Technik Informatycznych Interfejsy komunikacyjne Interfejs Urządzenie elektroniczne lub optyczne pozwalające na komunikację

Bardziej szczegółowo

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX)

SYSTEMY OPERACYJNE: STRUKTURY I FUNKCJE (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX) (opracowano na podstawie skryptu PP: Królikowski Z., Sajkowski M. 1992: Użytkowanie systemu operacyjnego UNIX) W informatyce występują ściśle obok siebie dwa pojęcia: sprzęt (ang. hardware) i oprogramowanie

Bardziej szczegółowo

Start Bity Bit Stop 1 Bit 0 1 2 3 4 5 6 7 Par. 1 2. Rys. 1

Start Bity Bit Stop 1 Bit 0 1 2 3 4 5 6 7 Par. 1 2. Rys. 1 Temat: Obsługa portu komunikacji szeregowej RS232 w systemie STRC51. Ćwiczenie 2. (sd) 1.Wprowadzenie do komunikacji szeregowej RS232 Systemy bazujące na procesorach C51 mogą komunikować się za pomocą

Bardziej szczegółowo

Zestaw Startowy EvB. Więcej informacji na stronie: http://and-tech.pl/zestaw-evb-5-1/

Zestaw Startowy EvB. Więcej informacji na stronie: http://and-tech.pl/zestaw-evb-5-1/ Zestaw Startowy EvB Zestaw startowy EvB 5.1 z mikrokontrolerem ATMega32 jest jednym z najbardziej rozbudowanych zestawów dostępnych na rynku. Został zaprojektowany nie tylko z myślą o początkujących adeptach

Bardziej szczegółowo

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania

Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania Politechnika Gdańska Wydział Elektrotechniki i Automatyki Katedra Inżynierii Systemów Sterowania Opis stanowiska laboratoryjnego do projektowania i weryfikacji algorytmów sterujących autonomicznych pojazdów

Bardziej szczegółowo

Moduł Ethernetowy EL-ETH. Instrukcja obsługi

Moduł Ethernetowy EL-ETH. Instrukcja obsługi Moduł Ethernetowy EL-ETH Instrukcja obsługi Spis treści 1. Dane techniczne... 3 2. Opis złącz... 3 3. Elementy interfejsu... 3 4. Przykładowy schemat podłączenia modułu do sterownika PLC... 3 5. Ustawienia

Bardziej szczegółowo