Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 5 gru 2024, o 05:26


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 
Autor Wiadomość
PostNapisane: 20 sie 2013, o 19:55 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 paź 2011
Posty: 581
Pomógł: 17

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.html

I 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:
Składnia: [ Pobierz ] [ Ukryj ]
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.html
Zgadza się TYLKO kod literki e

Wie ktoś skąd ta różnica??



Ostatnio edytowano 20 sie 2013, o 19:59 przez xamrex, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 sie 2013, o 19:57 
Offline
Moderator zasłużony dla forum.atnel.pl
Avatar użytkownika

Dołączył(a): 18 lip 2012
Posty: 3206
Lokalizacja: Kraków - obok FAB5 ATMEL'a
Pomógł: 91

Zwróć się do Antyniastego, on się zajmował klawiaturen PS/2.

_________________
http://www.jaglarz.info



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 20 sie 2013, o 20:16 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 paź 2011
Posty: 581
Pomógł: 17

Ok, wszystko sie wyjasnilo, bity przychodza od najmlodszego, czyli tak naprawdę:
a=00111000
to
00011100 a to się równa 1C :) czyli wszystko się zgadza :D



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 sie 2013, o 09:23 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 paź 2011
Posty: 581
Pomógł: 17

Jeszce mam jedno pytanie.
Chcę się upewnić.
Jeśli chciałbym zrobić komunikację avr->Klawiatura
Dokładnie chce zapalić diodę Num Lock
to wysyłam dwie paczki danych
http://computer-engineering.org/ps2keyboard/

Czyli najpierw wysyłam 0xED a potem 0x02?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 sie 2013, o 17:54 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 paź 2011
Posty: 581
Pomógł: 17

I czy w ogóle da się użyć AVRa jako hosta?
http://edap.pl/artykuly/avr-i-klawiatura-ps2
Cytuj:
Pierwszym krokiem jest wspomniane przed chwilą wyzerowanie linii zegarowej. Jest to tzw. Request-to-send, którym dajemy znać sterownikowi klawiatury, że będziemy przesyłać dane. Czas, na jaki należy utrzymać stan niski na linii musi wynosić co najmniej 100ms. Po zwolnieniu linii zegara, kontroler klawiatury rozpocznie taktowanie oraz odczyt kolejnych bitów.


W jaki sposób ustawić stan niski na linii? Avr nie ma podciągnięcia do GND



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 21 sie 2013, o 21:55 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 13 paź 2011
Posty: 581
Pomógł: 17

Dzięki :)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 6 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 0 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO