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



Teraz jest 23 sie 2026, o 15:27


Strefa czasowa: UTC + 1





Utwórz nowy wątek Odpowiedz w wątku  [ Posty: 7 ] 
Autor Wiadomość
PostNapisane: 27 kwi 2018, o 06:29 
Offline
Użytkownik

Dołączył(a): 18 kwi 2013
Posty: 183
Lokalizacja: Kraków
Pomógł: 30

Testowałem ostatnio bibliotekę MK_MATRIX_KBD z podłączonym jednym przyciskiem.
Moja konfiguracja jest taka:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Okazało się, że przy włączonej opcji ENABLE_ON_KEY_LONG_PRESS_EVENT w pewnych przypadkach następuje zawieszenie obsługi klawiatury.
Jeśli przycisk wciśniemy na czas potrzebny aby zadziałało zdarzenie od długiego wciśnięcia i zaraz po tym zdarzeniu przycisk zwolnimy, to wszystko jest OK.
Jeśli jednak przycisk trzymamy wciśnięty nadal przez dłuższy czas to po zwolnieniu okazuje się, ze już nie ma dalej żadnej reakcji układu ani na krótkie ani na długie wciśnięcie przycisku. Jest to szczególnie widoczne przy ustawionym długim czasie LONG_PRESS_TIME np. powyżej 200.
Po przeanalizowaniu kodu , doszedłem do wniosku, ze przyczyna tkwi w tej części kodu:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Ten warunek if(lpress) jest tutaj niepotrzebny. Zresztą w tej części kodu dla obsługi klawiatur matrycowych, tego warunku nie ma.
Jest za to wcześniej w poprzednim warunku if zerowanie licznika lpress i nie bardzo rozumiem w jakim celu. Moim zdaniem wartość tego licznika w tym miejscu jest nieistotna. A może się mylę?



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 kwi 2018, o 06:34 
Offline
Moderator
Avatar użytkownika

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

hmm muszę sprawdzić bo tak z marszu to nie jestem w stanie powiedzieć ... jak sam widzisz sporo jest różnych zależności w tym kodzie

_________________
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: 27 kwi 2018, o 07:52 
Offline
Moderator
Avatar użytkownika

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

no i sprawa się wyjaśniła - dzięki za wyłapanie małego BUG'a

Trzeba zrobić DWIE małe poprawki w bibliotece:

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





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


oczywiście każdy fragment powyższego kodu występuje DWA razy w bibliotece i dwa razy trzeba to poprawić

_________________
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: 27 kwi 2018, o 08:19 
Offline
Użytkownik

Dołączył(a): 18 kwi 2013
Posty: 183
Lokalizacja: Kraków
Pomógł: 30

Ale ten zapis , to chyba coś za dużo tych READED_MASK?
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Co do usuwania czegokolwiek, to miałem na myśli ten warunek:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


wydaje mi się, że w tym miejscu wartość zmiennej lpress nie ma już żadnego znaczenia.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 27 kwi 2018, o 16:10 
Offline
Moderator
Avatar użytkownika

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

no tak RELEASED_MASK

------------------------ [ Dodano po: 8 minutach ]

już poprawiłem na górze ...

janusz17 napisał(a):
wydaje mi się, że w tym miejscu wartość zmiennej lpress nie ma już żadnego znaczenia.


oj ma ma znaczenie ;) ... jak chcesz to usuń ten fragment ale przetestuj później WSZYSTKIE dostępne konfiguracje ;)

_________________
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: 28 kwi 2018, o 07:43 
Offline
Użytkownik

Dołączył(a): 18 kwi 2013
Posty: 183
Lokalizacja: Kraków
Pomógł: 30

Cytuj:
oj ma ma znaczenie ... jak chcesz to usuń ten fragment ale przetestuj później WSZYSTKIE dostępne konfiguracje


Ja zrobiłem tylko taką modyfikację w kodzie dla klawiatur jednorzędowych:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.


Zresztą właśnie dla klawiatur matrycowych , ten fragment kodu jest identyczny.
Testowałem to na różne sposoby i wszystko pięknie działa.
A więc utwierdzam się w przekonaniu, że w tym miejscu - mam tu na myśli fragment kodu po instrukcji "else" - zmienna lpress ma być po prostu wyzerowana, bez względu na jej wartość. Musi być także wpisana do zmiennej key wartość READED_MASK. Oczywiście jeśli przytrzymamy przycisk wciśnięty nieco dłużej, to zmienna lpress już wcześniej się wyzeruje ponieważ cały czas inkrementujemy ją w przerwaniu. Ale przy takim zapisie nie ma to już znaczenia i tak wykona się kod po instrukcji "else".
Jeśli jednak po else dodamy jeszcze warunek if:
Składnia: [ Pobierz ] [ Ukryj ]
język c
Musisz się zalogować, aby zobaczyć kod źródłowy. Tylko zalogowani użytkownicy mogą widzieć kod.

no to jeśli lpress wyzeruje się zanim zwolnimy przycisk, do zmiennej key nie zapisze się wartość READED_MASK. W konsekwencji program przestaje reagować na kolejne wciskanie przycisków.

Oczywiście blokowanie inkrementacji zmiennej lpress w przerwaniu po osiągnięciu maksymalnej wartości 255 też rozwiązuje problem.



Góra
 Zobacz profil  
cytowanie selektywne  Cytuj  
PostNapisane: 28 kwi 2018, o 12:47 
Offline
Moderator
Avatar użytkownika

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

modyfikuj sobie jak chcesz ;) .. jak przestanie ci działać w jakiejś sytuacji to odkomentujesz sobie ten fragment

_________________
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  
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ł: Google [Bot] i 2 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