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

Podobne dokumenty