230 likes | 341 Views
Urządzenia PS2. Num Caps Scroll Lock Lock Lock. 01. 59. 60. 61. 62. 63. 64. 65. 66. 67. 68. 87. 88. 55. 70. 69. 41. 02. 03. 04. 05. 06. 07. 08. 09. 10. 11. 12. 13. 14. 82. 71. 73. 69. 53. 55. 74. 15. 16. 17. 18. 19. 20. 21. 22. 23. 24. 25.
E N D
Num Caps Scroll Lock Lock Lock 01 59 60 61 62 63 64 65 66 67 68 87 88 55 70 69 41 02 03 04 05 06 07 08 09 10 11 12 13 14 82 71 73 69 53 55 74 15 16 17 18 19 20 21 22 23 24 25 26 27 28 83 79 81 71 72 73 78 58 30 31 32 33 34 35 36 37 38 39 40 43 75 76 77 42 44 45 46 47 48 49 50 51 52 53 54 72 77 78 79 28 29 56 57 56 29 75 80 77 82 83 Num Caps Scroll Lock Lock Lock Esc F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Print Scrn Scroll Lock Pause Break ` 1 2 3 4 5 6 7 8 9 0 - = Back Space Ins Home PgUp Num Lock / * - Tab Q W E R T Y U I O P [ ] Enter Del End PgDn 7 8 9 + Caps Lock A S D F G H J K L ; ‘ \ 4 5 6 Shift Z X C V B N M , . / Shift 1 2 3 Enter Ctrl Alt Alt Ctrl 0 . • Klawiatura PC: • klawiszom przyporządkowane są kody nie będące kodami ASCII Klawiatura PC na PS2 2/22 zestaw kodowy #1
Num Caps Scroll Lock Lock Lock 118 5 6 4 12 3 11 131 10 1 9 120 7 18124 126 * 14 22 30 38 37 46 54 61 62 70 69 78 85 102 112 108 125 119 74 124 123 13 31 29 36 45 44 53 60 67 68 77 84 91 90 113 105 122 108 117 125 121 88 28 27 35 43 52 51 59 66 75 76 82 93 107 115 116 18 26 34 33 42 50 49 58 65 73 74 89 117 105 114 122 90 20 17 41 17 30 107 114 116 112 113 Num Caps Scroll Lock Lock Lock Esc F1 F2 F3 F4 F5 F6 F7 F8 F9 F10 F11 F12 Print Scrn Scroll Lock Pause Break ` 1 2 3 4 5 6 7 8 9 0 - = Back Space Ins Home PgUp Num Lock / * - Tab Q W E R T Y U I O P [ ] Enter Del End PgDn 7 8 9 + Caps Lock A S D F G H J K L ; ‘ \ 4 5 6 Shift Z X C V B N M , . / Shift 1 2 3 Enter Ctrl Alt Alt Ctrl 0 . Klawiatura PC na PS2 3/22 zestaw kodowy #2 kod czerwony jest poprzedzony przez 224 (0xE0), dla PrintScrn wciśnięcie: 224,18,224,124 zwolnienie: 224,240,124,224,240,18 * = 0xE1,0x14,0x77,0xE1,0xF0.0x14,0xF0,0x77
6 +5V 4 2 5 Clock 3 masa 1 Data +5V Data Clock ODB NAD • transmisja na złączu PS2 jest synchroniczna dwukierunkowa; • złącze PS2 (widok gniazda od przodu): Klawiatura PC na PS2 4/22 • obciążalność zasilania do 275mA; • częstotliwość sygnału zegarowego 10..16,7kHz; • wyjścia układów nadających na linie zegara i danych są typu OC z rezystorami podciągającymi:
Sugerowane czasy: KB-Clock KB-Data >50μs 5-25μs >5μs S=0 D0 D1 D2 D3 D4 D5 D6 D7 N E=1 • sterownik matrycy klawiszy sygnalizuje każde wciśnięcie klawisza- wysyłając bajt z przypisanym mu kodem; • oraz każde zwolnienie klawisza - wysyłając bajt F0h a następnie przypisany mu kod. • transmisja klawiatura - PC: klawiatura steruje liniami Data i Clock dane są odczytywane przez PC na opadającym zboczu Clock (dane powinny być stabilne przy niskim poziomie Clock) transmisja kodu 26h (wciśnięcie klawisza 3) od sterownika klawiatury do PC: Klawiatura PC na PS2 5/22 • transmisja z klawiatury może być zahamowana poprzez wymuszenie przez PC niskiego stanu na linii Clock przez min. 100μs
>100μs KB-Clock KB-Data >50μs S=0 D0 D1 D2 D3 D4 D5 D6 • transmisja z klawiatury może być zahamowana poprzez wymuszenie przez PC niskiego stanu na linii Clock przez min. 100μs, np: Klawiatura PC na PS2 6/22 • po zaniku sygnału wstrzymania (Clock=0) transmisja z klawiatury może być wznowiona – powtórzona; • przez czas wstrzymania transmisji klawiatura buforuje kody wciśniętych i zwolnionych znaków w zaledwie 16-bajtowym buforze (w przypadku myszki bufor przechowuje dane tylko o ostatnim ruchu);
rzeczywiste przebiegi: Klawiatura PC na PS2 7/22
KB-Clock KB-Data S=0 D0 D1 D2 D3 D4 D5 D6 D7 N E=1 S=0 D0 D1 D2 D3 D4 D5 D6 D7 N E=1 • transmisja kodów: F0h i 26h (zwolnienie klawisza 3) od sterownika klawiatury do PC: Klawiatura PC na PS2 8/22
rzeczywiste przebiegi: Klawiatura PC na PS2 9/22
KB-Clock KB-Data wywołanie=0 z PC >100μs ACK=0 z klawiatury S=0 D0 D1 D2 D3 D4 D5 D6 D7 N E=1 • Transmisja PC - klawiatura: • transmisja bajtu 26h od PC do sterownika klawiatury: Klawiatura PC na PS2 10/22 • Stan klawiatury po włączeniu zasilania lub po komendzie RESET: - opóźnienie autopowtarzania - 500ms; - częstotliwość autopowtarzania - 10,9Hz; - zestaw kodowy matrycy - #2; - włączenie autopowtarzania dla wszystkich klawiszy; - przeprowadzenie autotestu (błyskają kontrolne LEDy); - wysłanie do komputera nadrzędnego kodu wyniku autotestu: 0AAh gdy OK, 0FCh gdy błąd;
Reguły obsługi komend sterujących (przesyłanych z PC) przez klawiaturę: - po otrzymaniu dowolnej komendy klawiatura czyści swój bufor wyjściowy; - po otrzymaniu błędnej komendy lub błędnego argumentu komendy, klawiatura odpowiada kodem 0FEh; - klawiatura nie przesyła żadnych kodów wciśniętych klawiszy podczas przetwarzania otrzymanej komendy; - jeżeli oczekując na argument komendy klawiatura otrzyma kod nowej komendy, to porzuca przetwarzanie starej i rozpoczyna obróbkę nowego polecenia. Klawiatura PC na PS2 11/22
Komendy klawiatury: - 0FFh - RESET, klawiatura potwierdza kodem 0FAh; - 0FEh - RESEND, klawiatura powtarza ostatnio wysłany bajt;- 0FDh - wyłącza sygnalizację zwolnienia i autopowtarzanie dla wybranych klawiszy, klawiatura potwierdza kodem 0FAh, następnie wyłącza skanowanie i odczytuje z PC listę klawiszy, potwierdzając każdy odebrany kod bajtem 0FAh, po czym włącza ponownie skanowanie matrycy klawiszy; - 0FCh - jak 0FDh ale tylko wyłącza autopowtarzanie wskazanych klawiszy; - 0FBh - jak 0FDh ale tylko wyłącza sygnalizację zwolnienia wskazanych klawiszy; - 0FAh - przywraca pierwotny stan pełnej obsługi wszystkich klawiszy, tzn. z sygnalizacją wciśnięcia i zwolnienia oraz autopowtarzaniem, klawiatura potwierdza kodem 0FAh; • *dostępne tylko w klawiaturach PS2 Klawiatura PC na PS2 12/22
Komendy klawiatury:- 0F9h - działa jak 0FDh w stosunku do wszystkich klawiszy, klawiatura potwierdza kodem 0FAh; - 0F8h - działa jak 0FCh w stosunku do wszystkich klawiszy, klawiatura potwierdza kodem 0FAh; - 0F7h - działa jak 0FBh w stosunku do wszystkich klawiszy, klawiatura potwierdza kodem 0FAh; - 0F6h - przywrócenie ustawień domyślnych (jak po resecie), klawiatura potwierdza kodem 0FAh; - 0F5h - zatrzymanie skanowania i przywrócenie ustawień domyślnych (jak po resecie), klawiatura oczekuje na następne rozkazy; - 0F4h - włączenie skanowania po zatrzymaniu komendą 0F5h; • *dostępne tylko w klawiaturach PS2 Klawiatura PC na PS2 13/22
0 DEL1 DEL0 RATE4 RATE3 RATE2 RATE1 RATE0 - 0F3h - ustawienie częstotliwości i opóźnienia autopowtarzania, po komendzie PC przesyła bajt konfiguracyjny: Klawiatura PC na PS2 14/22 wartość opóźnienia: DEL1DEL0 = 00 - 0,25s 01 - 0,5s 10 - 0,75s 11 - 1,0s wartość częstotliwości autopowtarzania [Hz]: 00000 - 30,0 01000 - 15,0 10000 - 7,5 11000 - 3,700001 - 26,7 01001 - 13,3 10001 - 6,7 11001 - 3,300010 - 24,0 01010 - 12,0 10010 - 6,0 11010 - 3,000011 - 21,8 01011 - 10,9 10011 - 5,5 11011 - 2,700100 - 20,7 01100 - 10,0 10100 - 5,0 11100 - 2,500101 - 18,5 01101 - 9,2 10101 - 4,6 11101 - 2,300110 - 17,1 01110 - 8,6 10110 - 4,3 11110 - 2,100111 - 16,0 01111 - 8,0 10111 - 4,0 11111 - 2,0
Klawiatura PC na PS2 15/22 - 0F2h - podaj kod ID, klawiatura odpowiada 2 bajtami kodu albo parą bajtów: 0ABh, 83h;- 0F0h - ustawienie zestawu kodowego matrycy klawiszy, klawiatura potwierdza kodem 0FAh i oczekuje na bajt z numerem zestawu (00h, 01h, 02h albo 03h), który także potwierdza kodem 0FAh, jeżeli numer był 00h to klawiatura dodatkowo odsyła do PC aktualnie ustawiony numer zestawu kodowego;- 0EEh - odpowiedz echem, klawiatura odsyła kod 0EEh; - 0EDh - sterowanie LEDami: bajt argumentu zawiera na pozycjach 2..0 stan LEDów: odpowiednio Caps Lock, Num Lock, Scroll Lock *dostępne tylko w klawiaturach PS2
bajt #1: bajt #2: bajt #3: nadmiar w osi Y nadmiar w osi X ΔY8 ΔX8 1 stan śr. przycisku stan pr. przycisku stan lew. przycisku ΔX7..0 ΔY7..0 Podstawowy pakiet danych przesyłany przez mysz bez kółka do PC: Mysz PC na PS2 16/22 Przesunięcia ΔX oraz ΔY są podawane w 9-bitowym kodzie U2 Jeżeli aktualna (chwilowa) zmiana położenia przekracza wartość -256..255 ustawiane są bity nadmiaru w danej osi.
bajt #1: bajt #2: bajt #3: bajt #4: nadmiar w osi Y nadmiar w osi X ΔY8 ΔX8 1 stan śr. przycisku stan pr. przycisku stan lew. przycisku ΔX7..0 ΔY7..0 ΔZ3..0 Podstawowy pakiet danych przesyłany przez mysz z kółkiem do PC: Mysz PC na PS2 17/22 Przesunięcia ΔX oraz ΔY i bity nadmiaru są podawane jak w myszy bez kółka. ΔZ - ruch kółka, zwykle: 00h - brak obrotu, 01h - obrót „w przód”, 0Fh - obrót „w tył”, w ogólnym przypadku wartość z przedziału -8..7.
Tryby pracy myszy: 1. RESET - po włączeniu zasilania albo po przesłaniu do myszy rozkazu resetu (0FFh), mysz odpowiada bajtem potwierdzenia 0FAh, przeprowadza autotest, ustawia się na domyślne parametry pracy: 100 próbek na sekundę rozdzielczość 4 impulsy/mm współczynnik skali 1:1 wyłączone raportowanie danych po czym wysyła odpowiedź: 0AAh gdy autotest pomyślny 0FCh gdy autotest błędny oraz kolejny bajt będący kodem ID albo 00h po czym mysz przełącza się w tryb strumieniowy. Mysz PC na PS2 18/22
Reakcja myszy po resecie: Mysz PC na PS2 19/22
2. Tryb strumieniowy - mysz wysyła 3-bajtowe pakiety danych o wykrytych zmianach położenia lub stanu jej przycisków. UWAGA: warunkiem rozpoczęcia tej transmisji jest: włączenie raportowania danych kodem 0F4h, potwierdzanym przez mysz bajtem 0FAh. 3. Tryb zdalny - mysz rejestruje przesunięcia i stany klawiszy, ale nie wysyła automatycznie informacji o zmianach. Urządzenie nadrzędne musi odpytywać mysz poleceniem 0EBh. W odpowiedzi na nie mysz wysyła bajt potwierdzenia 0FAh oraz jeden 3-bajtowy pakiet stanu. Tryb zdalny włącza się rozkazem 0F0h z potwierdzeniem 0FAh od myszy. 4. Tryb z echem odbieranych komend - każde odebrane polecenie jest najpierw odsyłane jako echo do PC, a potem wysyłana jest właściwa odpowiedź. Tryb włącza się komendą 0EEh, a wyłącza - komendą 0ECh. Tu także obowiązują potwierdzenia 0FAh. Mysz PC na PS2 20/22
Inne komendy myszy: • 0FEh - powtórz ostatnią transmisję, nie potwierdzana przez mysz • 0F6h - wybranie ustawień domyślnych, potwierdzana przez mysz bajtem 0FAh • 0F5h - wyłącz raportowanie danych (w trybie strumieniowym), potwierdzana przez mysz bajtem 0FAh • 0F3h - ustawienie częstotliwości próbkowania: 10, 20, 40, 60, 80, 100 albo 200 próbek na sekundę mysz odpowiada kodem 0FAh, po nim należy wysłać bajt z liczbą próbek na sek., który także jest potwierdzany bajtem 0FAh • 0F2h - podaj kod ID - mysz odpowiada bajtem potwierdzenia 0FAh, a następnie bajtem kodu ID albo 00h Mysz PC na PS2 21/22
bajt #1: bajt #2: bajt #3: 0 MODE DR SCL 0 stan lew. przycisku stan śr. przycisku stan pr. przycisku rozdzielczość próbkowanie • 0EAh - włączenie trybu strumieniowego, potwierdzana przez mysz bajtem 0FAh • 0E9h - podaj status, mysz potwierdza bajtem 0FAh, a następnie wysyła 3-bajtową informację: Mysz PC na PS2 22/22 MODE = 0 - tryb strumieniowy, =1 - tryb zdalnyDR = 0 - wyłączone raportowanie danych, =1 - włączone raportowanie danychSCL = 0 - skalowanie 1:1, =1 - skalowanie 2:1rozdzielczość: 00h - 1imp/mm, 01h - 2imp/mm, 02h - 4imp/mm, 03h - 8imp/mmpróbkowanie: 10, 20, 40, 60, 80, 100 albo 200 razy/sek.
0E8h - ustawienie rozdzielczości, potwierdzana przez mysz bajtem 0FAh, po którym należy przesłać do myszy bajt rozdzielczości (00h, 01h, 02h albo 03h), także potwierdzany przez mysz bajtem 0FAh • 0E7h - ustaw skalowanie 2:1, potwierdzana przez mysz bajtem 0FAh • 0E6h - ustaw skalowanie 1:1, potwierdzana przez mysz bajtem 0FAh Mysz PC na PS2 23/22 • Standardowa mysz PS2 może wysłać do PC tylko dwa polecenia: • 0FEh - powtórz transmisję • 0FCh - błąd.