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



Teraz jest 16 lut 2025, o 02:22


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 6 sty 2015, o 15:05 
Offline
Użytkownik

Dołączył(a): 07 sty 2014
Posty: 48
Lokalizacja: Radom
Pomógł: 0

Witam wszystkich kolegów i koleżanki z forum.
Jest to mój pierwszy post, zatem z góry przepraszam za błędy.
Potrzebuje pomocy w zrozumieniu działania funkcji superDebounce() przy współpracy z kilkoma przyciskami.
Przy naciskaniu każdego z przycisków osobno wszystko działa wyśmienicie. Problem pojawia się, jeżeli nacisnę jeden przycisk i do tego nacisnę kolejny lub kilka następnych. Potrzebuję by przyciski działały niezależnie i nie blokowały się.
Proszę o pomoc w rozwikłaniu tego problemu.
Poniżej umieszczam mój kod:

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

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


Załączam również link do filmu, który prezentuje działanie programu z zestawem ATB:


------------------------ [ Dodano po: 38 minutach ]

Jeżeli przerobię program i zastosuje pięć niezależnych funkcji superDebounce() i podłączę do każdej niezależny timer programowy, to wszystko działa prawidłowo, tylko pytanie czy da się zrobić to prościej, czy muszę stosować do każdego przycisku nową funkcję superDebounce().:

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


I do tego programu załączam link do filmu:



Ostatnio edytowano 6 sty 2015, o 23:05 przez adam4321, łącznie edytowano 2 razy

Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 sty 2015, o 16:18 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

Kolego filmy wgrywamy na yt nie na dropsy. Chetnie bym pomogl ale z phone nie widze filmu. Z yt bym widzial.

Namazane ze smarta.

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 sty 2015, o 18:41 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 22 paź 2013
Posty: 1967
Lokalizacja: Lipsko
Pomógł: 125

Najprościej timer wywalić przed sekwencję badania przycisków i na jedno wyjdzie. Wszystkie przyciski będą miały stałe opóźnienie, a pętla nadal nie będzie blokowana. Timer ustaw na 25ms.

_________________
http://www.sylwekkuna.com



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 sty 2015, o 19:42 
Offline
Użytkownik
Avatar użytkownika

Dołączył(a): 17 sie 2013
Posty: 3797
Lokalizacja: Grudziądz
Pomógł: 143

Po co to rozbijasz na 5 funkcji chodzi mi o superdebounce?

Skoro posiadasz funkcje superdebounce, potrafisz tworzyc swoje funkcje to zakładam iż nie jestes aż tak początkujący i że posiadasz książkę bb. Nie mniej sądze że jej całej nie przeczytałeś stąd twoje problemy.

Namazane ze smarta.

_________________
Usługi druku przestrzennego - www.drumik.pl



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 sty 2015, o 21:50 
Offline
Użytkownik

Dołączył(a): 07 sty 2014
Posty: 48
Lokalizacja: Radom
Pomógł: 0

Kolego majster, chciałem właśnie uniknąć tworzenia pięciu oddzielnych funkcji opartych o superDebounce. Mój problem występuje gdy stosuję pojedynczą funkcję superDebounce, jeżeli naciskam kilka przycisków jednocześnie to nie wykonują się prawidłowo funkcje zewnętrzne podpięte pod superDebounce (pierwszy kod) a zmienna *key_state nie przyjmuje prawidłowych wartości (tylko jeżeli naciskam dwa lub więcej przycisków jednocześnie) - na filmach wyświetlam tą zmienną na LCD kolejno z każdego przycisku. Jeżeli natomiast zastosuję pięć oddzielnych funkcji superDebounce i 5 oddzielnych Timerów to wszystko działa prawidłowo (drugi kod).
Samą funkcję superDebounce przeanalizowałem dosyć dokładnie i wydaje mi się, że wiem jak działa. Sądzę, że problem jest związany gdzieś ze zmienną 'Timer1', tylko nie wiem jak sobie z nim poradzić.

P.S. Filmy postaram się przenieść na YT. Oczywiście intensywnie korzystam z BB, widać jeszcze zbyt mało wiedzy z niej wchłonąłem. Oczywiście jest rewelacyjnym kompendium wiedzy o C, jednak w tym przypadku nie potrafię sobie z tym poradzić. Proszę o jakieś podpowiedzi.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 6 sty 2015, o 23:32 
Offline
Moderator
Avatar użytkownika

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

to nie jest funkcja do obsługi klawiatury matrycowej z możliwością obsługi wciśniętych wielu przycisków naraz.

to jest funkcja która ma za zadanie fajnie obsługiwać wciskanie pojedynczych przycisków a drugi jej cel i to ważny to dydaktyczny ...

jeśli kolega potrzebuje obsługiwać kilka wciśniętych przycisków to nie ma "że boli" - no trzeba napisać do tego swoją inną funkcję

_________________
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: 6 sty 2015, o 23:38 
Offline
Użytkownik

Dołączył(a): 07 sty 2014
Posty: 48
Lokalizacja: Radom
Pomógł: 0

Witam, w międzyczasie doczytałem o tym w BB, str. 453, wynika z tego , że takie zachowanie się funkcji jest prawidłowe. Cyt.: ".... . Kolejna wywołana funkcja obsługująca drugi klawisz będzie musiała poczekać, aż pierwszy wciśnięty klawisz zostanie zwolniony. Dopiero wtedy rozpocznie się obsługa drugiego, jeśli nadal jest wciśnięty. ...." Czyli jak radzi Mirek, pozostaje mi stworzyć własną funkcję. Zatem do dzieła... .



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: 7 ] 

Strefa czasowa: UTC + 1


Kto przegląda forum

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


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:  
cron
Sitemap
Technologię dostarcza phpBB® Forum Software © phpBB Group phpBB3.PL
phpBB SEO