Rozdział 15 Pozostałe urządzenia wejścia


Rozdział 15.
Pozostałe urządzenia wejścia



Na zakończenie omówione zostaną jeszcze dwa urządzenia wejściowe, które chociaż niezdolne zastąpić klawiaturę są wykorzystywane przez użytkowników. Mowa tu o myszce i manipulatorze, zwanym popularnie joystickiem. Urządzenia te dołączane są na ogół do gniazd wielofunkcyjnej karty Multi I/O, zawierającej porty szeregowe (wykorzystywane przez myszkę) i gamę port, będący w istocie prostym przetwornikiem analogowo-cyfrowym.
Myszka i jej obsługa
Chociaż klawiatura w dalszym ciągu jest podstawowym narzędziem do wprowadzania danych tekstowych i liczbowych, pojawienie się na rynku nowej klasy oprogramowania programów sterowanych z poziomu menu (ang. memi-driven software) dało szansę innemu urządzeniu wejścia myszce. Pozwala ona na sterowanie komputerem praktycznie bez użycia klawiatury, a w wielu środowiskach programowych (np. Windows) jest wręcz warunkiem koniecznym. Myszka przekazuje ruch ręki do komputera, służąc zwykle do sterowania widocznym na ekranie kursorem i uruchamiania wskazywanych przezeń funkcji. Filozofia ta wykorzystywana jest obecnie w każdym "szanującym się" programie i radykalnie upraszcza obsługę komputera.
Myszka komunikuje się z komputerem za pomocą portu szeregowego. Znane są co prawda myszki współpracujące z kartą dedykowaną do ich obsługi (jest to rozwiązanie archaiczne), ewentualnie z kartami sterowników graficznych (rozwiązanie firmy ATI), jednak przeważająca większość "zwierzątek" używa portu szeregowego.
Starsze wersje korzystały dodatkowo z przewodu klawiatury, ale wyłącznie dla zasilania swoich układów elektronicznych. Obecnie technologia CMOS pozwala na zastosowanie układów pobierających tak małą moc, że możliwe jest zasilanie myszki z wyjść portu szeregowego (napięciami ą12 V). Konstrukcja znakomitej większości myszek oparta jest o kulkę wprawianą w ruch poprzez przesuwanie całej myszki po stole (a właściwie po specjalnym "wybiegu" równej, lekko chropowatej podkładce, tzw. mcntse pad). Kulka z kolei wprawia w ruch dwie tarcze z otworami, które wraz z układami diod świe-
cących i fotoelementów tworzą optomechaniczny przetwornik ruchu na impulsy elektryczne. Każda z tarcz odpowiada za jeden z kierunków: lewo-prawo i góra-dół. Dzięki zastosowaniu dwóch zespołów: dioda świecąca-fotoelement dla każdej tarczy, poza wykryciem ruchu tarczy można również określić kierunek jej obrotów. Tarcza, jak już wyżej wspomniano, ma szereg otworów na obwodzie, które podczas obrotu zasłaniają i odsłaniają światło z diody świecącej padające na fotoelement. Powoduje to generowanie ciągu impulsów elektrycznych o długości zależnej od przesunięcia myszki.
Za dekodowanie impulsów z czterech fotoelementów odpowiedzialny jest mikrokontro-ler, którym zwykle jest układ Intel 80C48. Przetwarza on uprzednio wzmocnione sygnały z fotoelementów na postać cyfrową, którą następnie przesyła do komputera poprzez port szeregowy. Wykorzystywana jest wyłącznie linia danych tego portu, a pozostałe połączenia służąjedynie do zasilania układów myszki.
Poza układem przeniesienia ruchu ręki myszka posiada jeszcze dwa lub trzy przyciski, którym zwykle przyporządkowana jest funkcja "klawiaturowa" (lewy przycisk odpowiada najczęściej klawiszowi Enter, zaś prawy klawiszowi Esc).
Obsługa programowa większości myszek jest podobna. Możliwe jest wykorzystanie standardowego sterownika myszki (ang. driver}, dostarczanego wraz z systemem operacyjnym. Rozróżnia się zasadniczo dwa podstawowe standardy myszek: pierwszy nosi nazwę Mouse Systems Mouse (myszka trójklawiszowa), zaś drugi Microsoft Mouse (myszka dwuklawiszowa); jest on zgodny, jak sama nazwa wskazuje, z założeniami firmy Microsoft. Istniejąjeszcze rozwiązania niezgodne z powyższymi standardami, ale są one coraz rzadziej stosowane. Należy tu jeszcze oddać honor szwajcarskiej firmie Logitech, która jest jednym z większych producentów myszy. Są one w zasadzie zgodne ze standardem Microsoft Mouse, aczkolwiek zgodność ta nie jest pełna. Do obsługi myszki należy raczej stosować programy dostarczane razem z nią, ewentualnie zgodne z jej standardem. Niemniej jednak, niezależnie od samego sprzętu i sposobu porozumiewania się myszki z "pracującym dla niej" sterownikiem, sposób jej obsługi programowej jest identyczny (sterownik myszki pełni rolę taką jak BIOS pośredniczy pomiędzy różnymi rozwiązaniami sprzętowymi a programami). Ponieważ większość myszek komunikuje się ze sterownikiem w taki sam sposób, może być obsługiwana przez taki sam sterownik. Większość z nich może również pracować w obu standardach. Przykładowo, MS Windows 3.1x podczas instalacji pyta o typ zainstalowanej myszki, umożliwiając wybór rodzaju myszki: rzadko spotykanych Hewlett Packard i Olivetti oraz Microsoft, Logitech, Mouse Systems i Genius Mouse. Ten ostatni typ jest zasadniczo zgodny z Mouse Systems Mouse, ale płynność i dynamika ruchu jest lepiej dopasowana dla myszy danego producenta. Możliwe jest oczywiście zainstalowanie innego (dostarczanego wraz z myszką) sterownika, a także, co jednak nie jest zalecane, pominięcie instalacji myszki.
Programowa obsługa myszki odbywa się poprzez przerwanie 33h (Mouse Suppoii). Warunkiem działania tego przerwania jest oczywiście załadowanie sterownika myszki. W tabeli 15.1 zebrano listę funkcji przerwania 33h.
Tabela 15.1.

Spis funkcji przerwania 33h (obsługi myszki)

Funkcja; Opis

00h; inicjalizacja myszki i sprawdzenie obecności jej sterownika
01h; wyświetlenie kursora myszki
02h; ukrycie kursora myszki
03h; określenie pozycji i stanu przycisków myszki
04h; przesunięcie kursora
05h; określenie liczby naciśnięć przycisków
06h; określenie liczby zwolnień przycisków
07h; ustawienie zasięgu poziomego
08h; ustawienie zasięgu pionowego
09h; zdefiniowanie kształtu kursora graficznego myszki
0Ah; zdefiniowanie maski kursora tekstowego myszki
0Bh; określenie odległości ostatniego przesunięcia
0Ch; instalacja filtru zdarzeń (ang. event handler) generowanych przez myszkę
0Dh; włączenie emulacji pióra świetlnego
0Eh; wyłączenie emulacji pióra świetlnego
OFh; ustawienie prędkości ruchu kursora
10h; ustawienie granic obszaru ukrycia myszki
I3h; ustawienie maksymalnej prędkości ruchu kursora
14h; zamiana filtru zdarzeń
15h; określenie rozmiaru bufora statusu myszki
16h; zapamiętanie statusu myszki
17h; odtworzenie statusu myszki
18h; instalacja dodatkowego filtru zdarzeń (zob. funkcja OCh)
19h; określenie adresu dodatkowego filtru zdarzeń
1Ah; ustawienie czułości myszki
1Bh; pobranie czułości myszki
1ICh; ustawienie częstotliwości przerwań pochodzących od myszki (funkcja ta stosuje się jedynie do myszek standardu Inport)
1Dh; ustawienie wyświetlanej strony pamięci obrazu (zawierającej kursor myszki)
1Eh; pobranie numeru strony pamięci obrazu zawierającej kursor myszki
1Fh; zablokowanie sterownika myszki
20h; włączenie sterownika myszki
21h; inicjalizacja sterownika myszki
22h; określenie numeru wersji sterownika myszki i numeru przerwania (IRQ)



































Na kolejnych stronach zostaną omówione ważniejsze funkcje przerwania 33h, umożliwiające realizację elementarnej
obsługi myszki.

Funkcja 00h

Działanie:

Funkcja ta zwraca informację o zainstalowaniu sterownika myszki i jej typie.

Parametry wejściowe:
AX 0000h.

Wartości zwracane:
AX obecność sterownika myszki: 0000h = nieobecny, FFFFh = zainstalowany;
BX rodzaj myszki:
FFFFh = dwuprzyciskowa,
0003h = trójprzyciskowa,
0000h - inna.

Funkcja 01h

Działanie:

Funkcja wyświetla kursor myszki.

Parametry wejściowe:
AX 0001h.

Wartości zwracane:
brak

Funkcja 02h

Działanie:

Funkcja ukrywa kursor myszki.

Parametry wejściowe:
AX 0002h.

Wartości zwracane:
brak

Funkcja 03h

Działanie:

Funkcja ta zwraca informację o współrzędnych kursora myszki i stanie jej przycisków

Parametry wejściowe:
AX 0003h.

Wartości zwracane:
BL stan przycisków myszki:

x; x; x; x; x; bit 2; bit 1; bit 0;

bity 7-3 nie wykorzystane,
bit 2 1 naciśnięty środkowy przycisk,
bit 1 naciśnięty prawy przycisk,
bit O 1 naciśnięty lewy przycisk;

CX współrzędna X kursora myszki (0..639);
DX współrzędna Y kursora myszki (0.. 199).

Funkcja 04h

Działanie:

Funkcja ustala położenie kursora myszki.

Parametry wejściowe:
AX 0004h;
CX współrzędna X kursora myszki (0 - 639);
DX współrzędna Y kursora myszki (0 - 199).

Wartości zwracane:
brak

Uwaga:
Wartości współrzędnych zaokrąglane są do rozdzielczości znakowej.

Funkcja 05h

Działanie:

Funkcja ta zwraca informację o naciśnięciu przycisków myszki.

Parametry wejściowe:
AX 0005H;
BX kod przycisku:
0000h lewy,
0001 h prawy,
0002h środkowy.

Wartości zwracane:
AL bieżący stan przycisków:

x; x; x; x; x; bit 2; bit 2; bil 2;

bity 7-3 nie wykorzystane,
bit 2 1 naciśnięty środkowy przycisk,
bit l 1 naciśnięty prawy przycisk,
bit 0 1 naciśnięty lewy przycisk;

BX liczba naciśnięć danego przycisku od ostatniego wywołania funkcji 05h;
CX współrzędna X kursora myszki w chwili naciśnięcia danego przycisku;
DX współrzędna Y kursora myszki w chwili naciśnięcia danego przycisku.

Funkcja 06h

Działanie:

Funkcja ta zwraca informację o zwolnieniu przycisków myszki.

Parametry wejściowe:
AX 000óh;
BX kod przycisku:
0000h lewy,
0001h prawy,
0002h środkówy.

Wartości zwracane:

AL bieżący stan przycisków:

x; x; x; x; x; bit 2; bit 1; bit 0;

bity 7-3 nie wykorzystane,
bit 2 1 naciśnięty środkowy przycisk,
bit 1 1 naciśnięty prawy przycisk,
bit 0 1 naciśnięty lewy przycisk;
BX liczba zwolnień danego przycisku od ostatniego wywołania funkcji 05h;
CX współrzędna X kursora myszki w chwili zwolnienia danego przycisku;
DX współrzędna Y kursora myszki w chwili zwolnienia danego przycisku.

Funkcja 0Bh

Działanie:

Funkcja ta zwraca stan liczników położenia myszki.

Parametry wejściowe:
AX 000Bh;

Wartości zwracane:
CX liczba jednostek, o które przesunięto myszkę w poziomie od ostatniego wywołania funkcji 0Bh;
DX liczba jednostek, o które przesunięto myszkę w pionie od ostatniego wywołania funkcji 0Bh.

Uwaga:
Jednostką (ang. mickey) jest najmniejsza odległość, na określenie której pozwala czułość myszki (zwykle 1/200 do 1/400
cala). Wartości zwracane w rejestrach CX i DX należy traktować jako liczby całkowite ze znakiem. Wartości dodatnie
odpowiadają przesunięciu myszki w dół i w prawo.
Jest to zaledwie skrótowy opis dostępnych funkcji obsługujących myszkę. Większość języków programowania
dysponuje bibliotekami zawierającymi gotowe procedury obsługi myszki na znacznie wyższym poziomie.

Gamę port

Manipulator (joyslick}, podobnie jak myszka, przekazuje ruch dłoni (drążka) do komputera. Wykorzystywany jest przede
wszystkim w grach i na tym w zasadzie kończy się jego zastosowanie praktyczne.
Połączenie manipulatora z komputerem odbywa się poprzez tzw. gamę port. Zwykle jest on umieszczony na jednej karcie z
portami szeregowymi i portem równoległym (karta Multi I/O). Gamę port obsługuje dwa niezależne manipulatory
analogowe (A i B), dołączane doń przez tzw. "żeńskie" 15-stykowe gniazdo DB-15. Rozkład końcówek gniazda gamę portu
przedstawia rysunek 15.1.
Końcówki 2-7 złącza odpowiadają za pierwszy manipulator (A), zaś końcówki 10-14 za drugi (B). Linie A1, A2, B1, B2
przekazują stan przycisków l i 2 manipulatora A i B, natomiast liniami AX, AY, BX i BY przekazywane są sygnały
określające położenie drążka.
Mechaniczne rozwiązania poszczególnych typów manipulatorów są różne, natomiast elektrycznie składają się one z
czterech potencjometrów (dwa główne i dwa kalibrujące) oraz dwóch niezależnych przycisków. Każda para
potencjometrów odpowiada za przekazanie położenia drążka w kierunku lewo-prawo (X) i góra-dół (Y). Potencjometry
kalibracyjne służą do usytuowania kursora (ewentualnie ustawienia innej funkcji programu sterowanego przez
manipulator) w położeniu neutralnym dla środkowego położenia drążka. Oczywiście konstrukcja mechaniczna
manipulatora jest taka, by ruch drążka powodował zmianę rezystancji odpowiedniego potencjometru.
Zespół potencjometr główny-potencjometr kałibracyjny jest włączony w obwód umieszczonego na karcie generatora
monostabilnego (uniwibratora), zbudowanego w oparciu o popularny układ czasowy NE555. Dokładnie rzecz biorąc,
karta zawiera zwykle jeden układ scalony NE556 (lub jego odpowiednik), zawierający cztery identyczne uniwibra-tory
odpowiadające układowi 555. Do obsługi manipulatora przewidziano pott o adresie 201h.

Znaczenie bitów tego portu jest następujące:

bit 7; bit 6; bit 5; bit 4; bit 3; bit 2; bit 1; bit 0;

bit 7 Stan drugiego wyłącznika manipulatora B (B2).
bit 6 Stan pierwszego wyłącznika manipulatora B (B1).
bit 5 Stan drugiego wyłącznika manipulatora A (A2).
bit 4 Stan pierwszego wyłącznika manipulatora A (A1).
bit 3 Stan wyjścia Y (BY) manipulatora B (góra-dół);
bit 2 Stan wyjścia X (BX) manipulatora B (lewo-prawo);
bit 1 Stan wyjścia Y (AY) manipulatora A (góra-dół);
bit O Stan wyjścia X (AX) manipulatora A (lewo-prawo).

Wartość 1 na jednym z bitów 7-4 oznacza rozwarcie (zwolnienie) przycisku. Jedynka na bicie 3-0 sygnalizuje pracę
uniwibratora (tj. fazę trwania impulsu).

Port 201 h służy zarówno do zapisu, jak i odczytu. Określenie położenia drążka odbywa się poprzez programowy
pomiar czasu trwania impulsu generatora monostabilnego. Zapis do portu 0201 h dowolnej wartości powoduje
wyzwolenie generatorów. Następnie mierzony jest czas utrzymywania się jedynki logicznej na wyjściach generatorów.

Pomiar taki można wykonać przykładową pętlą programową:

mov dx,0201h ; adres portu joysticka
out dx,al ; uruchom uniwibratory
xor ex,ex ; inicjalizuj licznik
pętla:
in al,dx ; odczytaj stan portu joysticka
test al,01h ; sprawdź czy uniwibrator AX w fazie spoczynku
loopnz pętla ; nie - zliczaj dalej

Stan rejestru CX po wyjściu z programu jest oczywiście zależny od szybkości procesora, trybu jego pracy, obsługiwanych
w międzyczasie przerwań, odświeżania pamięci itp. Aby uniezależnić się od typu komputera i wyżej wymienionych "
zakłóceń", należałoby do odmierzania czasu użyć sprzętowego zegara czasu rzeczywistego. Określenie stanu wyłączników
odbywa się poprzez odczytanie czterech bardziej znaczących bitów portu 0201 h.

W BlOS-ie komputera AT pojawiła się funkcja przeznaczona specjalnie do obsługi manipulatora, upraszczająca znacznie
odczyt jego stanu. Jest to funkcja 84h przerwania programowego 15h (tzw. A T Extended Services}. Funkcja ta pozwala
na określenie położenia drążków i stanu wyłączników. Funkcja 84h posiada dwie podfunkcje, przekazywane przez rejestr
DX.

Funkcja 84h

Działanie:

Funkcja ta odczytuje stan manipulatora.

Parametry wejściowe:
DX kod podfunkcji:
0 = odczyt stanu wyłączników,
1 - odczyt położeń X i Y drążka.

Wartości zwracane:
dla podfunkcji 0:
AL stan przycisków joysticków, jeśli DX = 0:

bit 7; bit 6; bit 5; bit 4; x; x; x; x;

bit 7 stan drugiego przycisku manipulatora B (B2),
bit 6 stan pierwszego przycisku manipulatora B (B1),
bit 5 stan drugiego przycisku manipulatora A (A2),
bit 4 stan pierwszego przycisku manipulatora A (A1),
bity 3-0 nie wykorzystane;

dla podfunkcji 1:

AX współrzędna X drążka manipulatora A,
BX współrzędna Y drążka manipulatora A,
CX współrzędna X drążka manipulatora B,
DX współrzędna Y drążka manipulatora B.

Opisywany układ wejścia może znaleźć zastosowanie nie tylko jako port manipulatora, ale również jako prosty, 8-bitowy
przetwornik wartości analogowej (rezystancja) na wartość cyfrową. Może to być np. rezystancja termometru oporowego itp.

Wyszukiwarka

Podobne podstrony:
Pozostałe urządzenia wejścia
16 Rozdział 15
Rozdzial 15
17 Rozdzial 15
Pan Wolodyjowski Rozdzial 15
Rozdział 15 (tł Kath)
Rozdział 15
15 Rozdział 15 (3)
Wings of the wicked rozdział 15
Rozdział 15 Sen Nikanora Iwanowicza
rozdział 15 Pierwsze zstąpienie Belzebuba na planetę Ziemia
MLP FIM Fanfic Wojna o Equestrię Rozdział 15

więcej podobnych podstron