<?xml version="1.0" encoding="UTF-8"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="pl-pl">
<link rel="self" type="application/atom+xml" href="https://forum.atnel.pl/feed.php?f=4&amp;t=20655&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2018-04-28T12:47:30+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=20655&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-04-28T12:47:30+01:00</updated>
<published>2018-04-28T12:47:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20655&amp;p=207236#p207236</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20655&amp;p=207236#p207236"/>
<title type="html"><![CDATA[Re: Drobna poprawka do biblioteki MK_MATRIX_KBD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20655&amp;p=207236#p207236"><![CDATA[
modyfikuj sobie jak chcesz <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .. jak przestanie ci działać w jakiejś sytuacji to odkomentujesz sobie ten fragment<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 28 kwi 2018, o 12:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[janusz17]]></name></author>
<updated>2018-04-28T07:43:22+01:00</updated>
<published>2018-04-28T07:43:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20655&amp;p=207230#p207230</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20655&amp;p=207230#p207230"/>
<title type="html"><![CDATA[Re: Drobna poprawka do biblioteki MK_MATRIX_KBD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20655&amp;p=207230#p207230"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />oj ma ma znaczenie  ... jak chcesz to usuń ten fragment ale przetestuj później WSZYSTKIE dostępne konfiguracje<br /></div><br /><br />Ja zrobiłem tylko taką modyfikację w kodzie dla klawiatur jednorzędowych:<br />[syntax=c]#if ENABLE_ON_KEY_LONG_PRESS_EVENT == 1<br />if( !(key &amp; LONG_PRESS_MASK) &amp;&amp; !(key &amp; READED_MASK) ) {<br />key &amp;= KEY_CODE_MASK;<br />key |= RELEASED_MASK | READED_MASK;// **** ważne<br />} else {<br />lpress = 0;<br />key = READED_MASK;<br />}[/syntax]<br /><br />Zresztą właśnie dla klawiatur matrycowych , ten fragment kodu jest identyczny.<br />Testowałem to na różne sposoby i wszystko pięknie działa.<br />A więc utwierdzam się w przekonaniu, że w tym miejscu - mam tu na myśli fragment kodu po instrukcji &quot;else&quot; - 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 &quot;else&quot;.<br />Jeśli jednak po else dodamy jeszcze warunek if:<br />[syntax=c]#if ENABLE_ON_KEY_LONG_PRESS_EVENT == 1<br />if( !(key &amp; LONG_PRESS_MASK) &amp;&amp; !(key &amp; READED_MASK) ) {<br />key &amp;= KEY_CODE_MASK;<br />key |= RELEASED_MASK | READED_MASK;// **** ważne<br />} else if (lpress ) {<br />lpress = 0;<br />key = READED_MASK;<br />}[/syntax]<br />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.<br /><br />Oczywiście blokowanie inkrementacji zmiennej lpress w przerwaniu po osiągnięciu maksymalnej wartości 255 też rozwiązuje problem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1226">janusz17</a> — 28 kwi 2018, o 07:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-04-27T16:10:16+01:00</updated>
<published>2018-04-27T16:10:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20655&amp;p=207213#p207213</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20655&amp;p=207213#p207213"/>
<title type="html"><![CDATA[Re: Drobna poprawka do biblioteki MK_MATRIX_KBD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20655&amp;p=207213#p207213"><![CDATA[
no tak RELEASED_MASK<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 8 minutach ]</span></strong><br /><br />już poprawiłem na górze ... <br /><br /><div class="quotetitle">janusz17 napisał(a):</div><div class="quotecontent"><br />wydaje mi się, że w tym miejscu wartość zmiennej lpress nie ma już żadnego znaczenia.<br /></div><br /><br />oj ma ma znaczenie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> ... jak chcesz to usuń ten fragment ale przetestuj później WSZYSTKIE dostępne konfiguracje <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 27 kwi 2018, o 16:10</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[janusz17]]></name></author>
<updated>2018-04-27T08:19:38+01:00</updated>
<published>2018-04-27T08:19:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20655&amp;p=207201#p207201</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20655&amp;p=207201#p207201"/>
<title type="html"><![CDATA[Re: Drobna poprawka do biblioteki MK_MATRIX_KBD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20655&amp;p=207201#p207201"><![CDATA[
Ale ten zapis , to chyba coś za dużo tych READED_MASK?<br />[syntax=c]key = READED_MASK | READED_MASK;  // &lt;------ tę linię TO TRZEBA ROZSZERZYĆ a nie usunąć[/syntax]<br /><br />Co do usuwania czegokolwiek, to miałem na myśli ten warunek:<br />[syntax=c]} else if( lpress ) {[/syntax]<br /><br />wydaje mi się, że w tym miejscu wartość zmiennej lpress nie ma już żadnego znaczenia.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1226">janusz17</a> — 27 kwi 2018, o 08:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-04-27T07:52:49+01:00</updated>
<published>2018-04-27T07:52:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20655&amp;p=207199#p207199</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20655&amp;p=207199#p207199"/>
<title type="html"><![CDATA[Re: Drobna poprawka do biblioteki MK_MATRIX_KBD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20655&amp;p=207199#p207199"><![CDATA[
no i sprawa się wyjaśniła - dzięki za wyłapanie małego BUG'a<br /><br />Trzeba zrobić DWIE małe poprawki w bibliotece:<br /><br />[syntax=c]#if ENABLE_ON_KEY_LONG_PRESS_EVENT == 1<br />if( lpress &amp;&amp; lpress &lt; 255 ) lpress++;  // &lt;------ tę linię TRZEBA POPRAWIĆ[/syntax]<br /><br /><br /><br /><br />[syntax=c]#if ENABLE_ON_KEY_LONG_PRESS_EVENT == 1<br />                                if( !(key &amp; LONG_PRESS_MASK) &amp;&amp; !(key &amp; READED_MASK) ) {<br />                                        key &amp;= KEY_CODE_MASK;<br />                                        key |= RELEASED_MASK | READED_MASK;          <br />                                } else if( lpress ) { <br />                                        lpress = 0;<br />                                        key = RELEASED_MASK | READED_MASK;  // &lt;------ tę linię TO TRZEBA ROZSZERZYĆ a nie usunąć <br />                                }[/syntax]<br /><br />oczywiście każdy fragment powyższego kodu występuje DWA razy w bibliotece i dwa razy trzeba to poprawić<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 27 kwi 2018, o 07:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2018-04-27T06:34:35+01:00</updated>
<published>2018-04-27T06:34:35+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20655&amp;p=207197#p207197</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20655&amp;p=207197#p207197"/>
<title type="html"><![CDATA[Re: Drobna poprawka do biblioteki MK_MATRIX_KBD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20655&amp;p=207197#p207197"><![CDATA[
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<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 27 kwi 2018, o 06:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[janusz17]]></name></author>
<updated>2018-04-27T06:29:30+01:00</updated>
<published>2018-04-27T06:29:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=20655&amp;p=207196#p207196</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=20655&amp;p=207196#p207196"/>
<title type="html"><![CDATA[Drobna poprawka do biblioteki MK_MATRIX_KBD]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=20655&amp;p=207196#p207196"><![CDATA[
Testowałem ostatnio bibliotekę MK_MATRIX_KBD z podłączonym jednym przyciskiem.<br />Moja konfiguracja jest taka:<br />[syntax=c]//*****************************************************************************************<br />//-------------------------------- konfiguracja biblioteki ----------------<br /><br />//--- wybór portu klawiatury ---<br />#define KBD_PORTPORTC<br />#define KBD_PINPINC<br />#define KBD_DIRDDRC<br /><br />//--- typ klawiatury ---<br />#define KBD_TYPEROW_KEYS// KBD_4X3 lub KBD_4X4 lub ROW_KEYS<br /><br />#define ROW_KEYS_COUNT1// jeśli KBD_TYPE = ROW_KEYS to ustaw ilość klawiszy: 1 - 8<br /><br />// jeśli zdefiniowana jest maska to przestaje mieć znaczenie ROW_KEYS_COUNT<br />// wystarczy odkomentować poniższą definicję i ustawić jedynki w miejscach przycisków<br />#define ROW_KEYS_MASK0b10000000// własna maska - jedynki w miejscach pinów z przyciskami<br /><br />// tylko do celów testowych z klawiaturami jednorzędowymi<br />//#define ROW_GND_PIN4// ustawienie stanu niskiego GND dla testów prostej jednorzędowej klawiatury<br /><br />//--- wybór reakcji: wciśnięcie, zwolnienie przycisku albo oba zdarzenia ---<br />#define ENABLE_ON_KEY_DOWN_EVENT1<br />#define ENABLE_ON_KEY_UP_EVENT1<br /><br />#define ENABLE_ON_KEY_LONG_PRESS_EVENT1<br /><br />#define LONG_PRESS_TIME150// min = 20, default = 50, MAX = 254!<br /><br />#define LONG_PRESS_AS_AUTO_REPEAT0// 0 - DISABLE AUTO REPEAT, 1 - ENABLE AUTO REPEAT<br />#define AUTO_REPEAT_RIME15 // min = 1, default = 15, MAX = (LONG_PRESS_TIME-1) !!!<br /><br /><br />#define USE_ASCII_CODES0<br /><br />//-------------------------------- koniec konfiguracji biblioteki ----------<br />//*****************************************************************************************[/syntax]<br /><br />Okazało się, że przy włączonej opcji ENABLE_ON_KEY_LONG_PRESS_EVENT w pewnych przypadkach następuje zawieszenie obsługi klawiatury.<br />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.<br />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.<br />Po przeanalizowaniu kodu , doszedłem do wniosku, ze przyczyna tkwi w tej części kodu:<br />[syntax=c]#if ENABLE_ON_KEY_LONG_PRESS_EVENT == 1<br />if( !(key &amp; LONG_PRESS_MASK) &amp;&amp; !(key &amp; READED_MASK) ) {<br />key &amp;= KEY_CODE_MASK;<br />key |= RELEASED_MASK | READED_MASK;// **** ważne<br />} else if( lpress ) { // jeśli licznik lpress zdąży się wyzerować zanim puścimy przycisk, to ten warunek nigdy się nie wykona<br />lpress = 0;<br />key = READED_MASK;<br />}[/syntax]<br /><br />Ten warunek if(lpress) jest tutaj niepotrzebny. Zresztą w tej części kodu dla obsługi klawiatur matrycowych, tego warunku nie ma.<br />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ę?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1226">janusz17</a> — 27 kwi 2018, o 06:29</p><hr />
]]></content>
</entry>
</feed>