Re: Debouncing

Zeby klawisz zostal uznany jako wcisniety, to sygnal wcisniecia musi trwac _bez_przerwy_ przez jakis okreslony czas. Jak trwal krocej - znaczy wystapilo drganie stykow i liczymy czas od nowa. Potem, jak juz uznamy klawisz za wcisniety, to musimy poczekac na odpowiednio dlugi sygnal puszczenia klawisza (poniewaz podczas puszczania tez moga byc drgania stykow - zle napisany program moglby to zinterpretowac jako szybkie wciskanie).

Rzeczy typu powtarzanie itp. to zaleza juz od "fantazji" programisty.

Reply to
jerry1111
Loading thread data ...

W artykule <bjkbhr$7dm$ snipped-for-privacy@atlantis.news.tpi.pl> Piotr Wyderski napisał(a):

Jesli jest taka mozliwosc, mozesz zastosowac przelacznik typu isostat. Tzn. w jednej pozycji zwiera styki 1 z 2 w drugiej 2 z 3. Wtedy dajesz na 2 stan aktywny, 1 i 3 ,,pul up/down'' do niaktywnego oraz 1 i 3 podlaczasz na wejscia R i S przerzutnika RS.

Jak niemozesz isostata to tak jak Ci ktos ju napisal - musi byc przez jakis czas nieprzerwanie dany sygnal. My na laborkach z mikroprocesorow robilismy 0.2s i dzialalo w sposob pewny. Ale czas pewnie zalezy od tego jakie masz styki.

Pozdrawiam, Paweł

Reply to
Paweł Kołodziej

Auć, co dobrego robisz?

__ Pzd, Irek.N.

Reply to
Ireneusz Niemczyk

Jesli sie nie boimy jakis latajacych zaklocen od np transformatorowki, to wcale nie trzeba sprawdzac powyzszego - pojawienie sie choc jednego impulsu swiadczy o tym ze uzytkownik naprawde klawisz nacisnal.

Problem sie robi jak uniknac zeby kolejne drgania zarowno przy wciskaniu jak i przy puszczaniu nie zostaly odebrane jako kolejne nacisniecia klawisza. No i jak tu zrobic zeby nacisniecie klawisza wprowadzilo jeden znak, a nie jeden co ms :-)

Innymi slowy - czekac trzeba na "solidne" puszczenie klawisza.

Problem w tym kiedy to zrobic ?

- sprawdac klawisze w przerwaniach powiedzmy co 50ms, nie przejmowac sie drganiami - nie przeszkadzaja przy tak wolnym pollingu.

- bezczelnie wydluzyc procedure obslugi zdarzenia wybranego klawiszem do powiedzmy 1s - przy okazji zyskujemy autorepeat i zadnym deboucingiem sie nie przejmujemy.

- w procedurze odczytu klawisza poczekac az do jego zwolnienia. Skuteczne, choc troche nienaturalne. Nie ma AR, no chyba ze zaprogramujemy powrot jesli nie ma zwolnienia przez zadany czas.

- w procedurze odczytu klawisza poczekac najpierw na zwolnienie wszystkich klawiszy. Uniemozliwia niestety sterowanie "z wyprzedzeniem", fifo klawiatury sie czasem przydaje.

- siegnac do listingu spektrum .. skanning leci w przerwaniach, musi sie pare razy ten sam odczyt powtorzyc, ladujemy wtedy znak do bufora, sledzimy zwalnienie klawisza - tez musi byc pare razy pod rzad, mozna szybko pisac, repeata zaprogramowac,

J.

Reply to
J.F.

Jako ciekawostke podaje, ze widzialem kiedys bardzo wymeczone przez studentow mikroswitche, ktore potrafily drgac nawet okolo 60ms.

Projektujac eliminacje drgan stykow zwykle bierzemy nowiutke przyciski, prosto ze sklepu. Zastanawiam sie czy slusznie...

Pozdrawiam, Andrzej Ekiert

Reply to
Andrzej Ekiert

Tue, 9 Sep 2003 20:45:42 +0200 jednostka biologiczna o nazwie "Piotr Wyderski" snipped-for-privacy@hoga.pl wyslala do portu 119 jednego z serwerow news nastepujace dane:

Pewnie na trafopowielaczu od TV ?

Reply to
BLE_Maciek

Wed, 10 Sep 2003 09:24:50 +0200 jednostka biologiczna o nazwie Andrzej Ekiert snipped-for-privacy@to.invalid wyslala do portu 119 jednego z serwerow news nastepujace dane:

Ja mam juz baardzo "wymeczony" przycisk eject w CD-ROMie i przy nacisnieciu potrafi wysunac szufladke zeby po gdzies sekundzie wciagnac ja spowrotem. Kiedys przycielo mi plyte przy wyjmowaniu przez to :-)

Reply to
BLE_Maciek

Osoba podająca się za: Ireneusz Niemczyk przyczyniła się do uszczuplenia moich skromnych zasobów dyskowych ;-) wraz z kolejną wiadomością wysłaną

03-09-09 20:23:

Irek, mógłbyś poprawić delimiter?

Reply to
badworm

W wersji pierwotnej rzeczywiscie tak bylo, ale powielacz jest dosc niewygodny (trudno siego rozbudowywuje), wiec zrobilem wlasny. :-)

Pozdrawiam Piotr Wyderski

Reply to
Piotr Wyderski

W artykule <bjn4a9$k7f$ snipped-for-privacy@panorama.wcss.wroc.pl> Piotr Wyderski napisal(a):

A mnie się udało :-) Co prawda aplikacja mało czasowymagająca (cóż za piękne słowo ;-)). Odświeżanie i ADC na komparatorze chodzą w przerwaniach, asynchronicznie do pętli głównej, w której są sprawdzane przyciski.

Marcin Stanisz

Reply to
Marcin Stanisz

On Behalf Of Marcin Stanisz

To i ja dołoże swoje. Mega128. Przerwanie na Timer0 z preskalerem na 1024 Przerwanie Timer1 z preskalerem 8. Tim0 zmniejsza licznik (danego przycisku)do zera. Oczywiście tylko jeśli jego wartość jest <>0. Tim1 sprawdza stan klawisza jeśli jego licznik jest =0. Obowiązuje dla stanu klawisza 0 oraz dla stanu 1. Zmiana stanu zostaje zapisana jako aktualna i wpisywana jest liczba do jego licznika.

Pętla główna uznaje za klawisz wciśnięty dopiero kiedy jego wartość jest 1 (zwierają do masy) i licznik jest równy 0, a poprzednio uznany stan klawisza był 0, czyli licznik zliczył do zera, w czasie kiedy przy każdym przerwaniu Tim1 na wyprowadzeniu podłączonym do klawisza było 0. W ten sposób reaguje tylko na zwolnienie klawisza, pozwala to na np. wciśnięcie jednocześnie drugiego klawisza aby spokojnie wycofać się z zamiaru czegoś tam. Podobnie jak wciśnięcie przycisku myszy nad np."klawiszem Anuluj" i trzymając wciśnięty przesunięciu nad inny obszar. Klawisze kursora mają jeszcze dodatkowo licznik zwłoki, żeby w przypadku dłuższego przyciśnięcia, po zmniejszeniu licznika zwłoki do zera (w przerwaniu timer0) następowała "automatyczna" inkrementacja lub dekrementacja.

Zainteresowanym udostępnię oryginał. W BASCOM :-P

pzdr Artur

PS1 Trzeci timer steruje jasnością podświetlenia i kontrastem. mega128 jest piękna ;-)

PS2 do Miłosza. Jak się spotkamy to pokażę Ci jak za pomocą BASCOMa można przerobić program "mało czasochłonny" na "czasożerny" ;-)

PS3 do Wszystkich. ale BASCOM i tak jest OK. Można się dużo nauczyć, szczególnie przy pisaniu procedur w asm. ;-)

PS4 do mnie Zaślęczyłbym się na śmierć gdyby nie BASCOM ;-)

Reply to
ziel

Ależ oczywiście, jaki sobie życzysz?

Miłej nocki. __ Pzd, Irek.N.

Reply to
Ireneusz Niemczyk
Reply to
Piotr Wyderski

On Behalf Of Ireneusz Niemczyk

ja to bym chciał w serduszka i koniecznie na koniec kratkę w stylu tartan klanu Stuard ;-) pzdr Artur

Reply to
ziel

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.