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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2012-01-21T11:11:27+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=145&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-01-21T11:11:27+01:00</updated>
<published>2012-01-21T11:11:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=145&amp;p=1362#p1362</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=145&amp;p=1362#p1362"/>
<title type="html"><![CDATA[Re: RC5 + PWM + menu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=145&amp;p=1362#p1362"><![CDATA[
<div class="quotetitle">modrzej napisał(a):</div><div class="quotecontent"><br />... ale nie wiem zbytnio jak mam interpretować te zapiski... np. <!-- m --><a class="postlink" href="http://lirc.sourceforge.net/remotes/humax/RS-101P">http://lirc.sourceforge.net/remotes/humax/RS-101P</a><!-- m -->. Mogę prosić o małe wyjaśnienie ???<br /></div><br /><br />No jeśli chodzi o mnie to ciężko będzie o małe wyjaśnienie, ... dlatego poświęciłem w drugiej części książki, cały bardzo duży rozdział na ten temat. Będzie w nim o dekodowaniu podczerwieni od A do P <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... a m.in w szczegółach jak interpretować najróżniejsze dane z lirc.org, bo jak pewnie zauważyłeś - są tam różne opisy, bardzo różne opisy. (nadmienię, że ten rozdział już dawno jest zamknięty i gotowy, bo będzie to pierwszy rozdział książki prawdoporobnie)<br /><br />Dlatego mnie osobiście trudno byłoby to w kilku słowach wyjaśnić tak żeby ktoś od razu zrozumiał o co mi chodzi.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 21 sty 2012, o 11:11</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[modrzej]]></name></author>
<updated>2012-01-21T09:43:52+01:00</updated>
<published>2012-01-21T09:43:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=145&amp;p=1361#p1361</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=145&amp;p=1361#p1361"/>
<title type="html"><![CDATA[Re: RC5 + PWM + menu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=145&amp;p=1361#p1361"><![CDATA[
Mam pytanie co do dekodowania sygnału z pilota... Ogólnie miałem szczęście, że trafił mi się w domu pilot działający w RC5... ale mam też inne, które raczej w tym standardzie nie działają... Chciałem przerobić kod na dekodowanie sygnału właśnie z tych innych pilotów, ale nie wiem zbytnio jak mam interpretować te zapiski... np. <!-- m --><a class="postlink" href="http://lirc.sourceforge.net/remotes/humax/RS-101P">http://lirc.sourceforge.net/remotes/humax/RS-101P</a><!-- m -->. Mogę prosić o małe wyjaśnienie ???<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=175">modrzej</a> — 21 sty 2012, o 09:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[modrzej]]></name></author>
<updated>2012-01-16T10:37:12+01:00</updated>
<published>2012-01-16T10:37:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=145&amp;p=1279#p1279</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=145&amp;p=1279#p1279"/>
<title type="html"><![CDATA[Re: RC5 + PWM + menu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=145&amp;p=1279#p1279"><![CDATA[
Program pisałem właśnie klocek po klocku i każda część osobno działa. Sterowanie PWM działa z pilota jeżeli wywołuję samą funkcję np. PWM1 w głównej pętli programu. Natomiast, jeżeli dochodzi już do tego obsługa menu program się wysypuje. Zauważyłem też pewną anomalię. Mianowicie kiedy zmienię trochę kod funkcji Menu() na taki:<br /><br />[syntax=cpp]<br />void Menu()<br />{<br />if(Ir_key_press_flag) <br />{<br /><br />if( !address &amp;&amp; 22==command ) <br />{<br />nr_menu=(nr_menu+1)%3; <br />_delay_ms(50);// załączamy miganie podświetlenia LCD<br /><br />Ir_key_press_flag = 0;<br />command=0xff;<br />address=0xff;<br />}<br /><br /><br /><br /><br />if( !address &amp;&amp; 21==command )<br />{<br />nr_menu=(nr_menu-1)%3; <br />_delay_ms(50);// wyłączamy miganie podświetlenia LCD<br /><br />Ir_key_press_flag = 0;<br />command=0xff;<br />address=0xff;<br />}<br /><br /><br />}<br /><br />if(nr_menu == 0)Glowny();<br />if(nr_menu == 1 || nr_menu == -3)PWM1();<br />if(nr_menu == 2 || nr_menu == -2)PWM2();<br />if(nr_menu == 3 || nr_menu == -1)PWM3();<br />//if(nr_menu == 4 || nr_menu == -1)RC5();<br /><br /><br />}[/syntax]<br /><br />wówczas &quot;chodzenie&quot; po menu działa, mogę zmieniać wartości PWM przy użyciu pilota, diody ładnie się zapalają, ściemniają itp. ale kiedy jestem w menu Glowny() i nacisnę jaki kolwiek inny przycisk pilota oprócz prawo/lewo program tak jakby zawieszał się i przestaje odbierać kody z pilota. Po naciśnięciu np. vol_up nie mogę już chodzić po menu i dzieje się tak tylko w menu Glowny().<br /><br /><br />EDIT:<br /><br />Już problem rozwiązany... wystarczyło do menu Glowne() dorzucić warunek wystąpienia flagi i wszystko ładnie ruszyło...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=175">modrzej</a> — 16 sty 2012, o 10:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[SunRiver]]></name></author>
<updated>2012-01-15T22:48:19+01:00</updated>
<published>2012-01-15T22:48:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=145&amp;p=1275#p1275</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=145&amp;p=1275#p1275"/>
<title type="html"><![CDATA[Re: RC5 + PWM + menu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=145&amp;p=1275#p1275"><![CDATA[
hmm... a może po prostu brakuje możliwości ustawiania ??<br /><br />Ja bym to widział tak :<br /><br />1. Jeśli działa &quot;chodzenie po menu&quot; to może ustal sobie predefiniowane wartości PWM w danym menu np:<br /><br />-- Menu A<br />    -- Wartości predefiniowane <br />         -- key 1   -- PWM = 25%<br />         -- key 2   -- PWM = 50%<br />         -- Key 3   -- PWM = 75%<br />         -- Key 4   -- PWM = 100%<br />         -- Key 0   -- PWM = 0%<br />    -- płynne PWM <br />         -- Key V+ -- PWM +1 <br />         -- Key V- -- PWM  -1<br />    -- Exit Menu (OK)<br /><br />bo ni jak się znaleźć nie umiem w twoim kodzie , a tak można by chyba prościej zdefiniować .<br /><br />A tu jak pisze Mirek , nie znane są zależności  programu i spory kłopot z analizą może być.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=58">SunRiver</a> — 15 sty 2012, o 22:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2012-01-15T22:20:43+01:00</updated>
<published>2012-01-15T22:20:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=145&amp;p=1274#p1274</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=145&amp;p=1274#p1274"/>
<title type="html"><![CDATA[Re: RC5 + PWM + menu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=145&amp;p=1274#p1274"><![CDATA[
Ciężko analizować taki rozbudowany kod i wyszukać jakiegoś tam błędu nie znając jeszcze założeń. <br /><br />Generalnie można tylko rzucić okiem i zobaczyć czy gdzieś nie ma jakichś kardynalnych błędów, które wpływają dalej na twoje już specyficzne problemy.<br /><br />Taki jeden błąd wyłapałem, bo masz gdzieś tam w kodzie:<br /><br />if( ....... nr_menu == -2 )<br /><br />a tymczasem zmienna <strong><span style="color: #0000FF">nr_menu</span></strong> jest zdefiniowana jako <strong><span style="color: #FF0000">uint8_t</span></strong> - widzisz <strong><span style="color: #FF0000">zonka </span></strong>?<br /><br />Generalnie to proponuję pisać program mniejszymi kawałkami i je sobie testować - czy i jak działają, potem dodawać kolejne klocki po kolei a nie wpisać wszystko naraz a potem &quot;coś nie działa&quot;<br /><br />jak jeszcze coś zobaczę o ile będę miał czas na analizę tak długiego kodu to dam znać.<br /><br />Generalnie wolę bardziej sprecyzowane pytania - wtedy łatwiej pomóc, naprowadzić itp<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 15 sty 2012, o 22:20</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[modrzej]]></name></author>
<updated>2012-01-15T20:26:55+01:00</updated>
<published>2012-01-15T20:26:55+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=145&amp;p=1267#p1267</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=145&amp;p=1267#p1267"/>
<title type="html"><![CDATA[RC5 + PWM + menu]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=145&amp;p=1267#p1267"><![CDATA[
Witam.<br />Buduję projekt ściemniacza sterowanego podczerwienią, jednak stanąłem z nim trochę... mianowicie... Obsługa podczerwieni działa (układ odbiera kody z pilota), po menu (narazie uproszczonym) mogę się poruszać, nie mniej jednak jeżeli znajduję się już w danym menu nie mogę za żadne skarby zmienić wartości PWM... układ nie reaguje na pilota :/ Obecnie mój kod wygląda tak (wkleję całość, żeby nie było niejasności): <br /><br />[syntax=cpp]#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 />#include &lt;stdio.h&gt;<br />#include &lt;stdlib.h&gt;<br /><br />#include &quot;lcd44780.h&quot;<br />#include &quot;ir_decode.h&quot;<br /><br /><br />volatile uint8_t pwm1, pwm2, pwm3, nr_menu, pwm1_wyswietl, pwm2_wyswietl, pwm3_wyswietl;<br /><br />char buf;<br /><br />void Init_Port()<br />{<br />//ustawienie pinów wejściowych przycisków//<br />DDRC |= (0&lt;&lt;PC7)|(0&lt;&lt;PC6)|(0&lt;&lt;PC5)|(0&lt;&lt;PC4)|(0&lt;&lt;PC3)|(0&lt;&lt;PC2)|(0&lt;&lt;PC1);  //ustaw porty wyjscia/wejscia<br />PORTC |= (1&lt;&lt;PC7)|(1&lt;&lt;PC6)|(1&lt;&lt;PC5)|(1&lt;&lt;PC4)|(1&lt;&lt;PC3)|(1&lt;&lt;PC2)|(1&lt;&lt;PC1); //piny wyjscia na low/wejscia na high<br />}<br /><br />void Init_Timer()<br />{<br />//***** PROGRAMOWY PWM - 3 KANAŁY *******<br />// ustawienie pinów kanałów programowych PWM jako WYJŚCIA<br />DDRA |= (1&lt;&lt;PA7) | (1&lt;&lt;PA6) | (1&lt;&lt;PA5);<br />// wyłączenie diod LED podłączonych katodami do wyjść<br />PORTA |= (1&lt;&lt;PA7)| (1&lt;&lt;PA6) | (1&lt;&lt;PA5);<br /><br />// ustawienia TIMER2 w tryb CTC<br />TCCR2 |= (1&lt;&lt;WGM21);// tryb  CTC<br />TCCR2 |= (1&lt;&lt;CS20);// preskaler = 1<br />OCR2 = 255;// dodatkowy podział częsttotliwości przez 200<br />TIMSK |= (1&lt;&lt;OCIE2);// zezwolenie na przerwanie CompareMatch<br /><br />sei();// odblokowanie globalne przerwań<br />}<br /><br />void PWM1()<br />{<br />if(Ir_key_press_flag) {<br />if( !address &amp;&amp; 16==command )<br />{<br />if(pwm1_wyswietl&lt;=90)<br />{<br /> pwm1+=25; <br /> pwm1_wyswietl+=10;<br />}<br />}<br /><br />if( !address &amp;&amp; 17==command ) <br />{<br />if(pwm1_wyswietl&gt;=10)<br />{<br />pwm1-=25; <br />pwm1_wyswietl-=10;<br />}<br />}<br /><br />Ir_key_press_flag = 0;<br />command=0xff;<br />address=0xff;<br />}<br /><br />lcd_str(&quot;1:PWM 1&quot;);<br />lcd_locate(1,0);<br />   lcd_int(pwm1_wyswietl);<br />lcd_str(&quot;%      &quot;);<br />lcd_locate(0,0);<br />}<br /><br />void PWM2()<br />{<br />if(Ir_key_press_flag) {<br />if( !address &amp;&amp; 16==command )<br />{<br />if(pwm2_wyswietl&lt;=90)<br />{<br /> pwm2+=25; <br /> pwm2_wyswietl+=10;<br />}<br />}<br /><br />if( !address &amp;&amp; 17==command ) <br />{<br />if(pwm2_wyswietl&gt;=10)<br />{<br />pwm2-=25; <br />pwm2_wyswietl-=10;<br />}<br />}<br /><br />Ir_key_press_flag = 0;<br />command=0xff;<br />address=0xff;<br />}<br /><br />lcd_str(&quot;2:PWM 2&quot;);<br />lcd_locate(1,0);<br />   lcd_int(pwm2_wyswietl);<br />lcd_str(&quot;%      &quot;);<br />lcd_locate(0,0);<br />}<br /><br />void PWM3()<br />{<br />if(Ir_key_press_flag) {<br />if( !address &amp;&amp; 16==command )<br />{<br />if(pwm3_wyswietl&lt;=90)<br />{<br /> pwm3+=25; <br /> pwm3_wyswietl+=10;<br />}<br />}<br /><br />if( !address &amp;&amp; 17==command ) <br />{<br />if(pwm3_wyswietl&gt;=10)<br />{<br />pwm3-=25; <br />pwm3_wyswietl-=10;<br />}<br />}<br /><br />Ir_key_press_flag = 0;<br />command=0xff;<br />address=0xff;<br />}<br /><br />lcd_str(&quot;3:PWM 3&quot;);<br />lcd_locate(1,0);<br />   lcd_int(pwm3_wyswietl);<br />lcd_str(&quot;%      &quot;);<br />lcd_locate(0,0);<br />}<br /><br /><br /><br />void RC5()<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 />if(Ir_key_press_flag) {/* jeśli odebrano prawidłowe kody z pilota */<br /><br />if( !address ) {/* jeśli adres == 0 */<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 />if(!address &amp;&amp; 22==command)<br />{<br />nr_menu=0;<br />}<br /><br />/* wyzerowanie flagi odbioru oraz wartości odebranych kodów */<br />Ir_key_press_flag=0;<br />command=0xff;<br />address=0xff;<br />}<br />}<br /><br /><br />void Glowny()<br />{<br />lcd_str(&quot;Godzina&quot;);<br />lcd_locate(1,0);<br />   lcd_str(&quot;Data&quot;);<br />lcd_locate(1,11);<br />lcd_str(&quot;Temp.&quot;);<br />lcd_locate(0,0);<br />}<br /><br />void Menu()<br />{<br />if(Ir_key_press_flag) <br />{<br /><br />if( !address &amp;&amp; 22==command ) nr_menu=(nr_menu+1)%3; _delay_ms(50);// załączamy miganie podświetlenia LCD<br />if( !address &amp;&amp; 21==command ) nr_menu=(nr_menu-1)%3; _delay_ms(50);// wyłączamy miganie podświetlenia LCD<br /><br />Ir_key_press_flag = 0;<br />command=0xff;<br />address=0xff;<br />}<br /><br />//if(nr_menu == 0)Glowny();<br />if(nr_menu == 0 || nr_menu == 0)PWM1();<br />if(nr_menu == 1 || nr_menu == -2)PWM2();<br />if(nr_menu == 2 || nr_menu == -1)PWM3();<br />//if(nr_menu == 4 || nr_menu == -1)RC5();<br /><br /><br />}<br /><br />int main(void) <br />{<br />lcd_init();/* inicjalizacja LCD */<br />ir_init();/* inicjalizacja dekodowania IR */<br />Init_Port();<br />Init_Timer();<br /><br />sei();/* włączamy globalne przerwania */<br /><br />/* pętla nieskończona */<br />while(1) <br />{<br />Menu();<br />}<br />}<br /><br /><br /><br /><br />// ciało procedury obsługi przerwania Compare Match Timera2<br />ISR( TIMER2_COMP_vect )<br />{<br />static uint8_t cnt; // definicja naszego licznika PWM<br /><br />if(cnt&gt;=pwm1) PORTA |= (1&lt;&lt;PA7); else PORTA &amp;= ~(1&lt;&lt;PA7);<br />if(cnt&gt;=pwm2) PORTA |= (1&lt;&lt;PA6); else PORTA &amp;= ~(1&lt;&lt;PA6);<br />if(cnt&gt;=pwm3) PORTA |= (1&lt;&lt;PA5); else PORTA &amp;= ~(1&lt;&lt;PA5);<br /><br /><br />cnt++;// zwiększanie licznika o 1<br />}<br />[/syntax]<br /><br />Używam bibliotek z książki Pana Mirosława, opieram się również na jego przykładach... Ogólnie rzecz biorąc w tej postaci kodu program działa tylko na poruszanie się po menu. Nie mogę zmieniać wartości PWM... Zgłupiałem już trochę. Siedzę nad tym od paru godz. i nie mam pomysłu... zapewne to jakaś błahostka... Mogę liczyć na pomoc ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=175">modrzej</a> — 15 sty 2012, o 20:26</p><hr />
]]></content>
</entry>
</feed>