<?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=2996&amp;mode" />

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-05-05T14:40:37+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=2996&amp;mode</id>
<entry>
<author><name><![CDATA[jp_elek]]></name></author>
<updated>2013-05-05T14:40:37+01:00</updated>
<published>2013-05-05T14:40:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2996&amp;p=36196#p36196</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2996&amp;p=36196#p36196"/>
<title type="html"><![CDATA[Re: Klawiatura matrycowa- drobny problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2996&amp;p=36196#p36196"><![CDATA[
Witam , <br /> Jeśli nadal walczysz , to proponuję radykalną terapię:<br />a- wyrzuć wstawkę asemblera<br />b- swoją procedurę obsługi zmiennej &quot;key&quot; w całości<br />   przenieś na początek zaraz po obsłudze flagi timera<br />c- zacznij od bezwarunkowego przypisania key= 0xFF;<br /> a potem warunkowo przepisz , zależnie od wykrytego naciśnięcia.<br /><br />d.- jako ostatnie ,ustal kierunek i stan portu , <br />zmienną cnt i daj czas do następnego przerwania na ustalenie stanu portu.<br /><br />ps. jak nadal nie będzie OK , po podeślij fragment listingu<br />dotyczący przypisania zmiennej key , postaram się zweryfikować ...<br /><br />ps2. dużą część weekendu &quot;zmarnowałem&quot; na podobną walkę z kompilatorem , <br />jak skończę, poskarżę się na forum ,póki co mam pewność iż , to co zapisujemy <br />jest tylko życzeniem , wyczyny kompilatora są skrajnie trudno przewidywalne ...<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 6 minutach ]</span></strong><br /><br />podejrzewam związek z poziomem optymalizacji , <br />ale jeszcze nie ostatecznie ..<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=809">jp_elek</a> — 5 maja 2013, o 14:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2013-05-04T19:48:34+01:00</updated>
<published>2013-05-04T19:48:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2996&amp;p=36103#p36103</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2996&amp;p=36103#p36103"/>
<title type="html"><![CDATA[Re: Klawiatura matrycowa- drobny problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2996&amp;p=36103#p36103"><![CDATA[
<div class="quotetitle">Antystatyczny napisał(a):</div><div class="quotecontent"><br />Wygląda na to, że zbyt ostro mieszam kierunkami pinów w przerwaniu, a w związku z tym, że pull up w atmedze jest w sumie dość słabiutki, chyba czas narastania napięcia jest zbyt długi. To oczywiście moje przypuszczenia.<br /></div><br />Twoje przypuszczenia są jak najbardziej trafne. Ja też tak sądzę po moich bojach z klawiatura odczytywaną za pomocą charlieplexingu.<br />Program nie odczytywał mi klawiszy a jak już to jakieś głupoty. Dopiero podciągnięcie pinów zewnętrznymi rezystorami 10k spowodowało prawidłowe odczytywanie wciskanych klawiszy.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 4 maja 2013, o 19:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Paul Dirac]]></name></author>
<updated>2013-05-04T13:13:33+01:00</updated>
<published>2013-05-04T13:13:33+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2996&amp;p=36075#p36075</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2996&amp;p=36075#p36075"/>
<title type="html"><![CDATA[Re: Klawiatura matrycowa- drobny problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2996&amp;p=36075#p36075"><![CDATA[
Nie wiem czy to pomoże. Ale na mojej płytce działa: jak wciskam przycisk mam numer przycisku, a jak puszczam mam zero. W sumie twój pomysł tez mi dawał w rezultacie 255 albo 0 (jakby nic nie było wcisniete);(. Fajna zabawa w tym terminalu, wykombinowałem coś znacznie lepszego a to dzieki panu mirkowi k.<img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" />.<br />mój main.c:<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />#include &quot;lcd.h&quot;<br />#include &quot;pwm.h&quot;<br /><br />#define KEY0_PIN (1&lt;&lt;PC0)<br />#define KEY1_PIN (1&lt;&lt;PD7)<br />#define KEY2_PIN (1&lt;&lt;PD6)<br /><br /><br />//zmienna pomocnicza do numeru wcisnietego przycisku<br />volatile uint8_t number_key;<br />//zmienna pomocnicza dla key<br />volatile uint8_t key0;<br />volatile uint8_t key1;<br />volatile uint8_t key2;<br />//zmienna pomocnicza do czasu<br />volatile uint8_t czas;<br /><br />volatile uint8_t LED_STATUS;<br /><br />ISR ( TIMER2_COMP_vect )<br />{<br />if(!(PINC &amp; KEY0_PIN))<br />{<br />key0 = 1;<br />}<br />if(PINC &amp; KEY0_PIN)<br />{<br />key0++;<br />}<br />if(!(PIND &amp; KEY1_PIN))<br />{<br />key1 = 1;<br />}<br />if(PIND &amp; KEY1_PIN)<br />{<br />key1++;<br />}<br />if(!(PIND &amp; KEY2_PIN))<br />{<br />key2 = 1;<br />}<br />if(PIND &amp; KEY2_PIN)<br />{<br />key2++;<br />}<br /><br />}<br />ISR ( TIMER1_COMPA_vect )<br />{<br />if(!(PINC &amp; KEY0_PIN))<br />{<br />key0 = 1;<br />czas++;<br />}<br />if(PINC &amp; KEY0_PIN)<br />{<br />key0++;<br />czas;<br />}<br />}<br />int main(void)<br />{<br />//inicjalizacja portów pod który podpieto LCD<br />DDRA = 0xff;<br />PORTA = 0x00;<br />//inicjalizacja portów pod który podpieto przyciski<br />DDRC &amp;=  ~(KEY0_PIN );<br />PORTC |= (KEY0_PIN );<br />DDRD &amp;= ~(KEY1_PIN | KEY2_PIN);<br />PORTD |= (KEY1_PIN | KEY2_PIN);<br /><br /> /*inicjalizacja wyswietlacza lcd*/<br />lcd_init();<br />lcd_set_xy(0,0);<br />stdout = &amp;mystdout;<br />printf(&quot;jest okey&quot;);<br />_delay_ms(1000);<br />lcd_clear();<br /><br />init_timer8B(); //inicjalizacja timera 8 bitowego<br />init_timer16B_czas();<br />sei(); //zezwolenie na przerwanie<br />while(1)<br />{<br />if ( key1 == 1)<br />{<br />number_key = 2;<br />}<br />if ( key0 == 1)<br />{<br />number_key = 1;<br />}<br />if(key2 == 1)<br />{<br />number_key = 3;<br />}<br />if(key0 != 1 &amp;&amp; key1 != 1 &amp;&amp; key2 != 1)<br />{<br />number_key = 0;<br /><br />}<br />lcd_set_xy(0,0);<br />lcd_int(number_key);<br /><br /><br /><br /><br /><br />}<br />return 0;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1035">Paul Dirac</a> — 4 maja 2013, o 13:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Mscichu]]></name></author>
<updated>2013-05-04T12:40:11+01:00</updated>
<published>2013-05-04T12:40:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2996&amp;p=36071#p36071</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2996&amp;p=36071#p36071"/>
<title type="html"><![CDATA[Re: Klawiatura matrycowa- drobny problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2996&amp;p=36071#p36071"><![CDATA[
a spróbuj dopisać przed sprawdzaniem przycisku poprostu:<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">key=255;</div><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=853">Mscichu</a> — 4 maja 2013, o 12:40</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Mscichu]]></name></author>
<updated>2013-05-04T09:43:23+01:00</updated>
<published>2013-05-04T09:43:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2996&amp;p=36051#p36051</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2996&amp;p=36051#p36051"/>
<title type="html"><![CDATA[Re: Klawiatura matrycowa- drobny problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2996&amp;p=36051#p36051"><![CDATA[
Mam nadzieję, że dobrze rozumiem i kombinuję ;P a gdyby kolega zrobił tak:<br /><br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">        if(!(COL_PIN &amp; COL0)) key = 1 + (cnt*4);<br />        else if(!(COL_PIN &amp; COL1)) key = 2 + (cnt*4);<br />        else if(!(COL_PIN &amp; COL2)) key = 3 + (cnt*4);<br />        else if(!(COL_PIN &amp; COL3)) key = 4 + (cnt*4);<br />        else key=255;</div><br /><br />Chodzi oczywiście o kod z początku strony.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=853">Mscichu</a> — 4 maja 2013, o 09:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jp_elek]]></name></author>
<updated>2013-05-03T20:15:42+01:00</updated>
<published>2013-05-03T20:15:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2996&amp;p=36016#p36016</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2996&amp;p=36016#p36016"/>
<title type="html"><![CDATA[Re: Klawiatura matrycowa- drobny problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2996&amp;p=36016#p36016"><![CDATA[
Witam , a może tak &quot;wyrzucić&quot; na LCD stan całego portu w hex'ie ?<br /> stan portu jest czytany dopiero po dwu taktach zegara, przełączenie portu<br />to kolejne dwa , dopisz w tym kawałeczku asemblera jeszcze kilka &quot;nop&quot;<br />odczyt portu wrzuć do zmiennej i wyślij na LCD lub RS<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=809">jp_elek</a> — 3 maja 2013, o 20:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[janeczqu]]></name></author>
<updated>2013-05-03T19:17:05+01:00</updated>
<published>2013-05-03T19:17:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2996&amp;p=35999#p35999</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2996&amp;p=35999#p35999"/>
<title type="html"><![CDATA[Re: Klawiatura matrycowa- drobny problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2996&amp;p=35999#p35999"><![CDATA[
Próbowałeś po każdym włączeniu rezystora podciągającego wstawić niewielkie opóźnienie przed dalszymi operacjami?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=823">janeczqu</a> — 3 maja 2013, o 19:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Paul Dirac]]></name></author>
<updated>2013-05-02T09:29:38+01:00</updated>
<published>2013-05-02T09:29:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2996&amp;p=35864#p35864</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2996&amp;p=35864#p35864"/>
<title type="html"><![CDATA[Re: Klawiatura matrycowa- drobny problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2996&amp;p=35864#p35864"><![CDATA[
A nie może byc po prostu:<br />else<br />{<br />key = 255;<br />}<br />Może cos żle obczajam, ale skoro to jest kolejny, ostatni przypadek, to else uwzgledni tez i ten przypadek, gdzie nie wcisniety jest przycisk.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1035">Paul Dirac</a> — 2 maja 2013, o 09:29</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jp_elek]]></name></author>
<updated>2013-05-02T06:50:29+01:00</updated>
<published>2013-05-02T06:50:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2996&amp;p=35852#p35852</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2996&amp;p=35852#p35852"/>
<title type="html"><![CDATA[Re: Klawiatura matrycowa- drobny problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2996&amp;p=35852#p35852"><![CDATA[
Twó warunek jest tak długo spełniony, dopóki nie naciśniesz wszystkich czterech &quot;kolumn-przycisków&quot; <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=809">jp_elek</a> — 2 maja 2013, o 06:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jp_elek]]></name></author>
<updated>2013-05-01T20:05:50+01:00</updated>
<published>2013-05-01T20:05:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2996&amp;p=35808#p35808</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2996&amp;p=35808#p35808"/>
<title type="html"><![CDATA[Re: Klawiatura matrycowa- drobny problem]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2996&amp;p=35808#p35808"><![CDATA[
Jeśli dobrze zrozumiałem , to Col0-Col3 , to kolejne bity 0-3 na porcie ,<br /> .. wtedy sprawdziłbym  czy wartość tych wymaskowanych 4-rech bitów == 15 ,<br />if ((COL_PIN &amp; (COL0|COL1|COL2|COL3)) == 15) key =255;<br />  chyba ,  że &quot;nie poczułem&quot; Twojej klawiatury<br /><br />ps. oczywiście 15 to (COL0|COL1|COL2|COL3),można też bardziej elegancko<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=809">jp_elek</a> — 1 maja 2013, o 20:05</p><hr />
]]></content>
</entry>
</feed>