Materiały dydaktyczne dla przedmiotu „Systemy Mikroprocesorowe
Transkrypt
Materiały dydaktyczne dla przedmiotu „Systemy Mikroprocesorowe
!"$& ''( !"#$ %&$'(*+ & *#, # % Laboratorium przedmiotu Systemy Mikroprocesorowe ćw. 5: Układy transmisji szeregowej Wprowadzenie: Przesyłanie danych w postaci szeregowej jest często wykorzystywane w rozproszonych systemach pomiarowych, lokalnych sieciach komputerowych oraz przy transmisji danych na duże odległości. Bity każdego słowa jak i poszczególne słowa przesyłane są kolejno, czyli szeregowo. Jednym z przykładowych standardów tej transmisji jest wprowadzony w 1969 roku przez Electronic Industries Association RS-232C, przeznaczony do komunikacji na niewielkie odległości. Standard RS232C: Standard został wprowadzony w celu normalizacji interfejsu pomiędzy terminalem (DTE) a modemem (DCE), jednak jest szeroko stosowany w szeregowej transmisji danych pomiędzy różnymi typami urządzeń DTE. Definiuje się 2 rodzaje transmisji: asynchroniczną i synchroniczną. Transmisja Asynchroniczna pozwala na przesyłanie pojedynczych znaków w określonym formacie. Ramka składa się z bitu startu, następnie z danych (5-8 bitów), potem opcjonalny bit kontrolny (parzystości) oraz 1 albo 2 bity stopu. Przesyłanie danych odbywa się od bitu najmniej znaczącego (LSB - Least Significant Bit) do bitu najbardziej znaczącego (MSB). W ramach ramki przesyłane bity są wysyłane synchronicznie z zegarem nadajnika oraz odbierane przez odbiornik który jest taktowany innym zegarem pracującym z taką samą częstotliwością. Sygnał zegarowy nie jest przesyłany wraz z danymi a przedział czasu pomiędzy ramkami jest nieokreślony. Transmisja Synchroniczna polega na przesyłaniu bloków danych . Do synchronizacji i regulacji przepływu używa się sygnału zegarowego wysyłanego przez nadajnik a odbieranego przez odbiornik wraz z transmisją danych. Przesyłanie danych odbywa się od bitu najbardziej znaczącego (MSB) do bitu najmniej znaczącego (LSB). Do transmisji synchronicznej w jednym kierunku wymagany jest sygnał danych i sygnał zegarowy. Tryby transmisji danych: Simplex – jeden terminal przesyła informacje, a drugi je odbiera (ale sam nic nie transmituje); Half-Duplex – niejednoczesna transmisja dwukierunkowa pomiędzy terminalami; Full-Duplex – możliwa jednoczesna transmisja dwukierunkowa pomiędzy terminalami; Adresacja w komputerze PC: Urządzenie logiczne (DOS) COM1 COM2 COM3 COM4 Obszar adresowy (szesnastkowo) 03F8...03FF 02F8...02FF 03E8...03EF 02E8...02EF Przerwanie 4 3 4 3 Zestaw rejestrów obsługujących łącze RS232C (przesunięcie względem adresu bazowego): A2 0 0 0 0 0 0 0 1 1 1 A1 0 0 0 0 0 1 1 0 0 1 A0 0 0 0 1 1 0 1 0 1 0 Nazwa rejestru bufor nadajnika bufor odbiornika mniej znaczący bajt podzielnika rejestr aktywacji przerwań bardziej znaczący bajt podzielnika rejestr identyfikacji przerwań rejestr parametrów transmisji LCR rejestr sterowania modemu MCR rejestr stanu transmisji LSR rejestr stanu modemu MSR Uwagi tylko zapis przy LCR7=0 tylko odczytprzy LCR7=0 LCR7=1 LCR7=0 LCR7=1 tylko do odczytu LCR7 oznacza bit numer 7 rejestru sterowania transmisji, który jest rozszerzeniem adresu A2, A1, A0. Ustalenie prędkości transmisji polega na ustawieniu programowalnego dzielnika częstotliwości bazowej (115200 Hz), co daje możliwość uzyskania maksymalnie transmisji 115200 bodów (dla dzielnika 1). Rejestr podzielnika jest 16 bitowy i dostępny wówczas, gdy ustawiony jest bit LCR7. Typowe prędkości transmisji to 1200 (dzielnik 96), 2400 (dzielnik 48), 4800 (dzielnik 24), 9600 (dzielnik 12), 19200 bodów (dzielnik 6). Rejestr parametrów transmisji (LCR) Nr. bitu 1, 0 Funkcja Długość słowa Wartość 00 01 10 11 Znaczenie 5 bitów/słowo 6 bitów/słowo 7 bitów/słowo 8 bitów/słowo 2 Bity stopu 0 1 1 bit stopu 1,5 bitu, gdy słowo 5 bitowe 2 bity w innym przypadku 4, 3 Parzystość X0 01 11 bez parzystości bit nieparzystości bit parzystości 5 Odwrócenie parzystości 0 1 normalna parzystość zanegowana parzystość 6 Sygnał przerwania 0 transmisji (break) 1 normalna praca wyjścia szeregowego wymuszenie stanu 0 na wyjściu szer. 7 Rozszerzenie adresu bit LCR7 Rejestr stanu transmisji (LSR) Nr. bitu 0 1 2 3 4 5 6 7 Znaczenie dla "1" skompletowana dana w buforze odbiornika błąd nieodebrania danej (overrun) błąd parzystości błąd ramki (framing) sygnał przerwania połączenia odebrany na wejściu szeregowym bufor nadajnika pusty, zawartość przekazana do rejestru szeregującego rejestr szeregujący opróżniony zawsze wartość 0 Wyprowadzenia na łączu RS232C: Wtyk DB-25 1 2 3 4 5 6 7 8 20 22 Wtyk DB-9 3 2 7 8 6 5 1 4 9 Nazwa sygnału Kierunek sygnału Masa ochronna Dane wysyłane (TxD) wy Dane otrzymywane (RxD) we Gotowość wysłania danych (RTS) wy Gotowość przyjęcia danych (CTS) we Gotowy zestaw danych (DSR) we Masa sygnałowa (SG) Wybrany (RLSD) we Urządzenie gotowe (DTR) wy Sygnał dzwonienia (RI) we Sposoby dostępu do portów: W systemach Windows nowszych niż Windows 98 zabroniony jest dostęp użytkownika do urządzeń I/O. Jeżeli chcemy pod takim systemem uruchamiać program odwołujący się do urządzeń I/O należy odblokować dostęp do urządzeń I/O. Jedną z metod odblokowania go jest zastosowanie sterownika, np. giveio.sys (np: http://www.embeddedtronics.com/public/Electronics/directio/). Po zainstalowaniu go należy załączyć odpowiednie fragmenty kodu do programu: - jeżeli program pisany jest pod DOS: -------------------------------------------------------------int f = open("\\\\.\\giveio", O_CREAT, S_IREAD); close(f); -------------------------------------------------------------- jeżeli program pisany jest pod WINDOWS: -------------------------------------------------------------HANDLE h; h = CreateFile("\\\\.\\giveio", GENERIC_READ, 0, NULL, OPEN_EXISTING, FILE_ATTRIBUTE_NORMAL, NULL); if(h == INVALID_HANDLE_VALUE) { printf("Couldn't access giveio device\n"); return -1; } CloseHandle(h); -------------------------------------------------------------oraz dołączyć biblioteki, odpowiednio fcntl.h i sys/stat.h dla DOSa oraz windows.h dla Windowsa. Przebieg ćwiczenia: Celem ćwiczenia jest zapoznanie studenta z szeregowym przesyłaniem danych przez złącze pracujące w standardzie RS232C. Przygotowanie do laboratorium: praktyczna znajomość języka „C” i podstaw asemblera x86; umiejętność wykonywania operacji logicznych i arytmetycznych na liczbach zapisanych w różnych systemach liczbowych; znajomość podstawowych pojęć i definicji z dziedziny transmisji szeregowej; rozumienie pojęć: przerwanie, obsługa przerwania; Przebieg ćwiczenia i sposób oceniania: kartkówka (max. 1 pkt); implementacja procedur obsługi portu szeregowego w komputerze PC (max. 2 pkt) stworzenie prostego programu terminala systemowego (max 1 pkt); zaopatrzenie terminala w funkcje rozpoznawania wybranych tekstowych poleceń własnych (max 1 pkt); * podczas ćwiczenia każda sekcja tworzy osobny protokół z przebiegu ćwiczenia Protokół: Protokół powinien zawierać: nazwiska osób wykonujących ćwiczenie; tytuł i numer ćwiczenia; poprawny numer grupy i sekcji; komentarze przedstawiające postęp w realizacji ćwiczenia; Literatura: http://pl.wikipedia.org/wiki/RS-232 - podstawowe informacje o standardzie RS232; http://lodd.p.lodz.pl/kwbd/rs232.htm - opis funkcji biosu do obsługi portu szeregowego, zestaw adresów portów, rejestrów wykorzystywanych do obsługi łącza RS232C, przykłady i inne pomocne porady; http://www.ctyme.com/rbrown.htm - lista przerwań DOS; W. Mielczarek, Szeregowe interfejsy cyfrowe, Helion, Gliwice 1993 Aktualizacja: Mariusz Latos, 18 styczeń 2010