Witam serdecznie
Postanowiłem zrobić sobie obsługę klawiatury PS2 na AVR
Ale mam z nią problemy
Poczytałem ten artykuł:
http://leon-instruments.blogspot.com/20 ... a-ps2.htmlI zabrałem się za nierówną walkę.
Na początku chciałem zrobić coś prostego i zrobiłem taki 'analizator tego co przyjdzie'
(do PD3 czyli int podłączyłem CLK z klawiatury, a do A0 DATA)
Napisałem taki kod:
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.
No i oto co ujrzałem:
Po kliknięciu literki a:
Cytuj:
ilosc bitow to: 33
Zawartosc tablicy to: 0001110000100000111111000111000010000000000000000000000000000000000000000000000000000000000000000000
Po kliknięciu literki b:
Cytuj:
ilosc bitow to: 33
Zawartosc tablicy to: 0010011000100000111111001001100010000000000000000000000000000000000000000000000000000000000000000000
Po kliknięciu literki e:
Cytuj:
ilosc bitow to: 33
Zawartosc tablicy to: 0001001001100000111111000100100110000000000000000000000000000000000000000000000000000000000000000000
Po kliknięciu literki 1:
Cytuj:
ilosc bitow to: 33
Zawartosc tablicy to: 0011010000100000111111001101000010000000000000000000000000000000000000000000000000000000000000000000
Wskazuje, że ramka przylatuje dobra
- bit startu, zawsze 0
- 8 bitów danych, od najmłodszego
- bit parzystości, ustawiany gdy jest parzysta liczba jedynek
- bit stopu, zawsze 1
Po puszczeniu klawisza, klawiatura wysyła dodatkowo kod 0xF0 i jeszcze raz kod klawisza
Po obróbce mamy coś takiego:
a=00011100001
b=00100110001
e=00010010011
1=00110100001
Po odrzuceniu pierwszego i dwóch ostatnich bitów otrzymujemy 8bitowy kod znaku(Scan code)
a=00111000
b=01001100
e=00100100
1=01101000
więc
a=38 hex
b=4C hex
e=24 hex
1=68 hex
I wg tej tabelki
http://www.computer-engineering.org/ps2 ... odes2.htmlZgadza się TYLKO kod literki
eWie ktoś skąd ta różnica??