Elektroda.pl
Elektroda.pl
X
Proszę, dodaj wyjątek dla www.elektroda.pl do Adblock.
Dzięki temu, że oglądasz reklamy, wspierasz portal i użytkowników.

Klawiatura numeryczna PC - nie zawsze 'łapie zasilanie'

16 Cze 2010 10:35 930 6
  • Poziom 10  
    Witam,
    potrzebowałem przygotować interfejs do wpisywania danych, wybrałem wiec klawiaturke PC. Podłączyłem ją do procka (avr, ale to nie jest istotne) i ogólnie działa bardzo dobrze, ale problem w tym, ze podczas podłączania na początku musze kilkakrotnie włożyć i wyciągnąć i włożyć (i tak nierzadko kilka razy) wtyk do gniazdka ps/2 przez ktory komunikuje sie mikrokontroler. Za ktoryms razem lampeczka na klawiaturce zapala sie, klawiatura 'zaskakuje' i juz moge na niej pisać.
    Interfejs programowy jest taki jak tutaj:
    http://aq.ia.agh.edu.pl/Aquarium/LABS/uP/Klawiatura.pdf
    Intefejs sprzetowy:
    KBD_CLOCK i KBD_DATA są podłączone bezposrednio do pinow procesora i oba podciągniete do 5V poprzez rezystory 4,7k. Procek normalnie zaskakuje a klawiatura tylko jak sie jej zachce. Czy ktos mial podobny problem, albo posiada wiedze co moze byc nie tak, czego jeszcze brakuje. W razie potrzeby schemat całości moge pozniej wkleic (teraz nie mam takiej mozliwosci). Moze jakies sugestie jak ugryzc ten temat?
    Z gory dzieki

    Proszę poprawić pisownię!
    Robak

    edit: czy chodzi o brak polskich znakow? troszke poprawilem, ale nie widze sensu, bo poza tym bledow ortograficznych nie widze. W kazdym razie jezeli chodzi o polskie znaki to przepraszam:), na komputerze rzadko je uzywam.

    Tak, chodzi o polskie znaki. Proszę je poprawić w obu postach.
    Robak
  • Użytkownik usunął konto  
  • Poziom 10  
    Tak, to jest klawiaturka USB ktora podłączam poprzez adapter pasywny USB->PS/2. Dzieki za sugestie.
    Poszukalem na freescale i znalazlem note odnosnie procka wykorzystanego w klawiaturze multimedialnej:
    http://www.freescale.com/files/microcontrollers/doc/ref_manual/DRM014.pdf

    Hmm to co piszesz wydaje sie prawdopodobne, bo kiedy podlaczam zwyczajna klawiature ps/2 to zaskakuje od razu, a ta z usb.. no wlasnie za ktoryms tam razem po wlozeniu wtyku (srednio po 3-4 razie).

    wg tego co napisali w nocie od freescale napisalem inicjacje linii CLK po restarcie procka i podpietej klawiaturze (DATA jest jest juz ustawiona na "1")

    Code:

    ..
    ATKbdClkOut();
    ATKbdClrClk(); // przytrzymuje linie na poczatku (ale w sumie czy to robie czy nie to efekt ten sam)
    _delay_ms(350); // 350ms
    int n=20;
    while(n--) // na poczatku bylo bez while, a pozniej wrzucilem jeszcze petle, by moze za ktoryms razem klawiatura 'zaskoczyla'
    {
       ATKbdClkIn(); // ustaw CLK jako wejście - tym samym rezystor podciagajacy ustawi "1" na linii
       ATKbdSetClk(); // dla pewnosci "1"
       _delay_ms(1); // 1ms
       ATKbdClkOut();
       ATKbdClrClk(); // "0"
       _delay_ms(1); // 1ms
    }
    ATKbdClkIn();
    ATKbdSetClk(); // dla pewnosci "1"
    ..

    .. i dalej nic. Klawiatura zachowuje sie tak samo.
    Kurcze czy cos robie nie tak? Moze jeszcze jakies sugestie..

    Pisownia...
    Robak
  • Poziom 18  
    1) A ile czasu od podłączenia zasilania czekasz aż "zaskoczy"? Po ilu sekundach stwierdzasz, że nie zaskoczyła?
    2) Strzelam - może przyczyna leży nie w klawiaturze a w programie jej obsługi. Jak wiesz, przy rozruchu może ona wysłać informację o poprawnym self-test. Może program ma jakiś problem z odbiorem tej informacji?
  • Poziom 24  
    Generalnie mój problem z klawiaturą USB z przejściówką na PS/2 polegał na tym, że klawiatura ciągle spamowała 0xAA, czyli coś type self-test OK. Z tym, że zwykła PS/2 wysyła to raz, a wspomniana USB wysyłała to ciągle. Ostatecznie zastosowałem zwykłą bez przejściówek. Sprawdź, może Twoja też spamuje.
  • Użytkownik usunął konto  
  • Poziom 24  
    Nie rozwiązywałem problemu, ponieważ taka bez przejściówki działa na obecnym kodzie bez zarzutu. Ale dziękuję za radę, jak kiedyś będę miał coś takiego pod ręką to sprawdzę.