na czym dokladnie polega eliminowanie drgan stykow?
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.
Didn't find your answer? Ask the community — no account required.
P
Paweł Kołodziej
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ł
P
Piotr Wyderski
Tak, chodzi o zwyczane microswitche -- dam wiec 16 ms dla swietego spokoju, tym bardziej, ze to steruje dziesiatkami kilowoltow*, wiec nie chce ryzykowac porazenia przypadkowym wlaczeniem -- niegrozne, ale bardzo nieprzyjemne. :-( Wielkie dzieki za rzeczywiste dane!
Oczywiscie, rowniez nie zamiezam czekac do puszczenia. Po prostu mialem za duzo pomyslow rozwiazania problemu, ale akurat propozycja Jerrego nie przyszla mi do glowy, choc moje rozwiazanie z czasem martwym jest mu w zasadzie rownowazne. Coz, klawiaturki jeszcze w zyciu nie oprogramowywalem.
Dziekuje, wzajemnie. :-)
Pozdrawiam Piotr Wyderski
(*) Koncze stabilizowany zasilacz WN do doswiadczen.
M
Marek Dzwonnik
U¿ytkownik "Piotr Wyderski" snipped-for-privacy@hoga.pl napisa³ w wiadomo¶ci news:bjl2kh$j8b$ snipped-for-privacy@nemesis.news.tpi.pl
Kiedy¶ opisa³em swój sposób klawiszowania - mo¿e Ci siê przyda:
formatting link
I
Ireneusz Niemczyk
Auć, co dobrego robisz?
__ Pzd, Irek.N.
P
Piotr Wyderski
Miala byc zabawka do doswiadczen fizycznych z WN (0--30 kV, o niskiej wydajnosci pradowej, rzedu 1 mA), ale cierpialem na nadmiar wolnego czasu i troche mnie ponioslo przy konstruowaniu i oprogramowywaniu tego :-))) Zostala mi wlasnie klawiaturka, ale drgania stykow bardzo przeszkadzaja.
Pozdrawiam Piotr Wyderski
G
GrzesieG
"Piotr Wyderski" napisa³:
Inne rozwi±zanie to sprzêtowe t³umienie za pomoc± sta³ej RC, co w przypadku AVR'ów jest proste i pewne, bo ka¿de wej¶cie ma "shmita".
J
J.F.
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.
A
Andrzej Ekiert
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
B
BLE_Maciek
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 ?
B
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 :-)
B
badworm
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?
P
Piotr Wyderski
W wersji pierwotnej rzeczywiscie tak bylo, ale powielacz jest dosc niewygodny (trudno siego rozbudowywuje), wiec zrobilem wlasny. :-)
Pozdrawiam Piotr Wyderski
M
Marcin Stanisz
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
F
Fish
U¿ytkownik "Marcin Stanisz" snipped-for-privacy@poczta.onet.pl> napisa³ w wiadomo¶ci news: snipped-for-privacy@COS13.ilf.com...
A ja mam bardzo z³e wspomnienia po programie w którym przyciski rozpoznawa³em w g³ównej pêtli. Dlatego teraz zawsze robiê to w przerwaniach od timera. Najczê¶ciej ustawiam przerwanie co 4 ms a klawisz rozpoznawany jest po 2 jednakowych odczytach klawiatury. Tylko ostatnio musia³em daæ 4 odczyty poniewa¿ u¿yta by³a klawiaturka membranowa. Przy okazji takiego rozwi±zania bardzo ³atwo robi siê autopowtarzanie - nawet dynamiczne o zmiennej prêdko¶ci, wykrywanie d³ugich wci¶niêæ klawiszy i pomiar wszystkich potrzebnych w programie czasów.
F
Fish
U¿ytkownik "Ireneusz Niemczyk" snipped-for-privacy@multispedytor.com.pl> napisa³ w wiadomo¶ci news: snipped-for-privacy@multispedytor.com.pl...
A po prostu szybko mi siê ba³agan zrobi³ z tym dekodowaniem, szczególnie ¿e w wielu miejscach musia³em reagowaæ na d³ugie naciskanie klawisza co dodatkowo komplikowa³o mi robotê. W pewnym momencie stwierdzi³em ¿e ju¿ nie panujê nad tym co siê w programie dzieje. Ale o dziwo jednak dzia³a³o i dzia³a poprawnie do dzisiaj :-) Powód tego, ze zdecydowa³em siê na takie rozwi±zanie by³ taki, ¿e to mia³ byæ prosty programik do napisania w godzinê. I w³asnie tak do niego podesz³em ale zaraz siê okaza³o ¿e potrzebna jest jeszcze taka funkcja, potem jeszcze inna.... I tak w krótkim czasie prawie 2kB kodu siê zrobi³o ;-)
A czemu nie? Szczególnie jak mo¿na w³o¿yæ ca³y gotowy i sprawdzony modu³? Przy okazji jak wcze¶niej pisa³em mam taktowanie ca³ego programu i flagi sygnalizuj±ce up³yw ró¿nych odcinków czasu.
Z
ziel
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 ;-)
I
Ireneusz Niemczyk
Ależ oczywiście, jaki sobie życzysz?
Miłej nocki. __ Pzd, Irek.N.
P
Piotr Wyderski
A bo program to sie projektuje _zanim_ sie go zacznie pisac. :-) Na etapie analizy przypadkow uzycia wychodzi wiekszosc zaleznosci, dzieki czemu podczas fazy projektowania mozna latwo wyeliminowac wspolne podgrafy, nadac im szumna nazwe modulow itp. Ty najpierw zaczales pisac, a dopiero pozniej przemyslales sprawe, wiec nie ma co sie dziwic, ze pojawily sie problemy. :-)
I jestes sam sobie winien. :o))) _Najpierw_ przypadki uzycia, a _dopiero pozniej_ myslenie, czy w ogole napisac program (nie wspominajac nawet o tym _jak_ napisac ten program). W chwili obecnej elementy inzynierii oprogramowania moga bardzo przydac sie elektronikom, wiec naprawde warto sie z nimi zapoznac. W prawie kazdej dziedzinie najpierw powstaje analiza, pozniej projekt, a dopiero na koncu jego implementacja, lecz nie wiedziec czemu w informatyce i programowaniu wielu ludzi wklada sporo energii w odwrocenie tej kolejnosci. :-)))
A po co? Tzn. jesli petla glowna robi cos istotnego o blizej nieznanym czasie trwania, to oczywiscie warto, ale jesli budujemy system czasu rzeczywistego i zostalo troche wolnych cykli, to nie ma potrzeby pchac sie w przerwania.
Pozdrawiam Piotr Wyderski
Z
ziel
On Behalf Of Ireneusz Niemczyk
ja to bym chciał w serduszka i koniecznie na koniec kratkę w stylu tartan klanu Stuard ;-) pzdr Artur
Join the Discussion
Have something to add? Share your thoughts — no account required.
Didn't find your answer?
Ask the community — no account required
Report Content
You are reporting this content to the moderators. They will look at it
ASAP.