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

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

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=7741&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-07-12T09:24:59+01:00</updated>
<published>2014-07-12T09:24:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7741&amp;p=87303#p87303</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7741&amp;p=87303#p87303"/>
<title type="html"><![CDATA[Re: ON / OFF  -  RC5... Jak to ugryźć?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7741&amp;p=87303#p87303"><![CDATA[
<div class="quotetitle">hopek napisał(a):</div><div class="quotecontent"><br />ale jeśli kliknę w międzyczasie inny klawisz, muszę kliknąć przycisk zasilania 2 razy żeby wyłączyć LED. Muszę chyba jeszcze doczytać jak tego używać<br /></div><br /><br />DOKŁADNIE tak to będzie się zachowywać z samym toogle bitem <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> dlatego sporo na ten temat wyjaśniam w Greenbooku<br /><br /><!-- m --><a class="postlink" href="http://atnel.pl/jezyk-c-pasja-programowania.html" >http://atnel.pl/jezyk-c-pasja-programowania.html</a><!-- m --><br /><br />i tam też unowocześnione biblioteki do obsługi RC5 ale też innych standardów mają przekazywany fajny argument do funkcji o nazwie key_time <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... który umożliwia nie tylko od razu z marszu wykorzystanie go do maszyny stanów o jakiej myślisz ale możliwość rakcji na wciśnięcie krótkie klawisza, wciśnięcie długie itp, np:<br /><br />[syntax=c]if( command == 1 &amp;&amp; key_time 1 ) PORTC ^= (1&lt;&lt;PC7);[/syntax]<br /><br />spowoduje ci śliczne zapalanie na przemian bez żadnych zaciachów diody LED podłączonej do PC7. Zresztą z tym key_time można wtedy tzw &quot;cuda wianki&quot; robić ... a sam toogle bit nie jest nam potrzebny, jest tylko wykorzystywany do produkcji key_time, że tak powiem. W efekcie końcowym key_time to taki też licznik nadlatujących ramek<br /><br />i co ciekawe działa to tak fajnie że wręcz opisuję w książce jak tworzyć tzw virtualny toogle bit dla innych standardów podczerwieni jak Sony, NEC czy JVC, które w ogóle nie posiadają tooglebit'a <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... a dzięki stworzeniu w protokole jego virtualnej wersji możemy znowu się cieszyć wyprodukowaniem dalej przekazywanej do funkcji zmiennej key_time i mieć dokładnie takie same możliwości jak w RC5<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 12 lip 2014, o 09:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[hopek]]></name></author>
<updated>2014-07-12T09:20:54+01:00</updated>
<published>2014-07-12T09:20:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7741&amp;p=87301#p87301</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7741&amp;p=87301#p87301"/>
<title type="html"><![CDATA[Re: ON / OFF  -  RC5... Jak to ugryźć?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7741&amp;p=87301#p87301"><![CDATA[
Witam Ponownie <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Udało mi się rozwiązać problem i już działa ale z jednym małym mankamentem...<br /><br />[syntax=c]/* jeśli wciśnięty przycik power */<br />if( command==12 )<br />{<br />lcd_locate(1,10);<br />lcd_str(&quot;PWR&quot;);/* wyświetl jego nazwę */<br /><br />if (toggle_bit)<br />{<br />led_on();<br />}<br /><br />if (!toggle_bit)<br />{<br />led_off();<br />}<br />}[/syntax]<br /><br />Funkcja działa prawie dobrze, bo jeśli na przemian klikam przycisk zasilania na pilocie to pięknie włącza i wyłącza LED za każdym razem, nie ważne jak długo &quot;molestuje&quot; klawisz zasilania, ale jeśli kliknę w międzyczasie inny klawisz, muszę kliknąć przycisk zasilania 2 razy żeby wyłączyć LED. Muszę chyba jeszcze doczytać jak tego używać <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=1692">hopek</a> — 12 lip 2014, o 09:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[atmel]]></name></author>
<updated>2014-07-12T00:02:26+01:00</updated>
<published>2014-07-12T00:02:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7741&amp;p=87293#p87293</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7741&amp;p=87293#p87293"/>
<title type="html"><![CDATA[Re: ON / OFF  -  RC5... Jak to ugryźć?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7741&amp;p=87293#p87293"><![CDATA[
Rozwiązaniem problemu może okazać się tzw. &quot;toogle bit&quot;, który jest wysyłany przez pilot w momencie powtarzania komendy.<br />Już trochę czasu minęło kiedy zajmowałem się RC5, ale może to trochę rozjaśni sprawę: <!-- m --><a class="postlink" href="http://hobby.abxyz.bplaced.net/index.php?pid=3&amp;aid=16" >http://hobby.abxyz.bplaced.net/index.php?pid=3&amp;aid=16</a><!-- m --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1183">atmel</a> — 12 lip 2014, o 00:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[hopek]]></name></author>
<updated>2014-07-11T23:42:48+01:00</updated>
<published>2014-07-11T23:42:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=7741&amp;p=87292#p87292</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=7741&amp;p=87292#p87292"/>
<title type="html"><![CDATA[ON / OFF  -  RC5... Jak to ugryźć?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=7741&amp;p=87292#p87292"><![CDATA[
Witam Wszystkich. Od wczoraj się męczę się z realizacją funkcji która włączała by i wyłączała na przemian np diodę LED na porcie PB1 w Atmega8. Skorzystałem tutaj z kodu zamieszczonego na płycie CD (RC5_decode z wyświetlaczem LCD i LED podłączonym do PB1) i lekko go zmodyfikowałem do własnych potrzeb. Wszystko działa, ale chciałbym by podczas przyciśnięcia przycisku zasilania na pilocie który ma kod 12 zapaliła się LED przy pierwszym wciśnięciu a zgasiła przy kolejnym. I tu tkwi problem... Jeśli wcisnę przycisk wystarczająco krótko LED się zapali i analogicznie zgaśnie, ale jeśli wcisnę i przytrzymam przycisk, LED zmienia stan co około 100ms. Chciałbym, żeby LED po wciśnięciu przycisku na pilocie zapaliła się niezależnie od czasu wciśnięcia przycisku i analogicznie po powtórnym wciśnięciu zgasła. Poprosiłbym o podpowiedź bądź kawałek kodu który rozjaśni mi sprawę. <br /><br /><br />[syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 2010-09-13<br /> *       Autor: Mirosław Kardaś<br /> */<br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;LCD/lcd44780.h&quot;<br />#include &quot;IR_DECODE/ir_decode.h&quot;<br /><br />#define LED_PIN (1&lt;&lt;PB1)<br />#define LED_OFF PORTB |= LED_PIN<br />#define LED_ON PORTB &amp;= ~LED_PIN<br />#define LED_TOG PORTB ^= LED_PIN<br /><br /><br /><br />void rc5rst (void) //zerowanie flagi i komend<br />{<br />Ir_key_press_flag=0;<br />command=0xff;<br />address=0xff;<br />}<br /><br /><br /><br />void led_tog (void)<br />{<br />LED_TOG;<br />}<br /><br /><br /><br /><br />int main(void) {<br /><br />DDRB |= LED_PIN;<br />LED_OFF;<br /><br />lcd_init();/* inicjalizacja LCD */<br />ir_init();/* inicjalizacja dekodowania IR */<br /><br />sei();/* włączamy globalne przerwania */<br /><br />lcd_locate(0,0);<br />lcd_str_P(PSTR(&quot;Kody pilota RC5&quot;)); /* wyświetl napis w zerowej linii LCD */<br /><br />/* pętla nieskończona */<br />while(1) {<br /><br />if(Ir_key_press_flag) {/* jeśli odebrano prawidłowe kody z pilota */<br /><br /><br />lcd_locate(1,0);<br />lcd_str(&quot;key: &quot;);<br />lcd_int(command);/* wyświetl w drugiej linii LCD kod klawisza */<br />lcd_str(&quot;   &quot;);<br /><br /><br /><br /><br />/* jeśli wciśnięty przycik power */<br />if( command==12 )<br />{<br />lcd_locate(1,10);<br />lcd_str(&quot;PWR&quot;);/* wyświetl jego nazwę */<br />led_tog();<br />}<br /><br />else<br />{<br />lcd_locate(1,10);<br />lcd_str(&quot;      &quot;);/* jeśli inny skasuj pole */<br />}<br />rc5rst();<br />}<br /><br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1692">hopek</a> — 11 lip 2014, o 23:42</p><hr />
]]></content>
</entry>
</feed>