Jak poprawić stabilno¶ć odczytu klawiatury 6x6 dla PIC-a przy użyciu asemblera?
Obsługa klawiatury i drgania styków
From: "~Filut~" <pawel_at_nospam_filuts.waw.pl>
Subject: Obsługa klawiatury i drgania styków
Date: Tue, 7 May 2002 16:26:33 +0200
Witam !
Ostatnio podłączyłem do swojego PIC`a klawiaturę (napylaną) 6x6.
W asemblerze wykorzystuję algorytm tzw. przemiatania...
Jest jednak problem: Klawiatura ta jest kiepskiej jako¶ci i są straszne
przekłamania - wci¶nięty klawisz drga.
Czy kto¶ może podesłać przykład algorytmu, który wyeliminował by ten problem
??
Próbowałem dać opóźnienia przy odczytach stanów klawiatury w głównej pętli.
Spowalania to niestety działanie programu.
Z góry dziękuje i pozdrawiam
From: <mstanisz_at_nospam_poczta.onet.pl>
Subject: Re: Obsługa klawiatury i drgania styków
Date: 7 May 2002 16:53:25 +0200
Czy kto¶ może podesłać przykład algorytmu, który wyeliminował by ten problem
??
Próbowałem dać opóźnienia przy odczytach stanów klawiatury w głównej pętli.
Spowalania to niestety działanie programu.
Opóźnienie trzeba dać - nie ma dwóch zdań. Tylko robisz tak, że odczytujesz
stan klawiszy. I dopiero kiedy wykryjesz naci¶nięty, czekasz (kilkadziesiąt
ms), potem czekasz, aż go puszczą, następnie jeszcze kilkadziesiąt ms.
Naci¶nięcie klawisza jest na tyle rzadką operacją, że opóźnienia nie powinny
przeszkadzać.
Algorithm by Irek Niemczyk :-) -> może mnie nie pobije, a duży jest ;-)
Marcin
--
Wysłano z serwisu OnetNiusy: http://niusy.onet.pl
From: "~Filut~" <pawel_at_nospam_filuts.waw.pl>
Subject: Re: Obsługa klawiatury i drgania styków
Date: Tue, 7 May 2002 17:24:29 +0200
Użytkownik <mstanisz_at_nospam_poczta.onet.pl> napisał w wiadomo¶ci
news:56fe.00000e39.3cd7ea64_at_nospam_newsgate.onet.pl...
Czy kto¶ może podesłać przykład algorytmu, który wyeliminował by ten
problem
??
Próbowałem dać opóźnienia przy odczytach stanów klawiatury w głównej
pętli.
Spowalania to niestety działanie programu.
Opóźnienie trzeba dać - nie ma dwóch zdań. Tylko robisz tak, że
odczytujesz
stan klawiszy. I dopiero kiedy wykryjesz naci¶nięty, czekasz
(kilkadziesiąt
ms), potem czekasz, aż go puszczą, następnie jeszcze kilkadziesiąt ms.
Naci¶nięcie klawisza jest na tyle rzadką operacją, że opóźnienia nie
powinny
przeszkadzać.
Tak, ale muszę sprawdzać 68 klawiszy (muzycznych) z założeniem, że może być
wci¶niętych np 10 klawiszy :(
Pozdrawiam
From: Andrzej Ekiert <treike_at_nospam_zeus.polsl.gliwice.pl>
Subject: Re: =?ISO-8859-2?Q?Obs=B3uga_klawiatury_i_drgania_styk=F3w?=
Date: Tue, 07 May 2002 18:18:57 +0200
~Filut~ wrote:
Próbowałem dać opóźnienia przy odczytach stanów klawiatury w głównej
pętli. Spowalania to niestety działanie programu.
Je¶li masz wolny timer możesz rozwiązać problem za pomocą przerwania. Gdy
zauważasz zmianę stanu klawisza ustawiasz flagę pt. "klawisz x,y się
zmienił" i rozpoczynasz odliczanie (od 30 do 100 <?> ms w zależno¶ci od
tego jak zła jest klawiatura). Dopóki nie otrzymasz przerwania z timera nie
uwzględniasz już żadnych zmian na tym klawiszu. Po przerwaniu odczytujesz
raz jeszcze stan klawisza i tę warto¶ć uznajesz za ważną. Sprawy się nieco
komplikują, je¶li normalny odstęp między naci¶nięciami różnych klawiszy
może być mniejszy niż twój timeout (ale nie bardzo mam pomysł jak to wtedy
rozwiązać). Czasem się na pewno będzie zdarzać, że następny klawisz
zostanie naci¶nięty podczas odliczania - ale je¶li to jest tylko
sporadyczna sytuacja to możesz wtedy "przedłużać" timeout. Je¶li
naci¶nięcia klawiszy będą cały czas trafiać w czas odliczania, to wtedy
odliczanie nigdy się nie skończy - na to trzeba uważać.
--
Polskie Forum Microchipa
http://www.ekiert.com/microchip/
:wq
From: "~Filut~" <pawel_at_nospam_filuts.waw.pl>
Subject: Re: Obsługa klawiatury i drgania styków
Date: Tue, 7 May 2002 18:24:50 +0200
Użytkownik "Andrzej Ekiert" <treike_at_nospam_zeus.polsl.gliwice.pl> napisał w
wiadomo¶ci news:ab8uqi$6ei$1_at_nospam_zeus.polsl.gliwice.pl...
~Filut~ wrote:
Próbowałem dać opóźnienia przy odczytach stanów klawiatury w głównej
pętli. Spowalania to niestety działanie programu.
Je¶li masz wolny timer możesz rozwiązać problem za pomocą przerwania. Gdy
zauważasz zmianę stanu klawisza ustawiasz flagę pt. "klawisz x,y się
zmienił" i rozpoczynasz odliczanie (od 30 do 100 <?> ms w zależno¶ci od
tego jak zła jest klawiatura). Dopóki nie otrzymasz przerwania z timera
nie
uwzględniasz już żadnych zmian na tym klawiszu. Po przerwaniu odczytujesz
raz jeszcze stan klawisza i tę warto¶ć uznajesz za ważną. Sprawy się nieco
komplikują, je¶li normalny odstęp między naci¶nięciami różnych klawiszy
może być mniejszy niż twój timeout (ale nie bardzo mam pomysł jak to wtedy
rozwiązać). Czasem się na pewno będzie zdarzać, że następny klawisz
zostanie naci¶nięty podczas odliczania - ale je¶li to jest tylko
sporadyczna sytuacja to możesz wtedy "przedłużać" timeout. Je¶li
naci¶nięcia klawiszy będą cały czas trafiać w czas odliczania, to wtedy
odliczanie nigdy się nie skończy - na to trzeba uważać.
Dokładnie !
Kupiłem dzisiaj PIC`a _at_nospam_ 20Mhz. Zobaczę, czy będą mniejsze kłopoty.
Pozdrawiam
From: "~Filut~" <pawel_at_nospam_filuts.waw.pl>
Subject: Re: Obsługa klawiatury i drgania styków
Date: Fri, 10 May 2002 20:50:44 +0200
Użytkownik "~Filut~" <pawel_at_nospam_filuts.waw.pl> napisał w wiadomo¶ci
news:ab8orb$1sr$1_at_nospam_news.tpi.pl...
Witam !
Ostatnio podłączyłem do swojego PIC`a klawiaturę (napylaną) 6x6.
W asemblerze wykorzystuję algorytm tzw. przemiatania...
Jest jednak problem: Klawiatura ta jest kiepskiej jako¶ci i są straszne
przekłamania - wci¶nięty klawisz drga.
Czy kto¶ może podesłać przykład algorytmu, który wyeliminował by ten
problem
??
Próbowałem dać opóźnienia przy odczytach stanów klawiatury w głównej
pętli.
Spowalania to niestety działanie programu.
A co powiecie o zastosowaniu układu np. mm74c923 ??
Pozdrawiam
From: "Marek Dzwonnik" <mdz_at_nospam_message.pl>
Subject: Re: Obsługa klawiatury i drgania styków
Date: Fri, 10 May 2002 21:48:49 +0200
Użytkownik "~Filut~" <pawel_at_nospam_filuts.waw.pl> napisał w wiadomo¶ci
news:abh4pb$gjr$1_at_nospam_news.tpi.pl...
A co powiecie o zastosowaniu układu np. mm74c923 ??
16 key Encoder / 20 Key Encoder
http://www.ece.uiuc.edu/eshop/availablemodules/CPLD/mm74c922.pdf
Nie kolejkuje wci¶niętych klawiszy - procesor musi nadążać z ich
odbieraniem.
Dostępny w Cyfronice. Jedyne 69,30PLN/szt. Taniej wyjdzie wsadzenie ciut
mocniejszego procka, który wyrobi się ze skanowaniem matrycy i będzie miał
jeszcze czas, żeby się ponudzić :-)
--
Marek Dzwonnik mdz_at_nospam_message.pl
GG: #2061027 (zwykle jako 'dostępny-niewidoczny')
From: "~Filut~" <pawel_at_nospam_filuts.waw.pl>
Subject: Re: Obsługa klawiatury i drgania styków
Date: Fri, 10 May 2002 22:10:08 +0200
Użytkownik "Marek Dzwonnik" <mdz_at_nospam_message.pl> napisał w wiadomo¶ci
news:3cdc237a$1_at_nospam_news.home.net.pl...
Użytkownik "~Filut~" <pawel_at_nospam_filuts.waw.pl> napisał w wiadomo¶ci
news:abh4pb$gjr$1_at_nospam_news.tpi.pl...
A co powiecie o zastosowaniu układu np. mm74c923 ??
16 key Encoder / 20 Key Encoder
http://www.ece.uiuc.edu/eshop/availablemodules/CPLD/mm74c922.pdf
Nie kolejkuje wci¶niętych klawiszy - procesor musi nadążać z ich
odbieraniem.
Dostępny w Cyfronice. Jedyne 69,30PLN/szt. Taniej wyjdzie wsadzenie
ciut
mocniejszego procka, który wyrobi się ze skanowaniem matrycy i będzie miał
jeszcze czas, żeby się ponudzić :-)
--
Przed chwilą zamówiłem te scalaki w Fairchild`ie (4 sztuki). Ciekawe, czy
przyjdą ;)
Ale PIC _at_nospam_ 20 Mhz chyba się wyrobi z kolejkowaniem. Obsługuję jeszcze LCD
oraz klawiaturę sterującą Menu (4 klawisze).
Jak przyjdą scalaki to się pobawię ;)
From: "Greg S." <greg_sz_at_nospam_dsuper.net>
Subject: Re: =?iso-8859-1?Q?Obs=B3uga?= klawiatury i drgania
Date: Tue, 14 May 2002 00:26:02 -0400
~Filut~ wrote:
Czy kto¶ może podesłać przykład algorytmu, który wyeliminował by ten
problem
??
Próbowałem dać opóźnienia przy odczytach stanów klawiatury w głównej
pętli.
Spowalania to niestety działanie programu.
A co powiecie o zastosowaniu układu np. mm74c923 ??
To chyba o ile pamietam doc stary uklad i juz nie produkowany.
Jezeli to jest ten o ktorym mysle to byl robiony jeszcze w latach 80-tych i
tylko przez National'a.
Jak chcesz uzyc cos tego typu to Maxim ma jakis taki uklad na "debouncing" 7
czy 8 stykow.
Ja osobiscie bylbym za rozwiazaniem programowym bo to dosc latwe.
Poszukaj sobie u jakichkolwiek producentow prockow przykladow aplikacji.
Pozdro
Grze..Szy..
From: "~Filut~" <pawel_at_nospam_filuts.waw.pl>
Subject: Re: Obsługa klawiatury i drgania styków
Date: Fri, 10 May 2002 22:23:30 +0200
Użytkownik "~Filut~" <pawel_at_nospam_filuts.waw.pl> napisał w wiadomo¶ci
news:ab8orb$1sr$1_at_nospam_news.tpi.pl...
Witam !
Ostatnio podłączyłem do swojego PIC`a klawiaturę (napylaną) 6x6.
W asemblerze wykorzystuję algorytm tzw. przemiatania...
Jest jednak problem: Klawiatura ta jest kiepskiej jako¶ci i są straszne
przekłamania - wci¶nięty klawisz drga.
Czy kto¶ może podesłać przykład algorytmu, który wyeliminował by ten
problem
??
Próbowałem dać opóźnienia przy odczytach stanów klawiatury w głównej
pętli.
Spowalania to niestety działanie programu.
A gdyby tak na wyj¶ciu każdego klawisza dać prosty filtr całkujący (RC albo
OP), który formował by ze szpilek jeden impuls ??
From: "~Filut~" <pawel_at_nospam_filuts.waw.pl>
Subject: Re: Obsługa klawiatury i drgania styków
Date: Sat, 11 May 2002 20:19:53 +0200
Użytkownik "~Filut~" <pawel_at_nospam_filuts.waw.pl> napisał w wiadomo¶ci
news:abha7a$p3j$1_at_nospam_news.tpi.pl...
Użytkownik "~Filut~" <pawel_at_nospam_filuts.waw.pl> napisał w wiadomo¶ci
news:ab8orb$1sr$1_at_nospam_news.tpi.pl...
Witam !
Ostatnio podłączyłem do swojego PIC`a klawiaturę (napylaną) 6x6.
W asemblerze wykorzystuję algorytm tzw. przemiatania...
Jest jednak problem: Klawiatura ta jest kiepskiej jako¶ci i są straszne
przekłamania - wci¶nięty klawisz drga.
Czy kto¶ może podesłać przykład algorytmu, który wyeliminował by ten
problem
??
Próbowałem dać opóźnienia przy odczytach stanów klawiatury w głównej
pętli.
Spowalania to niestety działanie programu.
A gdyby tak na wyj¶ciu każdego klawisza dać prosty filtr całkujący (RC
albo
OP), który formował by ze szpilek jeden impuls ??