Właśnie wlaczę z klawiaturą matrycową w której musi być umozliwione naciśnięcie jednego lub dwóch klawiszy. Narazie w celach testowych mam klawiaturę 4x4. Wszystko to jest podpięte bezpośrednio do portu A uC AVR Tiny26. Kolumny są liniami wyjściowymi, rzędy to linie wejściowe uC z włączonymi pull-upami. Algorytm wygląda tak: Ustawiamy pierwszą kolumnę w stan L, pozostałe w stan H. Rozpoczynamy skanowanie wierszy. Jeżeli natrafimy na stan L na wejściu to zapisujemy kod napotkanego klawisza do pamięci, wskaźnik komórki zwiększamy o 1 i szukamy dalej. Po skończeniu skanowania pierwszej kolumny ustawiamy ją w stan H, a drugą kolumnę w stan L. I rozpoczynamy całe skanowanie od początku. Algorytm działa dobrze, lecz ma jedną wadę. W przypadku gdy są naciśnięte dwa klawiasze w jednym rzędzie zaczyna głupieć. Najczęściej po prostu ich nie widzi :( Próbowałem znaleźć jakieś procedury obsługujące taką klawiaturę w zasobach sieci, ale niczego takiego nie stwierdziłem. Jedynie nota Atmela AVR243 coś tam wspomina o klawiaturze w której można wciskać kilka klawisz, lecz wszystko kończy się na informacji o tym że w pewnej sytuacji pojawia się "ghost key" i podowduje błędy. Żadnych konkretów :( Moze ktoś z grupowiczów stoczył kiedyś pomyślny pojedynek z obsługą takiej klawiatury i mógłby mnie poratować jakimś sprawdzonym algorytmem? Za wszelką pomoc z góry dziękuję...
- posted
19 years ago