Elektroda.pl
Elektroda.pl
X

Search our partners

Find the latest content on electronic components. Datasheets.com
Please add exception to AdBlock for elektroda.pl.
If you watch the ads, you support portal and users.

podłączenie laptopowej klawiatury do stacjonarnego PC

30 Jan 2005 15:38 18219 24
  • #1
    User removed account
    Level 1  
  • #2
    User removed account
    Level 1  
  • #4
    User removed account
    Level 1  
  • #6
    lopr_pol
    Level 27  
    Nie ma sensu robic jak sa za 35-40,- klawiatury z ukladem klawiszy, plaskimi klawiszami i wymiarami jak w lapach.
  • #7
    User removed account
    Level 1  
  • #8
    Jasiex
    Level 13  
    Generalnie klawiatury różnych producentów i w laptopach mają różną sieć połączeń, dlatego układ skanowania dokonuje konwersji kodów wysyłanych według norm interfejsu PS2. Mikrokontrolery czy też sterowniki klawiatur zatem różnią się i w przypadku laptopów funkcje mikrokontrolera są napewno realizowane w układzie na jego płycie głównej, który zajmuje się nie tylko owym skanowaniem i transmisją z klawiatury ale i innymi rzeczami.

    Aby podłączyć klawiaturę od laptopa, proponuję wykorzystać mikrokontroler np. PIC plus ew. multiplekser wiersz/kolumna). Projekt nie będzie skomplikowany i bardzo prosty. Jedyne co zabierze troszke czasu to stworzenie tablicy konwersji kodów. A co do opisu transmisji PS2 to myślę że kolega poradzi sobie z dojściem do odpowiednich materiałów, jeśli nie, służe pomocą.

    pozdrawiam
  • #9
    _jta_
    Electronics specialist
    Sposób kodowania przez klawiatury został określony na początku lat 80-tych, kiedy IBM
    wykonał komputer PC (komputery PC/XT miały inny), zostało to opisane w "Technical
    Reference" do komputera PC, i wszyscy producenci się tego trzymają, przynajmniej
    jeśli chodzi o klawiatury podłączane do komputerów, bo inaczej to by nie działało. Było
    to zrobione dla wtyczki DIN-5, ale wtyczka PS/2 ma te same sygnały - są przejściówki,
    nie działałyby, gdyby cokolwiek zmieniono.

    Zachodzi natomiast pytanie, czy klawiatura do laptopa, którą masz, ma wbudowany taki
    sam układ kodujący, jak standardowa klawiatura do AT - jeśli nie, to roboty będzie tyle,
    że nie warto się za to brać - chyba że: masz oprogramowanie do układu, który siedzi
    w klawiaturze, w postaci źródłowej, i potrafisz je przerobić; pisanie od podstaw całego
    programu obsługującego klawiaturę to jest spora robota...

    Myślę, że jest spora szansa, że w klawiaturze od laptopa będzie taki sam układ scalony
    i z takim samym programem, jak w klawiaturze od AT - żeby zrobić inaczej, producent
    laptopa musiałby napisać nowy program na te układy, i wątpię, by komuś się chciało.
  • #10
    Jasiex
    Level 13  
    no niestety, niemoge sie zgodzić z tym że jest aż tak ciężko i to gruba przesada.
    Jesli chodzi o transmisje PS2 to jest to zwykła transmisja synchroniczna z bitem staru, stopu i parzystości. Częstotliwość zegara około 32KHz.(są dwie linie zegara i danych). Podłącz sobie wyjście danych i zegara do lewego i prawego wejścia liniowego w karcie dźwiękowej. Odpal Cool Edit-a i pobaw się. Kod tego co zostało zrobione czyli kod wciśniętego/zwolnionego klawisza jest na 7-bitach, najstarszy oznacza że jest aktualnie wciśnięty/zwolniony.(pakiet składa się z 10).
    Wszystkie klawiatury które podłączamy do stacjonarnych PC wysyłają takie same kody i transmisja przebiega zgodnie z PS2.

    Klawiatury w Laptopach z reguły niczego nie wysyłają, bo to są same matryce klawiszy, które podlegają skanowaniu przez jeden z układów na pokładzie płyty glównej laptopa.

    Linia danych klawiatury, podczas normalnej pracy (gdy coś piszesz) pracuje w przypadku klawiatur częściej na wyjście Bo mikrokontroler klawiatury odbiera tylko gdy jest komenda resetu, ustawienie częstotliwości opóźnienia i ilości znaków na sekundę, sygnały załączające diody. Dlatego odbioru nie musisz implementować.
    Ja wykonałem jakiś czas temu klawiaturkę która tylko wysyłała znaki w wyniku naciśnięcia klawisza i spełniała swoje zadanie jak każda inna.
    (odbiór jest konieczny tlyko w przypadku gdybyś chciał robić myszkę lub jej symulator, bo ta musi odpowiedzieć na wysłaną komendę /przekazac parametry jak rozdzielczość itp/ inaczej nie zostanie wykryta przez żaden sterownik ani system).

    tutaj (mam nadzieję) znajdziesz odpowiedzi na wszystkie swoje pytania dotyczące działania klawiatury stacjonarnego PC:

    http://panda.cs.ndsu.nodak.edu/~achapwes/PICmicro/keyboard/atkeyboard.html

    Dodano po 7 [minuty]:


    w przypadku transmisji klawiatura->komputer długość pakietu to 11 bitów:
    -1bit startu
    -8bitów danych
    -1bit parzystości
    -1bit stopu

    W przypadku transmisji komputer->klawiatura, długość wynosi 12, bo dochodzi na końcu bit potwierdzenia.

    szczegóły tu:
    http://www.computer-engineering.org/ps2protocol/

    Dodano po 5 [minuty]:

    twój program dla mikrokontroler-a wystarczy że jedynie będzie wysyłał bajty 0-255 (kody). A to jakie kody ma wysłać uzależnione będzie od naciśniętego klawisza. A to czy jest naciśnięty i który ocenisz odczytując stan portów wejściowych mikrokontroler-a. Oczywiście program mikrokontrolera musi dysponować tablicą kodów klawiszy klawiatury AT -którą znajdziesz na stornie do której link ci podałem.
    Dzięki tej tablicy zamienisz np. swój kod literki A na ten który będzie odpowiedni dla literki A w standardzie AT. Czyli musisz mieć dwie tablice, kodów twojej klawiatury od LAPTOP-a i kodów AT. Gdy znasz kod klawisza z klawiatury Laptopa (indeks przeszukania tablicy) to korzystając z tego samego indeksu automatycznie odczytujesz sobie odpowiedni kod dla AT. Program jak widzisz jest banalnie prosty.

    Dodano po 15 [minuty]:

    jeszcze muszę dodać, że gdy klawiatura nie będzie wysyłać, to nie bedzie wykrywana podczas startu przez BIOS-setup(sygnalizowanie błędów startu (również inicjalizacji klawiatury) można w większości setup-ów wyłączyć).
    Druga sprawa to to, że niektóre klawisze -zwłaszcza specjalne oraz strzałki składają się z dwóch i więcej kodów. Szczegóły są na stronie - patrz link powyżej.
  • #11
    User removed account
    Level 1  
  • #12
    _jta_
    Electronics specialist
    Niestety, nie jest tak prosto, jak by się chciało: komputer wysyła sygnały do klawiatury cały czas
    - głównie zakazuje wysyłania na czas, kiedy analizuje odebrany znak, i potem zezwala z powrotem;
    jeśli klawiatura to zignoruje, i spróbuje wysyłać w czasie zakazanym, to się rozsynchronizuje.
    No i skan kody są trochę bardziej skomplikowane, to +80 hex było na PC i na XT, a na AT
    wysyła się prefiksy, i to jest chyba dobrze opisane w tych materiałach z linków.
  • #13
    Jasiex
    Level 13  
    nieprawda ! ! !
    prefiksy dotyczą tylko klawiszy specjalnych.
    Poszczególne standardy(XT,AT) różnią się koadmi i to jest prawda.

    Co do rozsynchronizowania się, to takie bajki dobre są dla dzieciaków na dobranoc. Sygnał zegara nie jest wyjściowy tylko wejściowy na porcie PS2 komputera. Więc klawiatura sama wysyła w takt generowanego przez siebie sygnału kolejne bity.

    pozdrowienia :-)
  • #14
    _jta_
    Electronics specialist
    1) jak klawiatura zacznie wysyłać następny znak, w czasie kiedy komputer
    zakazuje transmisji, i komputer da zezwolenie na transmisję w środku
    przesyłania znaku, to zacznie odbierać bity od środka znaku - to właśnie
    będzie rozsynchronizowanie się, komputer źle rozpozna który bit jest który;
    2) obydwa sygnały (zegar i dane) są dwukierunkowe;
    3) prefiksy są wysyłane przy puszczaniu dowolnego klawisza.

    Poza tym: komputer na starcie wysyła do klawiatury polecenie przetestowania,
    i musi na nie dostać prawidłową odpowiedź - jeśli nie, nie będzie jej obsługiwać.
    Akurat kiedyś się przekopywałem przez całą sekwencję startu komputera, i wiem.

    ;) a może ktoś pamięta taki komunikat na ekranie komputera:
    NO KEYBOARD, PRESS F1 KEY (nie ma klawiatury, wciśnij klawisz F1)
  • #15
    Jasiex
    Level 13  
    _jta przecież napisałem w poprzednim post o tym błędzie przy starcie i że w większości przypadków można to pominąć.
    Co do rozsynchronizowania się to nie będzie mieć to widocznego miejsca, bowiem klawiatura będzie jedynie głucha na żądania komputera (host-a) ale komputer zawsze odbierze od klawiatury znaki prawidłowo.
    Jak to możliwe ?
    po prostu żadko kiedy komputer wysyła żądania do klawiatury, praktycznie są to takie komendy jak:
    -odczyt statusu
    -reset
    -wybór keyset
    -zmiana szybkości powtarzania
    więc zgadzam się z tym że w momencie gdy ten nieszczęsny -jeden kod- komputer wyśle do naszej głuchej klawiatury, to ta niedość że nie "usłyszy" tj. odbierze, to i nie wyśle prawidłowego kodu, ale nie bedzie to przyczyna śmieci, bo każdy kod opatrzony jest bitem startu, stopu i parzystości. A dzięki 8042 (no właściwie to już jego funkcjom w chipset) niebędzie zjawiska że następne znaki niebędą odbierane od pierwszego bitu, bo 8042 po każdym wysyłaniu/odebraniu zeruje sobie rejestr szeregowy.
  • #16
    _jta_
    Electronics specialist
    właśnie na tym cała sprawa polega, że komputer _często_ wysyła żądania
    do klawiatury, prześledziłem kiedyś w BIOS-ie jak to wygląda, i wiem.
    Z grubsza to jest tak, że po każdym odebranym bajcie komputer wysyła
    do klawiatury zakaz wysyłania, a puszczenie klawisza wysyła sekwencję
    dwubajtową, więc żadne puszczenie klawisza nie odczyta się prawidłowo!
  • #17
    Jasiex
    Level 13  
    _jta: bez komentarza. Znasz moje zdanie. Nie ma takiej komendy jak napisałeś "żądanie puszczenia klawisza". Ponadto gdyby takowa istniała i była użyta w procedurze obsługi przerwania klawiatury BIOS (np. przerwanie 16h) wówczas DOS nie mógłby realizować buforowania. Jedna z funkcji obsługi klawiatury ale w DOS a nie BIOS umożliwia odczyt (również możliwy poprzedzony oczekiwaniem na naciśnięcie) zinterpretowanego kodu jako znak klawiatury (pomijam kwestie klawiszy specjalnych) wraz z opróżnieniem bufora. Generalnie jednak funkcje obsługi klawiatury posiłkują się jedynie stanem najstarszego bitu kodu aby ocenić czy klawisz jest naciśnięty czy też nie.
  • #18
    nakon
    Level 13  
    wpadłem na ten pomył i zacząłem szukac znalazłemkilka postów (min. ten )


    zauważyłm że tutaj sie toczy najżywsza dyskusja (no może nie dokońca natemat ale mniejsz z tym)

    widząc mikrokontroler od mojej rozkręconej zwykłej klawiatury stwierdzam że to tylkojeden mikrokontroler, a reszta to drobiazgi

    czy jest więc to taki wielki problem, aby kupić jakiśtam układzik, zaprogramować go ( żeby współpracował z matrycą klawiszy i na dodatek wysyłał/ odbierał sygnały z PC?

    problem rozchodzi sie głównie o odpowiedni mikrokontroler (no ja niestety jeszcze nieznam sie zbyt na tym)

    moja klawiatura od laptopa ma 24 wyprowadzenia ( i przypuszczam, że większość ma podobnie - w innej dyskusji koles tez ma 24 / większość klawiat od laptopa ma taki sam układ i dodatkowe funkcje (wciskane reazem z klawiszem 'Fn' są takie same) natomiast zwykła od pc ma mniej wyprowadzen / niektóre mają więcej więc przypuszczam że któreś zwykłe klawiatury od pc mają 24 (ale gupio chodzić i wszędzie gdzie zobacze klawiature rozkręcać ją żeby policzyć styki ;-))

    mam więc pytanie: czy ktoś może mi doradzić jaki układ wybrać (a bliżej mówiąc co to za typ scalaków i kto takie coś produkuje?

    aha i myśle że najfajniesze w klawiaturzeod laptopa są te dodatkowe funkcje ( i oto mi sie rozchodzi, żeby one działały jak je podłącze / spodziewam sie że sam mikrokontroler tego niezałatwi i trzeba będzie napisać jakiś sterownik/program obsługującydodatkowe klawisze

    czekam na komentarz z niecierpliwością√
  • #19
    _jta_
    Electronics specialist
    Zwykła klawiatura od PC ma jakąś matrycę klawiszy połączoną z mikrokontrolerem,
    i ten mikrokontroler jest połączony z PC dwoma przewodami sygnałowymi, i oprócz
    tego oczywiście ma połączenie masy, i zasilania (+5V); budowa matrycy i sposób jej
    połączenia z mikrokontrolerem jest nieistotny, jak ma być użyta inna matryca.

    Z tym, że zaprogramowanie mikrokontrolera to może być spora robota - choćby to,
    że trzeba wpisać dwa sposoby tłumaczenia sygnałów z matrycy na kody klawiszy,
    że trzeba napisać cały protokół wysyłania i odbierania z PC, obsługę poleceń z PC
    dla klawiatury... to może być kilkanaście dni roboty dla doświadczonego programisty.
  • #20
    nakon
    Level 13  
    masz zupełną rację co do konstrukcji (i sposobu działania klawiatury)/ tylko że jak chcesz podłączyć inną matrycę to musisz mieć kontroler z taką samą liczbą wyprowadzeń co matryca w przeciwnym wypadku nie będą działąły wszystkie klawisze(to jest chyba oczywiste)

    problem cały w tym aby znaleść taki mikrokontroler który ma właśnie te 24 wejścia od matrycy / i tego właśnie poszukuje (czyli chce coś takiego wymontować z inej klawiatury/ja takiej nie posiadam/ lub zbudować coś takiego na podstawie klawiatury
    lub zbudować od podstaw / tylko nie mam pojęcia gdzie znaleść takie coś!!

    a o zaprogramowaniu to będe sie martwił jak będe miał urządzonko :-)
  • #22
    jerzyadamski
    Level 15  
    Szukałem "_jta" na allegro ale nie ma takiego
  • #23
    Jasiex
    Level 13  
    Co do duzej ilosci linii to podejzewam ze koledzy zdaje sie chcą stosować testowanie stanów logicznych tychże linii albo ich równoległy odczyt. Tym czasem nie jest to technika stosowana, bowiem klawiatury mają jak ktoś z resztą wspomniał postać matryc którą można podzielić na wiersze i kolumny (ROW/COL). Stosując układy selektorów demultiplexerów czyli z wielu linii na mniej ale wybranych -osiągniemy zamierzony efekt posiadając mikrokontroler z połowę mniejszą ilością wyprowadzeń bo odczytujemy najpierw N linii dla ROW i zapisujemy sobie gdzies w pamięci rejestrów ogólnego przeznaczenia mikrokontrolera, a potem analogicznie N linii dla COL i zapisujemy. Połączenie tych dwóch daje nam 2N bitowe słowo opisujące kod skanowania klawiatury. Ale owszem, jak sie nie ma wypaśnego mikrokontrolera polecam zastosowanie układów CPLD lub wykorzystanie układów zatrzaskowych od choćby 74574 bo zdaje sobie sprawe że wielki 8255 nie zawsze jest dostępny.
  • #24
    quadro13
    Level 10  
    Znalazłem ciekawy temat. Ja posiadam klawiaturę od laptopa, ma 24 styki, a na zwykłej stacjonarnej mam 12(jeśli się nie pomyliłem w liczeniu). BARDZO chciałbym podłączyć tą od laptopa do komputera stacjonarnego; mam też płytę główną od tego laptopa-może na niej znajdę potrzebny mi układ? tylko nie wiem czego szukać-może ktoś wie i podzieli się ze mną swą wiedzą? Bo jeśli to byłby mostek północny (znaczy kontroler zintegrowany z nim w jednym chipie) to chyba kupa...
    Proszę uprzejmie o pomoc

    Dodano po 1 [godziny] 3 [minuty]:

    Google mi powiedziało, że układ smsc FDC37N869 zajmuje się m.in. obsługą:
    IBM PC/XT, PC/AT, and PS/2 Compatible Bi-directional Parallel Port
    więc to on wszystko tłumaczy. Pytanie: jak ko użyć, żeby go nie zepsuć i zrealizować cel podany w temacie wątku?(oczywiście jest przylutowany do płyty głównej)
  • #25
    bobycob
    Level 20  
    Przypadkiem trafiłem na ten wątek. Przyszło mi coś podobnego do głowy.
    Podłączenie klawiatury którą uważam za wygodną do pc np z laptopa Lenovo Thinkpad.

    Trafiłem na takie coś:
    Link