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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-08-21T19:05:01+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=30&amp;t=15926&amp;mode</id>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2016-08-21T19:05:01+01:00</updated>
<published>2016-08-21T19:05:01+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=166711#p166711</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=166711#p166711"/>
<title type="html"><![CDATA[Re: atmega8a + sterowanie na podczerwień w formacie nec]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=166711#p166711"><![CDATA[
Witam<br /><div class="quotetitle">katff napisał(a):</div><div class="quotecontent"><br />Nie wiem, nic o tym...<br /></div><br />Moje pytanie było raczej retoryczne - porównaj to z oryginalnym kodem.<br />A może prześledź Twój wątek od początku, zwróć uwagę na sugestie kol.<strong>matekogon</strong> i pozostałych: zrób porządek w PIN'ach, z przerwaniami itd. <br />Ja tylko dostrzegam błędy które bez względu na kod nie powinny się pojawiać, natomiast kol.matekogon  bazując na sprawdzonym kodzie wyraźnie Ci mówi co jest nie tak.<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 21 sie 2016, o 19:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[matekogon]]></name></author>
<updated>2016-08-21T17:19:46+01:00</updated>
<published>2016-08-21T17:19:46+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=166695#p166695</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=166695#p166695"/>
<title type="html"><![CDATA[Re: atmega8a + sterowanie na podczerwień w formacie nec]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=166695#p166695"><![CDATA[
Kolego jaką masz atmegę dokładnie bo jeśli tą co na rysunku Atmega88 to ICP1 jest na pinie PB0 a żeby skorzystać z tego przerwania to musisz użyć timera &quot;1&quot; a nie tak jak konfigurujesz timera &quot;0&quot; <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> <br /><br />Czyli mówiąc w skrócie. Skopiuj całą bibliotekę z linku który ci wcześniej podałem zmień tylko konfigurację timera 1  pod twój avr i port z PD6 na Twój czyli PB0.  <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br /><br />Powinno wszystko śmigać <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1380">matekogon</a> — 21 sie 2016, o 17:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[katff]]></name></author>
<updated>2016-08-21T16:24:51+01:00</updated>
<published>2016-08-21T16:24:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=166686#p166686</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=166686#p166686"/>
<title type="html"><![CDATA[Re: atmega8a + sterowanie na podczerwień w formacie nec]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=166686#p166686"><![CDATA[
Nie wiem, nic o tym nie udało mi się znaleźć co by mi pomogło<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14621">katff</a> — 21 sie 2016, o 16:24</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2016-08-19T21:03:21+01:00</updated>
<published>2016-08-19T21:03:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=166569#p166569</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=166569#p166569"/>
<title type="html"><![CDATA[Re: atmega8a + sterowanie na podczerwień w formacie nec]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=166569#p166569"><![CDATA[
Witam<br />A to ma tak być, że w <strong>TIMER0_OVF_vect</strong> sprawdzasz <strong>ICR1</strong>?<br />[syntax=c]ISR(TIMER0_OVF_vect)<br />    {<br />                       <br />            static uint32_t temp_frame;<br />            static uint16_t last_icr;<br />            uint16_t width;<br />            static uint8_t frame_idx = 33;<br />            uint8_t bit = 2;<br />            width = ICR1 - last_icr;<br />            last_icr = ICR1;<br />...<br />...<br />}[/syntax]<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 19 sie 2016, o 21:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[katff]]></name></author>
<updated>2016-08-19T18:53:22+01:00</updated>
<published>2016-08-19T18:53:22+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=166559#p166559</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=166559#p166559"/>
<title type="html"><![CDATA[Re: atmega8a + sterowanie na podczerwień w formacie nec]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=166559#p166559"><![CDATA[
Sprawdziłem odbiornik ma 38 kHz, pilot jest w standardzie NEC, wszystko jest dobrze podłączone, musi być jakiś błąd w kodzie.<br /><br />Edit:Przedtem sprawdziłem też diodami że program nie przechodził do ISR, zmieniłem trochę program, teraz wchodzi do ISR ale warunek if(frame_idx &lt; 32) nie przechodzi<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 /><br />    #define F_START F_CPU/8000*13.5<br />    #define F_ONE F_CPU/8000*2.25<br />    #define F_ZERO F_CPU/8000*1.125<br />    #define F_MARGIN F_CPU/8000*0.4<br />    //definicja LED1 (do którego pinu podłączony LED1)<br />    #define LED1 PD0<br />    //definicja LED2 (do którego pinu podłączony LED2)<br />    #define LED2 PD1<br /><br />    volatile uint8_t frame_ready;<br />    volatile uint8_t address;<br />    volatile uint8_t command;<br />    <br />    int main(void)<br />    {<br />   //######## konfiguracja timera ##############<br />DDRB |= (1&lt;&lt;DDB0);<br />PORTB |= (1&lt;&lt;PORTB0);<br />   TCCR0 |= (1&lt;&lt;CS02) | (1&lt;&lt;CS00); // źródłem CLK, preskaler 1024<br />   TIMSK |= (1&lt;&lt;TOIE0);           //Przerwanie overflow (przepełnienie timera)<br />   //###########################################<br />   <br />   sei(); //Globalne uruchomienie przerwań<br /><br />        while(1)<br />        {<br />      if(frame_ready)<br />     {<br />    //########### I/O ###########<br />    DDRD  |= (1&lt;&lt;LED1) | (1&lt;&lt;LED2); //Ustawienie pinów sterujących diodami<br />    // jako wyjścia<br />    PORTD |= (1&lt;&lt;LED1); //Ustawienie stanu wysokiego na wyjściu sterującym LED1   <br />    frame_ready = 0;<br />     }<br /><br />    }<br />    }<br />    <br />    ISR(TIMER0_OVF_vect)<br />    {<br /><br />    static uint32_t temp_frame;<br />    static uint16_t last_icr;<br />    uint16_t width;<br />    static uint8_t frame_idx = 33;<br />    uint8_t bit = 2;<br />    width = ICR1 - last_icr;<br />    last_icr = ICR1;<br /><br /><br /><br />    if(frame_idx == 33 &amp;&amp; width &gt; F_START - F_MARGIN &amp;&amp; width &lt; F_START + F_MARGIN)<br />    {<br />    frame_idx--;<br />    }<br /><br /><br /><br />    if(frame_idx &lt; 32) //ten warunek nie przechodzi<br />    {<br /><br />//########### I/O ###########<br />DDRD  |= (1&lt;&lt;LED1) | (1&lt;&lt;LED2); //Ustawienie pinów sterujących diodami<br />// jako wyjścia<br />PORTD |= (1&lt;&lt;LED1); //Ustawienie stanu wysokiego na wyjściu sterującym LED1<br />frame_idx = 33;<br /><br />    if(width &gt; F_ONE - F_MARGIN &amp;&amp; width &lt; F_ONE + F_MARGIN) bit = 1;<br />    if(width &gt; F_ZERO - F_MARGIN &amp;&amp; width &lt; F_ZERO + F_MARGIN) bit = 0;<br />    if(bit != 2)<br />    {<br />    temp_frame |= (uint32_t)bit &lt;&lt; frame_idx;<br />    if(frame_idx == 0)<br />    {<br />    address = (uint8_t)(temp_frame &gt;&gt; 24);<br />    command = (uint8_t)(temp_frame &gt;&gt; 8);<br />    temp_frame = 0;<br />    frame_idx = 33;<br />    frame_ready = 1;<br />    }<br />    else<br />    {<br />    frame_idx--;<br />    }<br />    }<br />    else<br />    {<br /><br />    }<br />    }<br />    if(frame_idx == 32) frame_idx--;<br /><br /><br />    }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14621">katff</a> — 19 sie 2016, o 18:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[matekogon]]></name></author>
<updated>2016-08-19T18:39:30+01:00</updated>
<published>2016-08-19T18:39:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=166557#p166557</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=166557#p166557"/>
<title type="html"><![CDATA[Re: atmega8a + sterowanie na podczerwień w formacie nec]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=166557#p166557"><![CDATA[
<div class="quotetitle">katff napisał(a):</div><div class="quotecontent"><br />No ale poprawne zdefiniowanie prędkości zegara na razie nie sprawiło żeby program zadziałał, więc to chyba za wcześnie żeby pisać że jest to klasyczny przykład tego jak takie ustawianie częstotliwości szkodzi.<br /></div><br /><br /><br />Kolego piszę ci że kod działa na 100% bo akurat pracuję nad pewnym projektem i korzystam z tego kodu. Mam pilota z kodowaniem nec. Więc u ciebie widzę takie opcję .Pilot nie jest w standardzie NEC. Źle masz coś podłączone. Gdzieś popełniłeś błąd w kopiowaniu kodu  <br /><br />Może być jeszcze jedna sytuacja Odbiornik podczerwieni nie masz na częstotliwość 38khz. Podobno nie ma to wpływu może zmniejszyć się zasięg ale u mnie niestety pilot nie chciał ruszyć na 36khz po zmianie na 38khz śmiga aż miło<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1380">matekogon</a> — 19 sie 2016, o 18:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[katff]]></name></author>
<updated>2016-08-19T18:23:53+01:00</updated>
<published>2016-08-19T18:23:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=166555#p166555</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=166555#p166555"/>
<title type="html"><![CDATA[Re: atmega8a + sterowanie na podczerwień w formacie nec]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=166555#p166555"><![CDATA[
No ale poprawne zdefiniowanie prędkości zegara na razie nie sprawiło żeby program zadziałał, więc to chyba za wcześnie żeby pisać że jest to klasyczny przykład tego jak takie ustawianie częstotliwości szkodzi.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14621">katff</a> — 19 sie 2016, o 18:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-08-19T11:13:50+01:00</updated>
<published>2016-08-19T11:13:50+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=166535#p166535</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=166535#p166535"/>
<title type="html"><![CDATA[Re: atmega8a + sterowanie na podczerwień w formacie nec]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=166535#p166535"><![CDATA[
<div class="quotetitle">danny napisał(a):</div><div class="quotecontent"><br />Tymbardziej, że w nec.h i main.c były ustawione dwie różne częstotliwości.<br /></div><br />To jest właśnie KLASYCZNY przypadek tego co się dzieje, gdy ktoś to robi w kodzie a później mu coś nie działa i musi poświęcać już nie godziny a dni na szukanie błędu jak mówiłem.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 19 sie 2016, o 11:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[danny]]></name></author>
<updated>2016-08-19T10:17:53+01:00</updated>
<published>2016-08-19T10:17:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=166533#p166533</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=166533#p166533"/>
<title type="html"><![CDATA[Re: atmega8a + sterowanie na podczerwień w formacie nec]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=166533#p166533"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">katff napisał(a):</div><div class="quotecontent">Nie bardzo rozumiem sens takich pytań.<br /></div><br />A tu na forum każdy rozumie - i mam nadzieję że ty teraz po tym poradniku również <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> U nas jest taka zasada że nie używa się #define F_CPU w kodach na forum i tego się trzymamy - jak widać warto <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /></div><br /><br /><br />Tymbardziej,  że w nec.h i main.c były ustawione dwie różne częstotliwości.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1505">danny</a> — 19 sie 2016, o 10:17</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2016-08-19T04:51:28+01:00</updated>
<published>2016-08-19T04:51:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=166517#p166517</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=166517#p166517"/>
<title type="html"><![CDATA[Re: atmega8a + sterowanie na podczerwień w formacie nec]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=166517#p166517"><![CDATA[
<div class="quotetitle">katff napisał(a):</div><div class="quotecontent"><br />Nie bardzo rozumiem sens takich pytań.<br /></div><br />A tu na forum każdy rozumie - i mam nadzieję że ty teraz po tym poradniku również <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> U nas jest taka zasada że nie używa się #define F_CPU w kodach na forum i tego się trzymamy - jak widać warto <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> — 19 sie 2016, o 04:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[katff]]></name></author>
<updated>2016-08-18T20:39:10+01:00</updated>
<published>2016-08-18T20:39:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=166498#p166498</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=166498#p166498"/>
<title type="html"><![CDATA[Re: atmega8a + sterowanie na podczerwień w formacie nec]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=166498#p166498"><![CDATA[
<div class="quotetitle">matekogon napisał(a):</div><div class="quotecontent"><br />Kolego a po co to #define F_CPU 1000000UL?<br /></div><br /><br />Żeby zdefiniować prędkość zegara. Nie bardzo rozumiem sens takich pytań. mirekk 36 znalazłem teraz filmik gdzie to objaśniłeś, poprawione.<br /><br />Kicajek<br /><br />Podejrzewam że właśnie w tym jest błąd że źle coś podpiąłem. Miałem drobną przerwę ale jeszcze raz wrócę do tego kodu i spróbuje zrozumieć co jest źle i poprawić.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14621">katff</a> — 18 sie 2016, o 20:39</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2016-08-14T23:36:53+01:00</updated>
<published>2016-08-14T23:36:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=166055#p166055</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=166055#p166055"/>
<title type="html"><![CDATA[Re: atmega8a + sterowanie na podczerwień w formacie nec]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=166055#p166055"><![CDATA[
Witam<br />...a to?<br /><div class="quotetitle">katff napisał(a):</div><div class="quotecontent"><br />[syntax=c]PORTD |= (1&lt;&lt;PB0); /* podciągnięcie wejścia IR */[/syntax]<br /></div><br />Zresztą pogubiłem się - sprawdź w kodzie gdzie właściwie się podpinasz z tym IR, bo coś nie tak.<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 14 sie 2016, o 23:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[matekogon]]></name></author>
<updated>2016-08-14T20:58:00+01:00</updated>
<published>2016-08-14T20:58:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=166042#p166042</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=166042#p166042"/>
<title type="html"><![CDATA[Re: atmega8a + sterowanie na podczerwień w formacie nec]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=166042#p166042"><![CDATA[
Kolego a po co to #define F_CPU 1000000UL?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1380">matekogon</a> — 14 sie 2016, o 20:58</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[katff]]></name></author>
<updated>2016-08-13T17:30:49+01:00</updated>
<published>2016-08-13T17:30:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=165984#p165984</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=165984#p165984"/>
<title type="html"><![CDATA[Re: atmega8a + sterowanie na podczerwień w formacie nec]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=165984#p165984"><![CDATA[
Jeszcze raz przejrzałem te tematy i jestem na tym samym etapie co przedtem, if(frame_ready) warunek nigdy nie jest prawdziwy,jak po za warunkiem wstawię kod odpowiedzialny za włączenie diody to świecą. <br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br /><span style="color: #FF0000"><strong><em>#define F_CPU 1000000UL</em></strong> &lt;--- TEGO NIGDY NIE ROBI SIĘ W KODZIE PROGRAMU</span><br /></div><br /><span style="color: #FF0000">[ obiecuję, że po kolejnym umieszczeniu na forum przez kolegę kodu z tego typu wpisem - kod będzie usuwany bez ostrzeżenia ok? - mirekk 36 ]</span><br /><br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />    //#include &quot;LCD/lcd44780.h&quot;<br />#include &lt;util/delay.h&gt;<br />    #include &lt;avr/interrupt.h&gt;<br /><br />    #define F_START F_CPU/8000*13.5<br />    #define F_ONE F_CPU/8000*2.25<br />    #define F_ZERO F_CPU/8000*1.125<br />    #define F_MARGIN F_CPU/8000*0.4<br />    <br />    volatile uint8_t frame_ready;<br />    volatile uint8_t address;<br />    volatile uint8_t command;<br />    <br />    int main(void)<br />    {<br />//    DDRA |= (1&lt;&lt;PA7);<br />//    PORTA |= (1&lt;&lt;PA7); /* podświetlenie wyświetlacza LCD */<br />    <br />    PORTD |= (1&lt;&lt;PB0); /* podciągnięcie wejścia IR */<br />    <br />//    lcd_init();     /* inicjalizacja LCD */<br />    /* ir timer */<br />    TCCR1B |= (1&lt;&lt;CS11);    /* prescaler = 8 */<br />    TCCR1B &amp;= ~(1&lt;&lt;ICES1);  /* falling edge */<br />    TIMSK |= (1&lt;&lt;TICIE1);   /* enable interrupt */<br />    sei();<br />    while(1)<br />    {<br />    if(frame_ready)<br />    {<br />    DDRD |= (1&lt;&lt;DDD1);          // set LED pin PD1 to output<br />    //while (1) {<br />    PORTD |= (1&lt;&lt;PORTD1);   // drive PD1 high<br />    _delay_ms(8000);         // delay 100 ms<br />    PORTD &amp;= ~(1&lt;&lt;PORTD1);  // drive PD1 low<br />    _delay_ms(9000);<br />    frame_ready = 0;<br />    }<br />                           //jezeli powyzszy kod tu dam to diody swieca<br /><br /><br />    }<br />    }<br />    <br />    ISR(TIMER1_CAPT_vect)<br />    {<br />    static uint32_t temp_frame;<br />    static uint16_t last_icr;<br />    uint16_t width;<br />    static uint8_t frame_idx = 33;<br />    uint8_t bit = 2;<br />    width = ICR1 - last_icr;<br />    last_icr = ICR1;<br />    if(frame_idx == 33 &amp;&amp; width &gt; F_START - F_MARGIN &amp;&amp; width &lt; F_START + F_MARGIN)<br />    {<br />    frame_idx--;<br />    }<br />    if(frame_idx &lt; 32)<br />    {<br />    if(width &gt; F_ONE - F_MARGIN &amp;&amp; width &lt; F_ONE + F_MARGIN) bit = 1;<br />    if(width &gt; F_ZERO - F_MARGIN &amp;&amp; width &lt; F_ZERO + F_MARGIN) bit = 0;<br />    if(bit != 2)<br />    {<br />    temp_frame |= (uint32_t)bit &lt;&lt; frame_idx;<br />    if(frame_idx == 0)<br />    {<br />    address = (uint8_t)(temp_frame &gt;&gt; 24);<br />    command = (uint8_t)(temp_frame &gt;&gt; 8);<br />    temp_frame = 0;<br />    frame_idx = 33;<br />    frame_ready = 1;<br />    }<br />    else<br />    {<br />    frame_idx--;<br />    }<br />    }<br />    else<br />    {<br />    frame_idx = 33;<br />    }<br />    }<br />    if(frame_idx == 32) frame_idx--;<br />    }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14621">katff</a> — 13 sie 2016, o 17:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[matekogon]]></name></author>
<updated>2016-08-09T06:46:34+01:00</updated>
<published>2016-08-09T06:46:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=165696#p165696</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=165696#p165696"/>
<title type="html"><![CDATA[Re: atmega8a + sterowanie na podczerwień w formacie nec]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=165696#p165696"><![CDATA[
Kolego podany tam kod do systemu nec działa w 100% bo sam aktualnie jestem w trakcie pracy nad projektem obsługującym pilota w standardzie NEC<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1380">matekogon</a> — 9 sie 2016, o 06:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[katff]]></name></author>
<updated>2016-08-08T20:33:13+01:00</updated>
<published>2016-08-08T20:33:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=165682#p165682</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=165682#p165682"/>
<title type="html"><![CDATA[Re: atmega8a + sterowanie na podczerwień w formacie nec]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=165682#p165682"><![CDATA[
Szukałem już podobnych tematów na forum, pierwszy widziałem. Ten drugi podany temat nie za bardzo mi pomógł, chociaż to raczej wina mojej nie wiedzy ;/<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14621">katff</a> — 8 sie 2016, o 20:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[matekogon]]></name></author>
<updated>2016-08-04T18:48:21+01:00</updated>
<published>2016-08-04T18:48:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=165414#p165414</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=165414#p165414"/>
<title type="html"><![CDATA[Re: atmega8a + sterowanie na podczerwień w formacie nec]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=165414#p165414"><![CDATA[
Kolego przeczytaj ten wątek <!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic10813.html" >topic10813.html</a><!-- l --> i ten <!-- l --><a class="postlink-local" href="http://forum.atnel.pl/topic7144.html#p83490" >topic7144.html#p83490</a><!-- l --><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1380">matekogon</a> — 4 sie 2016, o 18:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[katff]]></name></author>
<updated>2016-08-08T20:30:00+01:00</updated>
<published>2016-08-03T19:35:23+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=165349#p165349</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=165349#p165349"/>
<title type="html"><![CDATA[atmega8a + sterowanie na podczerwień w formacie nec]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=15926&amp;p=165349#p165349"><![CDATA[
Cześć, to mój pierwszy temat tutaj. Mam problem z zaprogramowaniem układu żeby odbierać sygnał z pilota. Jestem w tym kompletnie zielony, programuje dużo ale tworze programy w c++ na komputerze i teraz widzę że to się bardzo różni od siebie. Na początku szukałem jakiejś biblioteki z której miałem nadzieje że po załączeniu jej będę miał wszystko gotowe ale wiedziałem że tak łatwo na pewno nie będzie. Znalazłem bibliotekę z stąd <!-- m --><a class="postlink" href="https://github.com/jwalkiew/ir_nec" >https://github.com/jwalkiew/ir_nec</a><!-- m --> . Schemat mojego układu znajduje się poniżej oraz pilot z którego korzystam <!-- m --><a class="postlink" href="http://www.dfrobot.com/index.php?route=product/product&amp;product_id=1202&amp;search=FIT0389&amp;description=true&amp;category_id=48#.V6I05zVK8fW" >http://www.dfrobot.com/index.php?route= ... 6I05zVK8fW</a><!-- m --> . Chciałbym się najpierw dowiedzieć czy będzie można przystosować tą bibliotekę do mojego układu? No i co jest do zmiany bo jak ja się za to zabrałem to zyskiwałem tylko coraz więcej błędów po kompilacji. Podaje też kod który na razie udało mi się znaleźć. Na początku chciałem tylko dostać jakąś odpowiedź że pilot działa za pomocą diody, ogólnie to całość ma sterować silnikiem rolety która jest podpięta do mostka H.<br /><br />main.c<br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br /><span style="color: #FF0000"><strong><em>#define F_CPU 1000000UL</em></strong> &lt;--- TEGO NIGDY NIE ROBI SIĘ W KODZIE PROGRAMU</span><br /></div><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;commands.h&quot;<br />#include &quot;nec.h&quot;<br /><br />//E:\Programy\atmel\7.0\Packs\atmel\ATmega_DFP\1.0.106\include<br /><br /><br />int main() {<br />uint32_t current_command = 0;<br />uint32_t last_command = 0;<br /><br /><br />ir_init();<br /><br />while (1) {<br />current_command = get_current_command();<br /><br />//if (current_command == last_command) //cały czas się wykonuje , na razie wykomentowane<br />  // continue;<br /><br />if (current_command == 0) // current_command caly czas ma wartosc 0<br />{<br />    DDRD |= (1&lt;&lt;DDD1);          // set LED pin PD1 to output<br />//while (1) {<br />PORTD |= (1&lt;&lt;PORTD1);   // drive PD1 high<br />_delay_ms(8000);         // delay 100 ms<br />PORTD &amp;= ~(1&lt;&lt;PORTD1);  // drive PD1 low<br />_delay_ms(9000);         // delay 900 ms<br />//}<br />}<br /><br />continue;<br /><br />}<br /><br /><br />}[/syntax]<br /><br />nec.c<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &quot;nec.h&quot;<br /><br />void ir_init() {<br />TCCR2 |= (1 &lt;&lt; WGM21);<br />TCCR2 |= (1 &lt;&lt; CS20); /* prescaler = 1 */<br />TIMSK |= (1 &lt;&lt; OCIE2);<br />OCR2 = (F_CPU * SAMPLE_RATIO) / 1000000 - 1;<br /><br />GICR |= (1 &lt;&lt; INT1); /* INT1 enable */<br />MCUCR |= (1 &lt;&lt; ISC11); /* Falling edge detection */<br /><br />//SREG |= (1 &lt;&lt; 7); /* Interrupts are allowed */ zakomentowane bo program nie przechodził wtedy przez to<br /><br />ir_reset();<br />total_cycles_counter = 0;<br />}<br /><br />void ir_reset() {<br />state = STATE_WAIT;<br />repeat = 0;<br />cycles_counter = 0;<br />}<br /><br />uint8_t ir_check_command(uint32_t command) {<br />uint8_t address_high = (command &gt;&gt; 24);<br />uint8_t address_low = (command &gt;&gt; 16);<br />return (address_high &amp; address_low) == 0;<br />}<br /><br />void ir_check_timeout() {<br />if (total_cycles_counter &lt; TIMEOUT)<br />return;<br /><br />ir_reset();<br />total_cycles_counter = 0;<br />check_falling_edge();<br />}<br /><br />ISR(TIMER2_COMP_vect) {<br />cycles_counter++;<br />total_cycles_counter++;<br />}<br /><br />ISR(INT1_vect) {<br />ir_check_timeout();<br /><br />GICR &amp;= (~(1 &lt;&lt; INT1));/* INT1 disable */<br /><br />switch (state) {<br />case STATE_WAIT:<br />if (edge == EDGE_FALLING)<br />ir_handle_state_wait_edge_falling();<br />else<br />ir_handle_state_wait_edge_rising();<br />break;<br /><br />case STATE_START:<br />if (edge == EDGE_RISING)<br />ir_handle_state_start_edge_rising();<br />else if (edge == EDGE_FALLING)<br />ir_handle_state_start_edge_falling();<br />break;<br /><br />case STATE_BITS:<br />if (edge == EDGE_RISING)<br />ir_handle_state_bits_edge_rising();<br />else if (edge == EDGE_FALLING)<br />ir_handle_state_bits_edge_falling();<br />break;<br /><br />case STATE_STOP:<br />ir_handle_state_stop();<br />break;<br /><br />default:<br />ir_reset();<br />break;<br />}<br /><br />toggle_edge();<br />GICR |= (1 &lt;&lt; INT1);/* INT1 enable */<br />}<br /><br />void ir_handle_state_wait_edge_falling() {<br />cycles_counter = 0;<br />state = STATE_START;<br />}<br /><br />void ir_handle_state_wait_edge_rising() {<br />ir_reset();<br />}<br /><br />void ir_handle_state_start_edge_falling() {<br />if(cycles_counter &gt;= TIME_START_HALFBIT_HIGH_COMMAND_MIN &amp;&amp; cycles_counter &lt;= TIME_START_HALFBIT_HIGH_COMMAND_MAX) {<br />state = STATE_BITS;<br />command_bits_counter = 0;<br />command = 0;<br />return;<br />}<br /><br />if (cycles_counter &gt;= TIME_START_HALFBIT_HIGH_REPEAT_MIN &amp;&amp; cycles_counter &lt;= TIME_START_HALFBIT_HIGH_REPEAT_MAX) {<br />state = STATE_STOP;<br />repeat = 1;<br />command = current_command;<br />return;<br />}<br /><br />ir_reset();<br />}<br /><br />void ir_handle_state_start_edge_rising() {<br />cycles_counter = 0;<br />state = STATE_START;<br />}<br /><br />void ir_handle_state_bits_edge_falling() {<br />if (cycles_counter &gt;= TIME_COMMAND_HALFBIT_HIGH_ZERO_MIN &amp;&amp; cycles_counter &lt;= TIME_COMMAND_HALFBIT_HIGH_ZERO_MAX) {<br />command = (command &lt;&lt; 1);<br />command_bits_counter++;<br /><br />if (command_bits_counter &lt; 32) {<br />state = STATE_BITS;<br />} else if (!ir_check_command(command)) {<br />ir_reset();<br />} else {<br />state = STATE_STOP;<br />current_command = command;<br />}<br /><br />return;<br />}<br /><br />if (cycles_counter &gt;= TIME_COMMAND_HALFBIT_HIGH_ONE_MIN &amp;&amp; cycles_counter &lt;= TIME_COMMAND_HALFBIT_HIGH_ONE_MAX) {<br />command = ((command &lt;&lt; 1) | 1);<br />command_bits_counter++;<br /><br />if (command_bits_counter &lt; 32) {<br />state = STATE_BITS;<br />} else if (!ir_check_command(command)) {<br />ir_reset();<br />} else {<br />state = STATE_STOP;<br />current_command = command;<br />}<br /><br />return;<br />}<br /><br /><br />command_bits_counter = 0;<br />command = 0;<br />ir_reset();<br />}<br /><br />void ir_handle_state_bits_edge_rising() {<br />cycles_counter = 0;<br />state = STATE_BITS;<br />}<br /><br />void ir_handle_state_stop() {<br />cycles_counter = 0;<br />state = STATE_WAIT;<br />current_command = command;<br />total_cycles_counter = 0;<br />}[/syntax]<br /><br />nec.h<br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br /><span style="color: #FF0000"><strong><em>#ifndef F_CPU<br />#define F_CPU 8000000<br />#endif</em></strong> &lt;--- TEGO NIGDY NIE ROBI SIĘ W KODZIE PROGRAMU</span><br /></div><br /><br />[syntax=c]#ifndef NEC_H_<br />#define NEC_H_<br /><br />#include &lt;avr/io.h&gt;<br /><br />// ...<br /><br />#define IR_PIN PD3<br /><br /><br />/* Last edge direction */<br />#define EDGE_FALLING 0<br />#define EDGE_RISING 1<br /><br /><br />/* Receiving signal states */<br />#define STATE_WAIT0/* When the receiver is waiting for the signal from remote controller */<br />#define STATE_START 1/* When start bit is received */<br />#define STATE_BITS2/* When command bits are received (32 bits: 8 - address, 8 - ~address, 8 - command, 8 - ~command) */<br />#define STATE_STOP 3/* When the stop bit is received */<br /><br /><br />/* Event duration times in microseconds */<br />#define SAMPLE_RATIO  10 /* Sampling rate */<br />#define TIME_TOLLERANCE 250 /* Tolerance */<br /><br />#define TIME_COMMAND_HALFBIT_HIGH_ZERO 560 /* High halfbit of the &quot;0&quot; */<br />#define TIME_COMMAND_HALFBIT_HIGH_ZERO_MIN ((TIME_COMMAND_HALFBIT_HIGH_ZERO - TIME_TOLLERANCE) / SAMPLE_RATIO)<br />#define TIME_COMMAND_HALFBIT_HIGH_ZERO_MAX ((TIME_COMMAND_HALFBIT_HIGH_ZERO + TIME_TOLLERANCE) / SAMPLE_RATIO)<br /><br />#define TIME_COMMAND_HALFBIT_HIGH_ONE1690 /* High halfbit of the &quot;1&quot; */<br />#define TIME_COMMAND_HALFBIT_HIGH_ONE_MIN ((TIME_COMMAND_HALFBIT_HIGH_ONE - TIME_TOLLERANCE) / SAMPLE_RATIO)<br />#define TIME_COMMAND_HALFBIT_HIGH_ONE_MAX ((TIME_COMMAND_HALFBIT_HIGH_ONE + TIME_TOLLERANCE) / SAMPLE_RATIO)<br /><br />#define TIME_START_HALFBIT_HIGH_COMMAND4500 /* High halfbit of the start bit, when the frame contains a command (not repeated) */<br />#define TIME_START_HALFBIT_HIGH_COMMAND_MIN((TIME_START_HALFBIT_HIGH_COMMAND - TIME_TOLLERANCE) / SAMPLE_RATIO)<br />#define TIME_START_HALFBIT_HIGH_COMMAND_MAX((TIME_START_HALFBIT_HIGH_COMMAND + TIME_TOLLERANCE) / SAMPLE_RATIO)<br /><br />#define TIME_START_HALFBIT_HIGH_REPEAT2250 /* High halfbit of the start bit, when the frame contains repeat of a command */<br />#define TIME_START_HALFBIT_HIGH_REPEAT_MIN((TIME_START_HALFBIT_HIGH_REPEAT - TIME_TOLLERANCE) / SAMPLE_RATIO)<br />#define TIME_START_HALFBIT_HIGH_REPEAT_MAX((TIME_START_HALFBIT_HIGH_REPEAT + TIME_TOLLERANCE) / SAMPLE_RATIO)<br /><br />#define TIMEOUT(110000 / SAMPLE_RATIO) /* Timeout */<br /><br /><br /><br />volatile uint32_t command;<br />volatile uint32_t current_command;<br />volatile uint8_t edge;<br />volatile uint8_t state;<br />volatile uint32_t cycles_counter;<br />volatile uint32_t total_cycles_counter;<br />volatile uint8_t repeat;<br />volatile uint8_t command_bits_counter;<br /><br /><br />/* Rising edge detection */<br />void inline check_rising_edge() {<br />MCUCR |= (1 &lt;&lt; ISC11);<br />MCUCR |= (1 &lt;&lt; ISC10);<br />edge = EDGE_RISING;<br />}<br /><br />/* Falling edge detection */<br />void inline check_falling_edge() {<br />MCUCR |= (1 &lt;&lt; ISC11);<br />MCUCR &amp;= ~(1 &lt;&lt; ISC10);<br />edge = EDGE_FALLING;<br />}<br /><br />void inline toggle_edge() {<br />if (edge == EDGE_FALLING) {<br />check_rising_edge();<br />} else if (edge == EDGE_RISING) {<br />check_falling_edge();<br />}<br />}<br /><br />uint32_t inline get_current_command() {<br />return current_command;<br />}<br /><br /><br />void ir_init();<br />uint8_t ir_check_command(uint32_t command);<br />void ir_reset();<br />void ir_check_timeout();<br /><br />void ir_handle_state_wait_edge_falling();<br />void ir_handle_state_wait_edge_rising();<br />void ir_handle_state_start_edge_falling();<br />void ir_handle_state_start_edge_rising();<br />void ir_handle_state_bits_edge_falling();<br />void ir_handle_state_bits_edge_rising();<br />void ir_handle_state_stop();<br /><br />#endif /* NEC_H_ */[/syntax]<br /><br />iocompat.h<br />[syntax=c]/*<br /> * ----------------------------------------------------------------------------<br /> * &quot;THE BEER-WARE LICENSE&quot; (Revision 42):<br /> * &lt;joerg@FreeBSD.ORG&gt; wrote this file.  As long as you retain this notice you<br /> * can do whatever you want with this stuff. If we meet some day, and you think<br /> * this stuff is worth it, you can buy me a beer in return.        Joerg Wunsch<br /> * ----------------------------------------------------------------------------<br /> *<br /> * IO feature compatibility definitions for various AVRs.<br /> *<br /> * $Id: iocompat.h 2384 2013-05-03 12:38:46Z joerg_wunsch $<br /> */<br /><br />#if !defined(IOCOMPAT_H)<br />#define IOCOMPAT_H 1<br /><br />/*<br /> * Device-specific adjustments:<br /> *<br /> * Supply definitions for the location of the OCR1&#91;A&#93; port/pin, the<br /> * name of the OCR register controlling the PWM, and adjust interrupt<br /> * vector names that differ from the one used in demo.c<br /> * &#91;TIMER1_OVF_vect&#93;.<br /> */<br />#if defined(__AVR_AT90S2313__)<br />#  define OC1 PB3<br />#  define OCR OCR1<br />#  define DDROC DDRB<br />#  define TIMER1_OVF_vect TIMER1_OVF1_vect<br />#elif defined(__AVR_AT90S2333__) || defined(__AVR_AT90S4433__)<br />#  define OC1 PB1<br />#  define DDROC DDRB<br />#  define OCR OCR1<br />#elif defined(__AVR_AT90S4414__) || defined(__AVR_AT90S8515__) || \<br />      defined(__AVR_AT90S4434__) || defined(__AVR_AT90S8535__) || \<br />      defined(__AVR_ATmega163__) || defined(__AVR_ATmega8515__) || \<br />      defined(__AVR_ATmega8535__) || \<br />      defined(__AVR_ATmega164P__) || defined(__AVR_ATmega324P__) || \<br />      defined(__AVR_ATmega644__) || defined(__AVR_ATmega644P__) || \<br />      defined(__AVR_ATmega1284P__)<br />#  define OC1 PD5<br />#  define DDROC DDRD<br />#  define OCR OCR1A<br />#  if !defined(TIMSK)/* new ATmegas */<br />#    define TIMSK TIMSK1<br />#  endif<br />#elif defined(__AVR_ATmega8__) || defined(__AVR_ATmega48__) || \<br />      defined(__AVR_ATmega88__) || defined(__AVR_ATmega168__)<br />#  define OC1 PB1<br />#  define DDROC DDRB<br />#  define OCR OCR1A<br />#  if !defined(TIMSK)/* ATmega48/88/168 */<br />#    define TIMSK TIMSK1<br />#  endif /* !defined(TIMSK) */<br />#elif defined(__AVR_ATtiny2313__)<br />#  define OC1 PB3<br />#  define OCR OCR1A<br />#  define DDROC DDRB<br />#elif defined(__AVR_ATtiny24__) || defined(__AVR_ATtiny44__) || \<br />      defined(__AVR_ATtiny84__)<br />#  define OC1 PA6<br />#  define DDROC DDRA<br />#  if !defined(OCR1A)<br />#    /* work around misspelled name in avr-libc 1.4.&#91;0..1&#93; */<br />#    define OCR OCRA1<br />#  else<br />#    define OCR OCR1A<br />#  endif<br />#  define TIMSK TIMSK1<br />#  define TIMER1_OVF_vect TIM1_OVF_vect /* XML and datasheet mismatch */<br />#elif defined(__AVR_ATtiny25__) || defined(__AVR_ATtiny45__) || \<br />      defined(__AVR_ATtiny85__)<br />/* Timer 1 is only an 8-bit timer on these devices. */<br />#  define OC1 PB1<br />#  define DDROC DDRB<br />#  define OCR OCR1A<br />#  define TCCR1A TCCR1<br />#  define TCCR1B TCCR1<br />#  define TIMER1_OVF_vect TIM1_OVF_vect<br />#  define TIMER1_TOP 255/* only 8-bit PWM possible */<br />#  define TIMER1_PWM_INIT _BV(PWM1A) | _BV(COM1A1)<br />#  define TIMER1_CLOCKSOURCE _BV(CS12) /* use 1/8 prescaler */<br />#elif defined(__AVR_ATtiny26__)<br />/* Rather close to ATtinyX5 but different enough for its own section. */<br />#  define OC1 PB1<br />#  define DDROC DDRB<br />#  define OCR OCR1A<br />#  define TIMER1_OVF_vect TIMER1_OVF1_vect<br />#  define TIMER1_TOP 255/* only 8-bit PWM possible */<br />#  define TIMER1_PWM_INIT _BV(PWM1A) | _BV(COM1A1)<br />#  define TIMER1_CLOCKSOURCE _BV(CS12) /* use 1/8 prescaler */<br />/*<br /> * Without setting OCR1C to TOP, the ATtiny26 does not trigger an<br /> * overflow interrupt in PWM mode.<br /> */<br />#  define TIMER1_SETUP_HOOK() OCR1C = 255<br />#elif defined(__AVR_ATtiny261__) || defined(__AVR_ATtiny461__) || \<br />      defined(__AVR_ATtiny861__)<br />#  define OC1 PB1<br />#  define DDROC DDRB<br />#  define OCR OCR1A<br />#  define TIMER1_PWM_INIT _BV(WGM10) | _BV(PWM1A) | _BV(COM1A1)<br />/*<br /> * While timer 1 could be operated in 10-bit mode on these devices,<br /> * the handling of the 10-bit IO registers is more complicated than<br /> * that of the 16-bit registers of other AVR devices (no combined<br /> * 16-bit IO operations possible), so we restrict this demo to 8-bit<br /> * mode which is pretty standard.<br /> */<br />#  define TIMER1_TOP 255<br />#  define TIMER1_CLOCKSOURCE _BV(CS12) /* use 1/8 prescaler */<br />#elif defined(__AVR_ATmega32__) || defined(__AVR_ATmega16__)<br />#  define OC1 PD5<br />#  define DDROC DDRD<br />#  define OCR OCR1A<br />#elif defined(__AVR_ATmega64__) || defined(__AVR_ATmega128__) || \<br />      defined(__AVR_ATmega165__) || defined(__AVR_ATmega169__) || \<br />      defined(__AVR_ATmega325__) || defined(__AVR_ATmega3250__) || \<br />      defined(__AVR_ATmega645__) || defined(__AVR_ATmega6450__) || \<br />      defined(__AVR_ATmega329__) || defined(__AVR_ATmega3290__) || \<br />      defined(__AVR_ATmega649__) || defined(__AVR_ATmega6490__) || \<br />      defined(__AVR_ATmega640__) || \<br />      defined(__AVR_ATmega1280__) || defined(__AVR_ATmega1281__) || \<br />      defined(__AVR_ATmega2560__) || defined(__AVR_ATmega2561__) || \<br />      defined(__AVR_ATmega32U4__)<br />#  define OC1 PB5<br />#  define DDROC DDRB<br />#  define OCR OCR1A<br />#  if !defined(PB5) /* work around missing bit definition */<br />#    define PB5 5<br />#  endif<br />#  if !defined(TIMSK)/* new ATmegas */<br />#    define TIMSK TIMSK1<br />#  endif<br />#else<br />#  error &quot;Don't know what kind of MCU you are compiling for&quot;<br />#endif<br /><br />/*<br /> * Map register names for older AVRs here.<br /> */<br />#if !defined(COM1A1)<br />#  define COM1A1 COM11<br />#endif<br /><br />#if !defined(WGM10)<br />#  define WGM10 PWM10<br />#  define WGM11 PWM11<br />#endif<br /><br />/*<br /> * Provide defaults for device-specific macros unless overridden<br /> * above.<br /> */<br />#if !defined(TIMER1_TOP)<br />#  define TIMER1_TOP 1023/* 10-bit PWM */<br />#endif<br /><br />#if !defined(TIMER1_PWM_INIT)<br />#  define TIMER1_PWM_INIT _BV(WGM10) | _BV(WGM11) | _BV(COM1A1)<br />#endif<br /><br />#if !defined(TIMER1_CLOCKSOURCE)<br />#  define TIMER1_CLOCKSOURCE _BV(CS10) /* full clock */<br />#endif<br /><br />#endif /* !defined(IOCOMPAT_H) */[/syntax]<br /><br />commands.h<br />[syntax=c]#ifndef COMMANDS_H_<br />#define COMMANDS_H_<br /><br />#define COMMANDS_ON0x00ff02 //dodane dwa sygnaly ktore chce odebrac<br />#define COMMANDS_OFF0x00ff98 // dodane dwa sygnaly ktore chce odebrac<br />#define COMMAND_CH_MINUS0x00ffa25d<br />#define COMMAND_CH0x00ff629d<br />#define COMMAND_CH_PLUS0x00ffe21d<br />#define COMMAND_PREV0x00ff22dd<br />#define COMMAND_NEXT0x00ff02fd<br />#define COMMAND_PLAY_PAUSE0x00ffc23d<br />#define COMMAND_VOL_MINUS0x00ffe01f<br />#define COMMAND_VOL_PLUS0x00ffa857<br />#define COMMAND_EQ0x00ff906f<br />#define COMMAND_00x00ff6897<br />#define COMMAND_100_PLUS0x00ff9867<br />#define COMMAND_200_PLUS0x00ffb04f<br />#define COMMAND_10x00ff30cf<br />#define COMMAND_20x00ff18e7<br />#define COMMAND_30x00ff7a85<br />#define COMMAND_40x00ff10ef<br />#define COMMAND_50x00ff38c7<br />#define COMMAND_60x00ff5aa5<br />#define COMMAND_70x00ff42bd<br />#define COMMAND_80x00ff4ab5<br />#define COMMAND_90x00ff52ad<br /><br />#endif /* COMMANDS_H_ */[/syntax]<br /><a href="https://obrazkiforum.atnel.pl/14621/8368276bcf13ce4ebe6fa01329e765df.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/14621/8368276bcf13ce4ebe6fa01329e765df.png" alt="Obrazek" /></a><br /><br />Edit: dziękuje administracji za wyrozumiałość  <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=14621">katff</a> — 3 sie 2016, o 19:35</p><hr />
]]></content>
</entry>
</feed>