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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2024-01-13T12:06:48+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=24614&amp;mode</id>
<entry>
<author><name><![CDATA[Marhef]]></name></author>
<updated>2024-01-13T12:06:48+01:00</updated>
<published>2024-01-13T12:06:48+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24614&amp;p=237832#p237832</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24614&amp;p=237832#p237832"/>
<title type="html"><![CDATA[Re: Wysyłanie i odbieranie RC5 - podczerwień]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24614&amp;p=237832#p237832"><![CDATA[
Jak masz to podłączone?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=12752">Marhef</a> — 13 sty 2024, o 12:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2024-01-12T20:47:10+01:00</updated>
<published>2024-01-12T20:47:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24614&amp;p=237831#p237831</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24614&amp;p=237831#p237831"/>
<title type="html"><![CDATA[Re: Wysyłanie i odbieranie RC5 - podczerwień]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24614&amp;p=237831#p237831"><![CDATA[
<div class="quotetitle">Johnnny94 napisał(a):</div><div class="quotecontent"><br />Tutaj przebieg z oscyloskopu na odbiorniku podczerwieni. Taki sygnał wchodzi na procesor.<br /></div><br />No toż przecież widać jak byk że to nie jest kodowanie RC5<br /><br />Poza tym proponuję podglądać to najtańszym analizatorem stanów logicznych za 30-40zł z allegro i oprogramowaniem saleae - będzie widać tysiąc razy lepiej i nawet będzie można zdaje się dekoder w nim sobie włączyć. Oscyloskop do takich zabaw to przeżytek<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 12 sty 2024, o 20:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Johnnny94]]></name></author>
<updated>2024-01-12T14:19:16+01:00</updated>
<published>2024-01-12T14:19:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=24614&amp;p=237830#p237830</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=24614&amp;p=237830#p237830"/>
<title type="html"><![CDATA[Wysyłanie i odbieranie RC5 - podczerwień]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=24614&amp;p=237830#p237830"><![CDATA[
Witam,<br />zabrałem się za próby z pilotem podczerwieni i wysyłaniem sygnałów RC5 z pilota do odbiornika. Pilot posiada procesor ATmega48P (kwarc wewnętrzny 8MHz), odbiornik podłączony jest do ATmega168P (kwarc zewnętrzny 20MHz).<br />Z Bluebooka pobrałem prawie cały gotowy program do pilota.<br />Wprowadziłem kilka zmian w programie i teraz prezentuje się następująco:<br />[syntax=c]#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 />uint8_t impuls(uint8_t impuls);<br /><br />#define PRZYCISK1 (1&lt;&lt;PC3)<br />#define PRZYCISK1_DOWN (PINC &amp; PRZYCISK1)<br /><br />#define SYGNAL_OUT (1&lt;&lt;PD3)<br />#define SYGNAL_OUT_OFF PORTD |= SYGNAL_OUT<br />#define SYGNAL_OUT_ON PORTD &amp;= ~SYGNAL_OUT<br />#define SYGNAL_OUT_TOG PORTD ^= SYGNAL_OUT<br /><br />uint8_t impuls(uint8_t impuls);<br /><br />#define _ADDRESS_RC5 0// TV = 0<br /><br />#define _CMD1_RC5 1<br /><br />uint8_t address;<br />uint8_t command;<br />uint8_t toggle_bit;<br /><br />volatile uint8_t key_lock;<br /><br /><br />void czekaj_us(uint16_t usekundy) {<br />OCR1A = usekundy;<br />TIFR1 |= (1&lt;&lt;OCF1A);<br />TCCR1B |= (1&lt;&lt;CS11);<br />while ( !( TIFR1 &amp; (1&lt;&lt;OCF1A) ) ) {};<br />TCCR1B &amp;= ~(1&lt;&lt;CS11);<br />}<br /><br />void send_rc5_one() {<br />czekaj_us(889);<br />SYGNAL_OUT_ON;<br />czekaj_us(889);<br />SYGNAL_OUT_OFF;<br />}<br /><br />void send_rc5_zero() {<br />SYGNAL_OUT_ON;<br />czekaj_us(889);<br />SYGNAL_OUT_OFF;<br />czekaj_us(889);<br />}<br /><br />void send_rc5(uint8_t adr, uint8_t cmd, uint8_t tog) {<br />uint16_t data = 0;<br />uint8_t i=15;<br /><br />data |= ( (1&lt;&lt;15)|(1&lt;&lt;14)|(tog&lt;&lt;13)|(adr&lt;&lt;8)|(cmd&lt;&lt;2) );<br /><br />do {<br />if ( !(data &amp; ( 1 &lt;&lt; i )) ) send_rc5_zero();<br />else send_rc5_one();<br />} while(--i&gt;1);<br />}<br /><br /><br />void przycisk_plus (void)<br />{<br />if( !key_lock &amp;&amp; !(PRZYCISK1_DOWN))//REAKCJA NA ZBOCZE OPADAJACE<br />{<br />if (impuls(PRZYCISK1_DOWN))<br />{<br />key_lock=1;<br />}<br />}<br />else if( key_lock &amp;&amp; (PRZYCISK1_DOWN))//REAKCJA NA ZBOCZE NARASTAJĄCE<br />{<br />if( !++key_lock )<br />{<br />if(!impuls(PRZYCISK1_DOWN))<br />{<br />toggle_bit ^= (1&lt;&lt;0);<br />command = _CMD2_RC5;<br />address = _ADDRESS_RC5;<br />send_rc5(address, command, toggle_bit);<br /><br />_delay_ms(115);// gap<br />}<br /><br />}<br />}<br />}<br /><br /><br /><br />int main(void)<br />{<br />PORTC |= PRZYCISK1;<br /><br />DDRD|=SYGNAL_OUT;<br />SYGNAL_OUT_OFF;<br /><br />OCR0A =  110;<br />TCCR0A |= (1&lt;&lt;WGM01);// tryb CTC<br />TCCR0B |= (1&lt;&lt;CS00);// preskaler = 1<br /><br />TCCR1B |= (1&lt;&lt;WGM12);<br /><br />sei();<br /><br />while(1)<br />{<br />przycisk_plus();<br />}<br />}[/syntax]<br /><br />Po podłączeniu oscyloskopu do sygnału na odbiorniku podczerwieni mam 5V, natomiast w momencie podania sygnału z pilota pojawia się sygnał (prawdopodobnie taki jak powinien być). Pojawia się 13 razy spadek z 5V do 0V z częstotliwością ok 36kHz.<br /><br /><br />Do odbierania sygnału wykorzystałem program z Bluebooka (RC5_decode). Niestety nie jestem w stanie odebrać sygnału.<br />W pliku ir_decode.h zmieniłem:<br />[syntax=c]#define IR_PORT B<br />#define IR_PIN 0<br />#define IR_IN (1&lt;&lt;IR_PIN)<br /><br />#define TIMER1_PRESCALER 1[/syntax]<br /><br />W pliku ir_decode.c zmieniłem:<br />[syntax=c]TIMSK1 |= (1&lt;&lt;ICIE1);        // Przerwanie od ICP[/syntax]<br /><br />W moim pliku main.c kod wygląda następująco (usunąłem fragmenty odnośnie wyświetlania liczby) :<br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/eeprom.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;stdio.h&gt;<br />#include &lt;string.h&gt;<br />#include &lt;stdlib.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />#include &quot;ir_decode.h&quot;<br />#include &quot;makrau.h&quot;<br /><br />volatile uint8_t liczba;<br /><br />int main(void)<br />{<br />ir_init();/* inicjalizacja dekodowania IR */<br /><br />sei();<br /><br />while(1)<br />{<br />if(Ir_key_press_flag) {/* jeśli odebrano prawidłowe kody z pilota */<br /><br /><br />if( address==0 &amp;&amp; command==1 ) {<br />liczba++;<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 />}[/syntax]<br />Po każdym wciśnięciu przycisku na pilocie powinna zmieniać mi  się wartość &quot;liczba&quot; o 1 w górę. Pominięty fragment do wyświetlania liczby działa na pewno poprawnie, wyświetla mi każdą liczbę jaką sobie wpiszę.<br />W którym momencie popełniam błąd? Wydaje mi się, że źle dokonuje odbioru sygnału, natomiast nie do końca rozumiem gdzie popełniam błąd. Proszę o nakierowanie mnie na rozwiązanie problemu.<br />Z góry dziękuję za wszelkie podpowiedzi.<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 20 minutach ]</span></strong><br /><br />Tutaj przebieg z oscyloskopu na odbiorniku podczerwieni. Taki sygnał wchodzi na procesor.<br /><a href="https://obrazkiforum.atnel.pl/20830/a010c40748785f4b9765fee4ee83c080.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/20830/a010c40748785f4b9765fee4ee83c080.jpg" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=20830">Johnnny94</a> — 12 sty 2024, o 14:19</p><hr />
]]></content>
</entry>
</feed>