Kanał - ATNEL tech-forum
Wszystkie działy
Najnowsze wątki



Teraz jest 16 maja 2026, o 15:23


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 36 ]  Przejdź na stronę 1, 2  Następna strona
Autor Wiadomość
PostNapisane: 3 kwi 2013, o 23:16 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 mar 2012
Posty: 58
Lokalizacja: Warka/Wawa
Pomógł: 0

Witam analizuje sobie kod z tematu podanego w tytule czyli:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


w opisie Pan Mirek napisał:
"W pierwszym momencie sprawdzamy czy nasza zmienna pomocnicza do obsługi klawisza key_lock, jest równa zero oraz czy wciśnięty jest klawisz? Jeśli tak to najpierw nadajemy naszej zmiennej key_lock wartość = 1 a następnie wykonujemy naszą najprostszą akcję, czyli zmieniamy stan diody LED. [...]Jeżeli jednak klawisz nie był wciśnięty to sprawdzamy po else, czy z kolei klawisz jest zwolniony a także czy zmienna key_lock posiada już wartość = 1. Jeśli nie, to naturalnie obsługa klawisza się kończy. Jeśli zaś wcześniej została wykonana akcja, i dojdzie do ponownego obiegu pętli głównej, to z uwagi na to, że key_lock jest już = 1 pierwsza część warunku się nie wykona (nawet jeśli nadal trzymamy wciśnięty klawisz. Taka sytuacja będzie się powtarzała aż go zwolnimy."

I tutaj wg mojej dedukcji pierwsza część warunku po powrocie pętli się wykona:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Uff mam nadzieje, że ktoś będzie chciał spojrzeć :)

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 3 kwi 2013, o 23:39 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27460
Lokalizacja: Szczecin
Pomógł: 1045

posłuchaj może sobie rozpisz to tak żebyś lepiej zrozumiał bo coś straszliwie zakręciłeś do granic możliwości ;)

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


no pomyśl sobie - to jest prosta maszyna stanów, skoro key_lock=1, to jak wg ciebie może zostać spełniona pierwsza część warunku w kolejnym obiegu pętli ??? no jak ? skoro na jego początku masz sprawdzane czy key_lock==0 . Druga też nigdy nie zostanie spełniona dokąd klawisz będzie wciąż wciśnięty. Czyli następna możliwa sytuacja to wtedy gdy zwalniasz klawisz i może dojść do spełnienia drugiej części warunku a jednocześnie wyzerowania key_lock - żeby można było powtórzyć całość OD POCZĄTKU

oczywiście ten pierwszy przykład nie uwzględnia drgań styków - pamiętaj o tym, dopiero kolejne przykłady gdzie zamiast key_lock=0 masz key_lock++;

------------------------ [ Dodano po: 4 minutach ]

A może nie kojarzysz co to jest && ??? przecież to oznacza, że warunek się spełni TYLKO wtedy gdy jego pierwszy człon key_lock==0 jest TRUE oraz gdy jego drugi człon (PINC & KEY1)==0 też jest równy zero. Wystarczy że jeden człon jest FALSE to QNIEC ... może pomyliły ci się działania operatorów tzn tablice prawdy dla operacji: AND, OR, XOR itp ?

------------------------ [ Dodano po: 6 minutach ]

generalnie po to ustawiamy key_lock=1 aby zatrzasnąć stan, i żeby już ten warunek nie został spełniony po wykonaniu akcji aż do zwolnienia klawisza i odblokowania (wyzerowania key_lock), które z kolei też nastąpi TYLKO wtedy gdy key_lock jest już raz zatrzaśnięte. To taki troszkę inny opis tego samego.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2013, o 09:18 

Pomógł: 0

SmN napisał(a):
Ten kod w ogólnym przypadku nie działa, bo jest oparty na kilku błędnych założeniach. Czasem, w pewnych warunkach zadziała poprawnie. Dobry tekst na ten temat znajdziesz na konkurencyjnym blogu "mikrokontrolery" - masz tam wyjaśnione dokładnie, co jest źle i jak to zrobić poprawnie.


Co to znaczy ogólny przypadek?, to, że nie działa dla przyciśniętych kilku klawiszy na raz to każdy wie ;), bo Mirek wyraźnie o tym pisał.

Zresztą sposobów na poradzenie sobie z stanami nieustalonymi (sprzętowymi, czy programowymi bo to o to chodzi).
Rozwiązanie Mirka jest proste i eleganckie, a rozwiązanie Deucalion nadaje się do klawiatur matrycowych.

I po co te bicie piany?



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2013, o 09:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lis 2011
Posty: 534
Lokalizacja: Mierzyn
Pomógł: 9

Rez po to zeby prowokowac .

_________________
pozdrawiam
Jachu



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2013, o 09:25 

Pomógł: 0

No ale po co? nie lepiej tą energie przekierować w wytłumaczenie co i jak.......
Mnie na przykład brakuje klawiatury matrycowej po i2c i z chęcią bym poczytał od strony programowej jak to zrealizować, bo sprzętową ogarniam.



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2013, o 09:36 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lis 2011
Posty: 534
Lokalizacja: Mierzyn
Pomógł: 9

rezasurmar napisał(a):
No ale po co? nie lepiej tą energie przekierować w wytłumaczenie co i jak.......
Mnie na przykład brakuje klawiatury matrycowej po i2c i z chęcią bym poczytał od strony programowej jak to zrealizować, bo sprzętową ogarniam.


Rez ja to napisalem z naciskiem na prowokowac. Dla mnie to idiotyczne . Ja sie z Toba calkowicie zgadzam ze lepiej ta energie wykorzystac do czegos innego np odśnieżania :)

_________________
pozdrawiam
Jachu



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2013, o 09:51 

Pomógł: 0

No ja wiem, że z naciskiem ;) w końcu mówimy o przyciskach to i z naciskiem :D.



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2013, o 10:03 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27460
Lokalizacja: Szczecin
Pomógł: 1045

SmN napisał(a):
Ten kod w ogólnym przypadku nie działa, bo jest oparty na kilku błędnych założeniach. Czasem, w pewnych warunkach zadziała poprawnie. Dobry tekst na ten temat znajdziesz na konkurencyjnym blogu "mikrokontrolery" - masz tam wyjaśnione dokładnie, co jest źle i jak to zrobić poprawnie.


Po pierwsze - czy kolega nie zauważył PRZYPADKIEM co odpisałem ?

mirekk36 napisał(a):
oczywiście ten pierwszy przykład nie uwzględnia drgań styków - pamiętaj o tym, dopiero kolejne przykłady gdzie zamiast key_lock=0 masz key_lock++;



Po DRUGIE - czytał kolega cały ten artykuł na blogu ? ....

Nic tu nie jest oparte na żadnych błędnych założeniach - TYLKO krok po kroku tłumaczę co i jak , rozwijając kod od podstawowych nie działających i źle opisywanych na innych blogach wersji rzekomych eliminacji drgań styków - przeprowadzając czytelnika artykułów (serii artykułów) od najprostszych DYDAKTYCZNIE - podkreślam DYDAKTYCZNIE kodów. I DLATEGO zwracam wręcz sam uwagę - że akurat ta pierwsza wersja kodu nie będzie działać poprawnie bo w ogóle nie uwzględnia drgań styków.

Potem są kolejne wersje z opisem jak do tego podchodzić w coraz bardziej zaawansowany sposób ale jeszcze bez Timera sprzętowego czy programowego - ot tak w poolingu w pętli głównej .... zwracając jednocześnie uwagę na ograniczenia wielkości typu zmiennej key_lock i czasem konieczności jego zwiększenia do np uint16_t w zależności WŁAŚNIE od drgań styków różnych klawiszy z jakimi może się czytelnik artykułu spotkać - tak żeby sobie z tym poradził .....

NIE JEST TO JEDNAK ŻADNE BŁĘDNE ZAŁOŻENIE - obsługa klawiszy NIE ZAWSZE MUSI BYĆ robiona z udziałem timerów sprzętowych jak widać czy programowych - może działać w poolingu w pętli głównej i w NAJMNIEJSZYM stopniu nie ma takie rozwiązanie WAD ... bo rozwiązań jest wiele - tyle ilu programistów na świecie. A to że komuś uderza woda sodowa do głowy i wydaje mu się że TYLKO jego rozwiązania są najlepsze na świecie to już pominę minutą ciszy żeby nie wywoływać wojny.

------------------------ [ Dodano po: 2 minutach ]

I powiem WPROST - UWAGA! ..... ja NIKOMU nie bronię czytania czy zaglądania czy czerpania wiedzy skąd kolwiek, z dowolnego źródła nawet z tego bloga którego wymieniasz ..... wręcz przeciwnie - każdy sobie sam potrafi wybierać co, gdzie i kiedy chce czytać ....

Dla mnie nie jest to żaden konkurencyjny blog - bo ja z NIKIM nie idę w konkury, nie konkuruję - dla mnie takich blogów czy serwisów czy forów może być jeszcze milion w internecie i będę się z tego cieszył a nawet będę linki wskazywał do innych, poza tym jednym - którego autor uważa że KAŻDY z nim konkuruje.

NIE ŻYCZĘ SOBIE więc żadnych linków i linkowania do tego bloga na tym forum i KONIEC. Nie ma żądnej dyskusji na ten temat - mówię to otwarcie i mam nadzieję, że raz a dotrze to do kolegi SmN. Jeśli nie to zapraszam do zmiany forum - po co tu się męczyć ?

------------------------ [ Dodano po: 4 minutach ]

rezasurmar napisał(a):
... nie lepiej tą energie przekierować w wytłumaczenie co i jak.......


Dla mnie i dla większości ludzi na TYM forum - to jest jego ISTOTĄ - a nie oszalałe linkowanie i czepialstwo.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2013, o 10:19 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 mar 2012
Posty: 58
Lokalizacja: Warka/Wawa
Pomógł: 0

Panowie... po co było tyle pisać. Takie wpisy należy po prostu ignorować co spowoduje, że tacy delikwenci nie będą mieli po co pisać. Wieczorem sobie przeanalizuje konkretną odpowiedź Mirka na moje konkretne pytanie, bo teraz jestem w pracy :D.

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2013, o 10:21 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lis 2011
Posty: 534
Lokalizacja: Mierzyn
Pomógł: 9

Kvite napisał(a):
Panowie... po co było tyle pisać. Takie wpisy należy po prostu ignorować co spowoduje, że tacy delikwenci nie będą mieli po co pisać. Wieczorem sobie przeanalizuje konkretną odpowiedź Mirka na moje konkretne pytanie, bo teraz jestem w pracy :D.


powodzenia jak dojedziesz do jakiegos wniosku podziel sie :)

_________________
pozdrawiam
Jachu



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2013, o 10:23 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27460
Lokalizacja: Szczecin
Pomógł: 1045

Jeszcze raz powtarzam czytałeś cały artykuł

http://mirekk36.blogspot.com/2012/10/ob ... w-cd2.html

czytałeś na końcu o rozwiązaniu

http://mirekk36.blogspot.com/2012/10/ob ... a-cd3.html

z timerem ????? czy nie ?

Ja nie mam klapek na oczach - i nawet sam sobie przeczysz w tym co piszesz

Cytuj:
Jak się trafi dobry i nowy przycisk to ten kod powyżej zadziała


No to jak - jednak zdarzą się przypadki że zadziałaaaaa ??? oooo jej ... a przecież jeszcze przed chwilą pisałeś że nie zadziała

tu - TU sobie spójrz - otwórz oczy:

Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


widzisz to: ?

Kod:
uint16_t key_lock;


widzisz to:

Kod:
key_lock = 50000;


??? czy nie widzisz ? a może kłopot w tym że nie chcesz widzieć ? może masz jakieś okulary polaryzacyjne ?

a teraz UWAŻAJ - bo wiem że NIE CZYTAŁEŚ tekstu - tylko się CZEPIASZ więc ci go tutaj zacytuję tylko mały fragmencik:

Cytuj:
Gdybyś zaś zechciał skorzystać z jakiegoś wielkiego mechanicznego stycznika, gdzie czas drgań przy zwolnieniu może być sporo dłuższy to nie ma kłopotu. Wystarczy aby zmienna key_lock była 16-bitowa a następnie zainicjalizować ją wartością nie = 1 ale np 50000, tak aby licznik w niej dobiegł do wartości 65535 (czyli do końca), wykonując tym razem o wiele więcej obiegów pętli głównej a jednocześnie wydłużając czas oczekiwania na zniknięcie drgań styków przy zwolnieniu klawisza. Tak ta modyfikacja może wyglądać:


czym daję WYRAŹNIE do zrozumienia że mogą być różne przypadki i opisuję jak także z nimi można sobie poradzić - więc nie pietruszkuj mi tutaj że to zadziała TYLKO z jakimś tam wydumanym nowym klawiszem !

I już nie będę ci pokazywał albo cytował dalszych rozwiązań do których prowadzę czytelnika czyli do rozwiązań opartych właśnie o TIMER - co BOLI ? tego już twoi blogerzy nie zobaczyli ? czy nie chcieli zobaczyć ? ŻAŁOSNE

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2013, o 10:25 

Pomógł: 0

No ale, o którym kodzie mówisz, że nie będzie działać?, przecież na samym początku
mirekk36 napisał(a):
oczywiście ten pierwszy przykład nie uwzględnia drgań styków - pamiętaj o tym, dopiero kolejne przykłady gdzie zamiast key_lock=0 masz key_lock++;
, Mirek napisał, a wydaje mi się, że chodziło tylko o wytłumaczenie zasady.
Po drugie który kod, mówisz, że kod nie będzie działać, który? kod Leonarda DaVinci ?, kod z książki z której strony, kod z blogu mirka?, z której jego części?.
Nie wiem, jak ty, ale jak lubię mieć konkretne argumenty (przykłady), jeżeli włączam się do jakiejś dyskusji.

No i Mirek mnie ubiegł, z dokładnym wytłumaczeniem :).



Ostatnio edytowano 4 kwi 2013, o 10:26 przez rezasurmar, łącznie edytowano 1 raz

Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2013, o 10:26 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27460
Lokalizacja: Szczecin
Pomógł: 1045

rzeczywiście - nawet na moim blogu próbowałem spokojnie z takimi dyskutować ale jak padały moje argumenty jak wyżej to albo się kończyła z nimi dyskusja bo już nie mieli o co się pienić albo wciąż to samo jak mantrę - i tylko jedno jak zahipnotyzowani powtarzali przed usunięciem swoich wpisów

"to nie działa, to nie działa, to nie działa, to nie działa, to jest złe rozwiązanie, to nie działa, to jest złe rozwiązanie, to nie działa ..."

chore

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2013, o 10:27 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 mar 2012
Posty: 58
Lokalizacja: Warka/Wawa
Pomógł: 0

EEEjjjj ale to był MÓJ problem a nie "SmN" :P. Mirek powiem Ci, że masz zdrowie do ludzi :).

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2013, o 10:29 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lis 2011
Posty: 534
Lokalizacja: Mierzyn
Pomógł: 9

Mirek spokojnie szkoda nerwow. Wszystko jest napisane w arcie na blogu krok po kroku. Jak ktos tego nie widzi to pol biedy ale ja nie che zobaczyc to cala bieda i nie nalezy tej biedzie dodawac "żarła" :)

_________________
pozdrawiam
Jachu



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2013, o 10:29 

Pomógł: 0

Bo Mirek to "Jestem oazą spokoju, pierd.......ym kwiatem lotosu na tafli jeziora"



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2013, o 10:33 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27460
Lokalizacja: Szczecin
Pomógł: 1045

No ale zobacz rezasurmar -----> NAJGORSZE jest to że i wyżej TY mówisz - o tym co i ja chciałem przekazać , że to akurat nieszczęśliwy przykład wziął Kvite na tapetę - chociaż widać że rozmowa i pytania Kvite nawet nie dotyczą tu jakby drgań styków a maszyny stanów - zastanawia się nad tym i dyskutujemy

ale NIE - oni zawsze to samo - i popatrz - żadnej reakcji na rzeczowe argumenty - żadnej wciąż mantra i mantra .....

Kvite przepraszam - ale sorki na takie rzeczy MUSZĘ reagować - swoją mantrę może kolega SmN śpiewać na wspomnianym blogu.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2013, o 10:45 

Pomógł: 0

Ja po prostu szanuje ludzi konkretnych, nie interesują mnie ich przekonania polityczne, wyznanie. Ważne by potrafili merytorycznie przekazywać wiedzę, oraz prowadzić dysput na poziomie tj. używać rzetelnej informacji, a nie wyrwanych z kontekstu tekstów czy stwierdzeń.
Takich głąbów to mamy pełno w partii na P :P nie przenośmy tego na poziom niżej.



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2013, o 10:47 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 14 lis 2011
Posty: 534
Lokalizacja: Mierzyn
Pomógł: 9

rezasurmar napisał(a):
Ja po prostu szanuje ludzi konkretnych, nie interesują mnie ich przekonania polityczne, wyznanie. Ważne by potrafili merytorycznie przekazywać wiedzę, oraz prowadzić dysput na poziomie tj. używać rzetelnej informacji, a nie wyrwanych z kontekstu tekstów czy stwierdzeń.
Takich głąbów to mamy pełno w partii na P :P nie przenośmy tego na poziom niżej.


no w wielu partiach na P :)
ok ale robimy offtop :)

_________________
pozdrawiam
Jachu



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2013, o 10:58 

Pomógł: 0

No dlatego dałem tylko pierwszą literę ;), a każdy sobie dopowie resztę ;).



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2013, o 11:07 

Pomógł: 0

Gdzie masz jakieś wycieczki osobiste chłopie?, podaj mi chodź jedną linijkę z wycieczkami osobistymi.
A o pie..... to napisałem o Mirku (mam nadzieje, że Mirek zrozumiał aluzję), no nie mów, że nie znasz tego powiedzonka o lotosie na tafli jeziora ;).
Więcej luzu kolego. Wchodzisz z buciorami w temat, bez argumentacji rzucasz oszczerstwa, a potem masz jeszcze pretensje.



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2013, o 11:16 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 mar 2012
Posty: 58
Lokalizacja: Warka/Wawa
Pomógł: 0

Bo ja czytam sobie te wpisy na Mirka blogu a propos tych "drgań" po kolei tak sobie czytam i staram się zrozumieć. Dotarłem do tego etapu coś mi się nie zgadzało więc postanowiłem zapytać, ale już chyba widzę swój błąd w rozumowaniu, głębiej przeanalizuje wieczorem. BTW potrzebowałbym kodu, na którym mógłbym się oprzeć, żeby zbudować uniwersalny plik z obsługą klawiatury matrycowej (4 wiersze x 3 kolumny), w której w pierwszym etapie sprawdzałbym stan na wierszach a potem na kolumnach (wiadomo odpowiednio w pierwszym etapie kolumny do masy sprawdzenie stanu na wierszach i na odwrót)

To jest odpowiedź nie do kontekstu już całego post'a, tylko do tych najważniejszych informacji, które mnie interesują.

Kolego SmN w moim pytaniu nie było wzmianki ani na chwilę o jakichkolwiek "drganiach styków".

_________________
sig off ;(



Ostatnio edytowano 4 kwi 2013, o 11:21 przez Kvite, łącznie edytowano 1 raz

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2013, o 11:59 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27460
Lokalizacja: Szczecin
Pomógł: 1045

I Quniec dyskusji z SmN ...

Kvite wątek jest znowu cały twój i dla ciebie - przepraszam za to co się działo.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 4 kwi 2013, o 18:52 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 06 mar 2012
Posty: 58
Lokalizacja: Warka/Wawa
Pomógł: 0

Teraz się wszystko zgadza... zapomniałem o tej podstawie if (a==0) jest równoznaczne z if (!a)

Dzięki! jadę sobie z tematem dalej :)

_________________
sig off ;(



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 kwi 2013, o 08:06 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 04 kwi 2013
Posty: 15
Lokalizacja: Legionowo
Pomógł: 1

A nie łatwiej jest zastosować filtr dolnoprzepustowy?
Ja takie stosuje od dawna w każdym projekcie i nie mam żadnych problemów z drganiem styków, wystarczy dodać opornik i kondensator.

Druga zaleta to mniejszy kod i łatwiejszy do późniejszego analizowania ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 kwi 2013, o 08:19 

Pomógł: 0

ADI-mistrzu napisał(a):
A nie łatwiej jest zastosować filtr dolnoprzepustowy?
Ja takie stosuje od dawna w każdym projekcie i nie mam żadnych problemów z drganiem styków, wystarczy dodać opornik i kondensator.

Druga zaleta to mniejszy kod i łatwiejszy do późniejszego analizowania ;)


Kolejny troll? czy dla jaj napisałeś tego posta?........W w/w przypadku nie są problemem same drgania styków ;), a ich obsługa programowa, zresztą jest to dosyć dobrze opisane dlaczego nie powinno się stosować filtru RC do klawiatury.

Po drugie, kod nie jest wcale tak bardzo skomplikowany.....zresztą sam nawet nie muszę dokładnie wiedzieć przecież jak działa biblioteka by z niej korzystać, po trzecie, nie wyobrażam sobie teraz obsługi klawiszy bez opcji wykrywania krótkiego i długiego przyciśnięcia, czy stosowania jakiś delay w kodzie.

Normalnie ręce opadają do samej ziemi.......



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 5 kwi 2013, o 08:35 
Offline
Moderator
Avatar użytkownika

Dołączył(a): 03 paź 2011
Posty: 27460
Lokalizacja: Szczecin
Pomógł: 1045

ADI-mistrzu --> jakbyś przeczytał uważnie chociażby resztki dyskusji BURZY jaka przetoczyła się przez ten wątek ze WYWALONYM już z tego forum userem o nicku SmN, to zobaczyłbyś dlaczego teraz koledze rezasurmar puściły nerwy - mi wczoraj puszczały.

I na prawdę tu nie ma mowy w tym wątku o drganiach styków ale ja dodam dla wyjaśnienia (bo wierzę, że ty niechcący - o ten temat zahaczyłeś) ... że o ile sprzętowa realizacja eliminacji drgań w postaci dodania kondensatora 100nF prawie wystarcza (choć "PRAWIE" robi wielką różnicę jak to było w reklamie żywca) tak jest i tutaj - czasem wystarcza a czasem absolutnie nie - więc programowo zawsze również warto do tego podejść. Ale jeśli chodzi jeszcze o stosowanie dodatkowo rezystora do każdego klawisza - to sorki ..... ale to już pomysł z kosmosu tzn dla mnie (nie twierdzę i nie wciskam ci tu czy nie przekonuję cię na siłę, do swojego zdania) - to już wolałbym jakiś specjalizowany układ MAXIMA zastosować - np:

MAX16054

a nie dodawać mechanizm KOPARKI (rezystor, kondensator) do roweru (procesora) żeby lepiej jeździł (żeby lepiej amortyzował) .... takie jest moje zdanie

i DEFINITYWNIE kończymy w tym wątku dyskusje o DRGANIACH STYKÓW.

_________________
zapraszam na blog: http://www.mirekk36.blogspot.com (mój nick Skype: mirekk36 ) [ obejrzyj Kurs EAGLE ] [ mój kanał YT TV www.youtube.com/mirekk36 ]



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 kwi 2013, o 08:42 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 04 kwi 2013
Posty: 15
Lokalizacja: Legionowo
Pomógł: 1

No z klawiaturą matrycową może być gorzej, to w pozostałych przypadkach sprawdza się idealnie.
Ja osobiście daję kondensator przy pinie i w szeregu do przycisku opornik, zaś obsługa przycisków następuje od przerwań zewnętrznych od opadającego zbocza, dzięki któremu pasmo zabronione mnie nie interesuje (do jednego przerwania można dać multum przycisków).
Jakoś nigdy nie miałem z tym problemów i też mogę także wykrywać długie i krótkie naciśnięcia klawiszy, to w niczym nie przeszkadza.

Ale to takie moje dywagacje, już nie zaśmiecam tematu ;)



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 5 kwi 2013, o 08:53 

Pomógł: 0

Wiesz, wrzuć schemat, kod, by można było samemu przetestować.
Osobiście jestem otwarty na różne sposoby i z chęcią bym przetestował twój sposób w moim "zaciszu" ;).

Zawsze można się czegoś nowego nauczyć.

Po prostu to nie elka, że wpadamy w temat "wołamy" wszem i wobec "Eeeee a ja mam lepszy sposób, prostszy i w ogóle", ale figa z makiem i wam nie pokarze ;).



Góra
  
cytowanie selektywne  Cytuj  
PostNapisane: 5 kwi 2013, o 09:42 
Offline
Nowy
Avatar użytkownika

Dołączył(a): 04 kwi 2013
Posty: 15
Lokalizacja: Legionowo
Pomógł: 1

Wiesz, przyzwyczajenia :P

Już pokazuję na przykładzie:

Schemat:
Obrazek
Jak widać każdy przycisk jest podpięty do oddzielnego pinu (chodź pewnie da się tą sztuczkę zrobić i dla klawiatur matrycowych, ale to może później pomyślę).
Dodatkowo każdy przy pomocy diody jest połączony z przerwaniem zewnętrznym w tym przypadku INT1.
Wszystkie piny są ustawione jako wejścia w stanie wysokim.

Kondensator oraz opornik tworzą filtr dolnoprzepustowy który eliminuje nam problem drgań i ważne jest aby kondensator był ładowany pin'em i rozładowywany po przez rezystor. Jeśli spróbujemy rozładować kondensator (nawet o tak małej pojemności) bezpośrednio przez przycisk, może spowodować to emisję zakłóceń elektromagnetycznych czy też chwilowe zgubienie masy.
Zakłócenia jak i gubienie masy nie jest brane z palca, kiedyś jak zaczynałem zabawę z przyciskami to tak zrobiłem i potem szukałem jak głupi przyczyny "dlaczego restartuje mi się procesor jak wciskam klawisz".

Teoria:
W teorii naciśnięcie przycisku powoduje pojawienie się stanu niskiego na INT1 i wyzwolenie przerwania. W przerwaniu sprawdzany stany pinów (w tym przypadku PD5/6/7) i jeśli wszystkie są w stanie wysokim, oznacza ze został naciśnięty tylko od przerwania. W ten sposób obsługujemy 4 przyciski jednym przerwaniem.

Program:
Programowo wygląda to w sposób następujący.
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

Ustawiamy port jako wejście i podciągamy linie gdzie są nasze przyciski. Dodatkowo włączamy przerwanie od INT1 wyzwalane opadającym zboczem.

Teraz musimy stworzyć funkcję przerwania z uchwytem od INT1:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

W przerwaniu przy pomocy switch sprawdzam stan logiczny na pinach i w ten sposób dokonuje detekcji który został naciśnięty.
Jak widać można na tej podstawie zbudować proste wykrywanie nawet kombinacji naciśnięcia klawiszy (trzeba by było wstawić niewielkie opóźnienie na początku przez switch() ponieważ człowiek nie jest w stanie idealnie w tym samym momencie nacisnąć obydwa klawisze).

W przykładowym schemacie użyty jest jeden przycisk oraz enkoder z przyciskiem, tak więc sposób sprawdza się i przy szybkich sygnałach.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
Wyświetl posty nie starsze niż:  Sortuj wg  
Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 36 ]  Przejdź na stronę 1, 2  Następna strona

Strefa czasowa: UTC + 1


Kto przegląda forum

Użytkownicy przeglądający ten dział: Brak zidentyfikowanych użytkowników i 16 gości


Nie możesz rozpoczynać nowych wątków
Nie możesz odpowiadać w wątkach
Nie możesz edytować swoich postów
Nie możesz usuwać swoich postów
Nie możesz dodawać załączników

Szukaj:
Skocz do:  
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO