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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-07-24T09:34:34+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=7841&amp;mode</id>
<entry>
<author><name><![CDATA[Atmegowiec]]></name></author>
<updated>2014-07-24T09:34:34+01:00</updated>
<published>2014-07-24T09:34:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7841&amp;p=88655#p88655</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7841&amp;p=88655#p88655"/>
<title type="html"><![CDATA[Re: Wysłuskanie ramki danych z klawiatury]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7841&amp;p=88655#p88655"><![CDATA[
<strong>@mokrowski</strong> masz całkowita racje co do punktu 1 i 2, próbowalem to jakoś pokrętnie rowiazać naciskanie wielkich liter ale niestety darowałem sobie.<br /><br />Co do znaków nie-graficznych np ENTER, ESC rozwiąze to tak:<br /><br />[syntax=c]#define ENTER 0x5c<br />#define ESC 0x76[/syntax]<br /><br />a potem odwoływac się w funkcji:<br /><br />[syntax=c]if(znak==ENTER){<br />(...)<br />}[/syntax]<br /><br />Co do dublowania, to zauwazylem ze drugi znak pojawi sie podczas puszczania klawisza. Wiec juz jest jakis trop.<br /><br />Driver klawiatury z prawdziwego zdarzenia to nie bedzie.. ale fakt pasowało by miec duze litery, nie wiem jak to rozwiązać, schemat zaproponowany przez <strong>@Krauser</strong>, póki co sprwdza sie bardzo dobrze - jesli chodzi o kody ascii, tylko widzę ze klawiatura przestaje odpowiadac gdy zapełni sie cały bufor string_buf[].<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1123">Atmegowiec</a> — 24 lip 2014, o 09:34</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Atmegowiec]]></name></author>
<updated>2014-07-24T07:32:26+01:00</updated>
<published>2014-07-24T07:32:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7841&amp;p=88648#p88648</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7841&amp;p=88648#p88648"/>
<title type="html"><![CDATA[Re: Wysłuskanie ramki danych z klawiatury]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7841&amp;p=88648#p88648"><![CDATA[
tak dokładnie, buforem roboczym bedzie tablica charbuf[]. Zmienne podałem tylko zeby łatwiej przedstawić sytuację - bardziej obrazowo.<br /><br />Wiec program działa jednakże powiela mi w stringu kazdy znak &quot;aattnneell&quot; . Nie wiem dlaczego, myślałem ze gdzieś powieliłem funkcje &quot;składającą stringa, ale nie ma czegoś takiego<br /><br />Wysweitlajac sama tablice char_buf  pojawia sie pojedynczy znak, a gdy wrzuce do lcd_str() string_buf, string jest podwojony.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1123">Atmegowiec</a> — 24 lip 2014, o 07:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2014-07-23T21:43:34+01:00</updated>
<published>2014-07-23T21:43:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7841&amp;p=88632#p88632</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7841&amp;p=88632#p88632"/>
<title type="html"><![CDATA[Re: Wysłuskanie ramki danych z klawiatury]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7841&amp;p=88632#p88632"><![CDATA[
<div class="quotetitle">Atmegowiec napisał(a):</div><div class="quotecontent"><br />który sam będę musiał dopisywać?<br /></div><br />Nie musisz sam wpisywać '\0' zmienia się tylko 1 element tablicy.<br /><div class="quotetitle">Atmegowiec napisał(a):</div><div class="quotecontent"><br />czemu wpisałeś do niej gwiazdkę?<br /></div><br />Po to, aby 2 element był '\0'.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 23 lip 2014, o 21:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Atmegowiec]]></name></author>
<updated>2014-07-23T21:28:43+01:00</updated>
<published>2014-07-23T21:28:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7841&amp;p=88630#p88630</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7841&amp;p=88630#p88630"/>
<title type="html"><![CDATA[Re: Wysłuskanie ramki danych z klawiatury]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7841&amp;p=88630#p88630"><![CDATA[
Dzięki za kod- teoretycznie proste a ciężko na takie coś wpaść. Powiedz mi, dlaczego tablica chabuf ma dwa elementy? dlatego może ze będzie tam znak i '\0' ? - który sam będę musiał dopisywać?<br />czemu wpisałeś do niej gwiazdkę?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1123">Atmegowiec</a> — 23 lip 2014, o 21:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2014-07-22T20:47:32+01:00</updated>
<published>2014-07-22T20:47:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7841&amp;p=88523#p88523</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7841&amp;p=88523#p88523"/>
<title type="html"><![CDATA[Re: Wysłuskanie ramki danych z klawiatury]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7841&amp;p=88523#p88523"><![CDATA[
[syntax=c]char a = 'A';<br />char b = 'T';<br />char c = 'N';<br />char d = 'E';<br />char e = 'L';<br /><br />char strbuf&#91;20&#93; = &quot;&quot;;<br />char charbuf&#91;2&#93; = &quot;*&quot;;<br /><br />charbuf&#91;0&#93; = a; //zmiana znaku zmienia cały string<br />strcat(strbuf, charbuf); //łącze stringi<br /><br />charbuf&#91;0&#93; = b;<br />strcat(strbuf, charbuf);[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 22 lip 2014, o 20:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Atmegowiec]]></name></author>
<updated>2014-07-22T19:01:10+01:00</updated>
<published>2014-07-22T19:01:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7841&amp;p=88508#p88508</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7841&amp;p=88508#p88508"/>
<title type="html"><![CDATA[Re: Wysłuskanie ramki danych z klawiatury]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7841&amp;p=88508#p88508"><![CDATA[
niew iem czy jk Was dobrez rozumiem. Mam tak:<br /><br />zmienna a = 'A';<br />zmienna b = 'T';<br />zmienna c = 'N';<br />zmienna d = 'E';<br />zmienna e = 'L';<br /><br />i chce to jakoś skleić.. może w wskaźnik *str;<br /><br />a potem wpoprzez funkcję lcd_str(str) - mieć na wyslietlaczu wyraz &quot;ATNEL&quot;.<br /><br /><br />@mokrowski, wiem ze strcat łączy stringi... ale ja mam poszczególne literki a one nie są stringami..<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1123">Atmegowiec</a> — 22 lip 2014, o 19:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2014-07-22T18:04:48+01:00</updated>
<published>2014-07-22T18:04:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7841&amp;p=88499#p88499</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7841&amp;p=88499#p88499"/>
<title type="html"><![CDATA[Re: Wysłuskanie ramki danych z klawiatury]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7841&amp;p=88499#p88499"><![CDATA[
Kolega mokrowski dobrze podpowiada. <br />Możesz to rozwiązać tak, że masz string wynikowy i jeden o pojemności 2 znaków na odebraną literkę:<br /><!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic7653.html#p86934" >topic7653.html#p86934</a><!-- l --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 22 lip 2014, o 18:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Atmegowiec]]></name></author>
<updated>2014-07-22T17:46:12+01:00</updated>
<published>2014-07-22T17:46:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7841&amp;p=88494#p88494</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7841&amp;p=88494#p88494"/>
<title type="html"><![CDATA[Re: Wysłuskanie ramki danych z klawiatury]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7841&amp;p=88494#p88494"><![CDATA[
no nie bardzo, znalazłem funkcje do łączenia stringów z innymi stsrinagami. Mi chodzi zeby mając poszczególne znaki tak je dodac zeby powstał string tóry mozna wyświetlić za pomocą lcd_str(wskaznik);<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1123">Atmegowiec</a> — 22 lip 2014, o 17:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Atmegowiec]]></name></author>
<updated>2014-07-22T16:36:21+01:00</updated>
<published>2014-07-22T16:36:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7841&amp;p=88484#p88484</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7841&amp;p=88484#p88484"/>
<title type="html"><![CDATA[Re: Wysłuskanie ramki danych z klawiatury]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7841&amp;p=88484#p88484"><![CDATA[
ale mi chodzi o łaczenie znaków char w stringa.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1123">Atmegowiec</a> — 22 lip 2014, o 16:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Atmegowiec]]></name></author>
<updated>2014-07-22T11:04:38+01:00</updated>
<published>2014-07-22T11:04:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7841&amp;p=88453#p88453</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7841&amp;p=88453#p88453"/>
<title type="html"><![CDATA[Re: Wysłuskanie ramki danych z klawiatury]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7841&amp;p=88453#p88453"><![CDATA[
<div class="quotetitle">Krauser napisał(a):</div><div class="quotecontent"><br />Błędem jest przesunięcie (drugie z kolei) jak odczytujesz 0.<br />PS.<br />Te zmienne powinny być zdefiniowane w przerwaniu. Nie ma sensu ich udostępniać dla funkcji main.<br />[syntax=c]static uint16_t key_frame;                     //licznik bitów<br />static uint16_t key;                           //bit ramki[/syntax]<br />Ta zmienna niepotrzebnie ma static, bo pewnie przeniesiesz później to do innego pliku jak np. masz w przykładzie o dekodowaniu RC5. Przemyśl to.<br />[syntax=c]volatile uint16_t key_frame_tmp;         //tymczsowa ramka keyboard[/syntax]<br /></div><br /><br /><strong>Krauser</strong>, między czasie zrobiłem jak napisałeś, i tez sobie wydzieliłem osobne pliki, ostatecznie problem rozwiązałem, używając pętli switch...case . <br />Teraz zastanawiam się jak ładować poszczególne znaki ascii np do wskaznika a potem wyswietlać je za pomocą lcd_str();<br />załóżmy ze mamy taki kod:<br /><br />[syntax=c]uint8_t *str;<br /><br />int main( void ){<br /><br />while(1){<br /><br />lcd_str(str);<br />   }<br /><br />}<br /><br />void kb_str(void){<br /><br />uint8_t c = *str;<br />c |= kb_ascii(key_frame_tmp); //przypisanie znku asci<br />str++;                      //nstepna komórka w pamieci<br /><br />if(gdy wcisniety Enter){<br />    c |= '\0';    //dodanie znaku '\0' n koncu<br />key_frame_tmp = 0;   //wyzerowanie zmiennej<br />}[/syntax]<br /><br />string sie nie zapisuje, pisze z pamieci, wiec mogą byc blędy - ale ogolnie taka zasada jest w moim kodzie<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1123">Atmegowiec</a> — 22 lip 2014, o 11:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2014-07-21T19:37:02+01:00</updated>
<published>2014-07-21T19:37:02+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7841&amp;p=88415#p88415</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7841&amp;p=88415#p88415"/>
<title type="html"><![CDATA[Re: Wysłuskanie ramki danych z klawiatury]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7841&amp;p=88415#p88415"><![CDATA[
Błędem jest przesunięcie (drugie z kolei) jak odczytujesz 0.<br />PS.<br />Te zmienne powinny być zdefiniowane w przerwaniu. Nie ma sensu ich udostępniać dla funkcji main.<br />[syntax=c]static uint16_t key_frame;                     //licznik bitów<br />static uint16_t key;                           //bit ramki[/syntax]<br />Ta zmienna niepotrzebnie ma static, bo pewnie przeniesiesz później to do innego pliku jak np. masz w przykładzie o dekodowaniu RC5. Przemyśl to.<br />[syntax=c]volatile uint16_t key_frame_tmp;         //tymczsowa ramka keyboard[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 21 lip 2014, o 19:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Atmegowiec]]></name></author>
<updated>2014-07-21T13:48:41+01:00</updated>
<published>2014-07-21T13:48:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7841&amp;p=88347#p88347</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7841&amp;p=88347#p88347"/>
<title type="html"><![CDATA[Re: Wysłuskanie ramki danych z klawiatury]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7841&amp;p=88347#p88347"><![CDATA[
każdy mi poleca gotowe rozwiązania żeby popatrzeć od innych jak oni robili.... chodzi o to ze chciałbym własny kod napisać, nie sztuka skopiować od kogoś i dalej nie wiedzieć jak się to robi, poszukam może coś mi  te tematy pomogą żeby ten błąd znaleźć<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1123">Atmegowiec</a> — 21 lip 2014, o 13:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Atmegowiec]]></name></author>
<updated>2014-07-21T12:29:23+01:00</updated>
<published>2014-07-21T12:29:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7841&amp;p=88335#p88335</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7841&amp;p=88335#p88335"/>
<title type="html"><![CDATA[Wysłuskanie ramki danych z klawiatury]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7841&amp;p=88335#p88335"><![CDATA[
Witam,<br />chciałbym uzyskać z klawiatury cała ramkę. Chodzi mi tylko o odbiór. Jak wiadomo taka ramką ma 11 bitów z czego 8 bitów to dane wciśniętego klawisza.<br />Bity odbieram w przerwaniu zewnętrznym, gdy wykrywa sygnał CLK (zbocze opadające) sprawdza stan pinu DATA i odpowiednio zapisuję &quot;1&quot; lub &quot;0&quot;. Gdy odczyta 11 bit, zapisuje cała ramkę do nowej zmiennej, która to jest wyświetlana na lcd poprzez lcd_char(); , dane ramki, flaga są zerowane i gotowe do odbioru.<br /><br />Problem jest taki ze gdy wcisnę klawisz, wyświetlają się losowe kody. Tzn. tak zauważyłem ze przeważnie są to te same kody, i mm wrażenie ze powtarzają sie one w kółko.<br /><br />Chciałbym uzyskać po odczycie 11 bitu, pełną ramkę ps/2, którą następnie zamaskuję i przesunę uzyskując kod klawisza.<br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;LCD/lcd44780.h&quot;<br /><br />//keyboard<br /><br />void keyboard_string( void );<br />volatile uint8_t flaga = 1;<br />volatile static uint16_t key_frame;//licznik bitów<br />volatile static uint16_t key;//bit ramki<br />volatile static uint16_t key_frame_tmp;//tymczsowa ramka keyboard<br />volatile static uint8_t dane;<br />volatile static uint8_t i;<br /><br />int main( void ){<br /><br />_delay_ms(650); //opoźnienie do stabilizacji sygnału z klawiatury<br /><br /><br />//przerwanie zewn. INT0, domyslnie wyzwalane stanem niskim<br />GICR |= (1&lt;&lt;INT0);//zezw. na przerwanie INT0<br />MCUCR |= (1&lt;&lt;ISC01);//zb. opadające<br /><br />DDRD &amp;= ~(1&lt;&lt;PD2);<br />PORTD |= (1&lt;&lt;PD2);//podc. CLK<br /><br />DDRD &amp;= ~(1&lt;&lt;PD4);<br />PORTD |= (1&lt;&lt;PD4);//podc. DATA<br />sei();<br /><br />while(1){<br /><br />if(!flaga){<br />lcd_locate(0,0);<br />flaga  = 1;<br />lcd_str(&quot;Key!&quot;);<br />lcd_locate(1,0);<br />lcd_hex(key_frame_tmp);<br />}<br />}<br />}<br /><br />ISR(INT0_vect){<br /><br />key = key &lt;&lt; 1;             //przesuj odebrane bity w lewo<br /><br />if(key_frame &gt; 11){            // jesli odebrano całą ramkę ps/2<br /><br />key_frame_tmp = (key &amp; 0b01111111100)&gt;&gt;2;//przepisz ramkę do nowej zmiennej i wysuskaj tylko bity danych. Zmienna wyswietlana w while(1) poprzez lcd_char();<br />flaga=0;//zeruj flagę<br />key_frame = 0;//zeruj licznik bitów<br />key = 0;//zeruj zmienną przechowująca poszczegolne bity ramki z klawiatury<br />}<br /><br />if(PIND &amp; (1&lt;&lt;PD4)){//jesli na pinie stan wysoki<br />key = key | 1;//dodaj do ramki &quot;1&quot;<br />}<br /><br />if(!(PIND &amp; (1&lt;&lt;PD4))){//jesli na pinie stan niski<br />key = key &lt;&lt; 1;//przesuj w lewo = &quot;0&quot;<br />}<br /><br />key_frame++;    //zwieksz licznik bitów<br /><br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1123">Atmegowiec</a> — 21 lip 2014, o 12:29</p><hr />
]]></content>
</entry>
</feed>