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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-12-02T16:37:36+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=13735&amp;mode</id>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2015-12-02T16:37:36+01:00</updated>
<published>2015-12-02T16:37:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146902#p146902</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146902#p146902"/>
<title type="html"><![CDATA[Re: Pilot rc5 problemy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146902#p146902"><![CDATA[
Witam <br />Jest jeszcze sprawa podłączenia tranzystora - w Twoim układzie wpięty jest jako wtórnik emiterowy.<br />Chociaż może nie jest to kardynalny błąd, nie mniej powinien być albo zastosowany tranzystor NPN - emiter do GND kolektor na diody, bądź PNP - emiter Vcc kolektor na diody.<br />Z tym podpinaniem czegokolwiek do nieużywanych nóżek to nonsens; to nie jest układ analogowy którego trzeba jakoś odkłócić - masz gdzieś błąd w połączeniach i stąd te cyrki.<br />Najpierw prawidłowo podłącz tranzystor.<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 2 gru 2015, o 16:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pawelszel1993]]></name></author>
<updated>2015-12-02T03:26:04+01:00</updated>
<published>2015-12-02T03:26:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146884#p146884</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146884#p146884"/>
<title type="html"><![CDATA[Re: Pilot rc5 problemy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146884#p146884"><![CDATA[
już rozwiązałem mój problem, podpiąłem 6 klawiszy pod porty PB0, PB1, PB2, PB4, PB5, PB6, wypiąłem kwarc a zamiast trzymać koncówke kabelka z portu PB4 (MISO) podpiąłem kondensator 100nF pod mase i pod pb4. Nie wiem na co to wpłyneło, ale pilot odrazu działa <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" />. Tylko jeszcze pod PB7 nie chce działać.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9508">pawelszel1993</a> — 2 gru 2015, o 03:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pawelszel1993]]></name></author>
<updated>2015-12-02T01:53:03+01:00</updated>
<published>2015-12-02T01:53:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146883#p146883</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146883#p146883"/>
<title type="html"><![CDATA[Re: Pilot rc5 problemy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146883#p146883"><![CDATA[
kurcze, ale gdy nie używam tego kwarcu i kondensatorów do niego, a klawisze przepiąłem na porty C, a co za tym idzie zmieniłem kod. Pilot działa jeszcze słabiej (prawie wcale) niz wtedy, wewnętrzny oscylator ustawiony na 8Mhz.<br /><a href="https://obrazkiforum.atnel.pl/9508/a27230da2064da511b079dcc61387e50.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/9508/a27230da2064da511b079dcc61387e50.png" alt="Obrazek" /></a><br /><br />[syntax=c]#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/sleep.h&gt;<br />#include &lt;inttypes.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />//definicja adeesu emitowanego przez pilot IR<br />#define _ADDRESS_RC5 0;<br /><br />// PRZYDZIAŁ KODÓW DO KLAWISZY 1-5  (command)<br />#define _CMD1_RC5 1<br />#define _CMD2_RC5 2<br />#define _CMD3_RC5 3<br />#define _CMD4_RC5 4<br />#define _CMD5_RC5 5<br />#define _CMD6_RC5 6<br /><br />// definicja dla obslugi diody led<br /><br />#define LED_PORT PORTB<br />#define LED_PIN PINB<br />#define LED_DDR DDRB<br />#define LED_PIN_NR 3<br />#define LED (1&lt;&lt;LED_PIN_NR)<br /><br />#define LED_OFF  PORTB |= LED<br />#define LED (1&lt;&lt;LED_PIN_NR)<br /><br />// dla tranzystora PNP<br />#define LED_OFF  PORTB  |=  LED<br />#define LED_ON  PORTB  &amp;=  ~LED<br /><br />// dla tranzystora NPN<br />//#define LED_ON  PORTB  |=  LED<br />//#define LED_OFF PORTB  &amp;=  ~LED<br /><br /><br />// definicje klawiszy<br />#define K_PORT PORTC<br />#define K_PIN PINC<br />#define K_DDR DDRC<br /><br />#define KEY1 (1&lt;&lt;PC0)<br />#define KEY2 (1&lt;&lt;PC1)<br />#define KEY3 (1&lt;&lt;PC2)<br />#define KEY4 (1&lt;&lt;PC3)<br />#define KEY5 (1&lt;&lt;PC4)<br />#define KEY6 (1&lt;&lt;PC5)<br /><br />#define KEYS_MASK (KEY1|KEY2|KEY3|KEY4|KEY5|KEY6)<br /><br />uint8_t address;<br />uint8_t command;<br /><br />/**************** MAIN **********************/<br />int main(void) {<br /><br />//PORTB = 0xFF;<br />//PORTC = 0xFF;<br />//PORTD = 0xFF;<br /><br /> // ****** DIODA LED i IR<br /> // ustawienie PORTB.3 (OC2) jako wyjście<br /> LED_DDR  |=  (LED);<br /> LED_PORT |= (LED); // dla tranzystora PNP<br /><br /> // LED_PORT &amp;= ~(LED); // dla tranzystora NPN<br /><br /> // ******* KLAWISZE<br /> // ustawienie PORTD.2 , 3 , 4 i 5 jako wyjścia<br /> K_DDR  |=  (KEY1|KEY2|KEY3|KEY4|KEY5|KEY6);<br /> // ustawienie stanu niskiego<br /> K_PORT  &amp;=  ~(KEY1|KEY2|KEY3|KEY4|KEY5|KEY6);<br /><br /> // kontrolne zapalenia diody LED na 255ms po włączeniu zasilania (włożeniu baterii do pilota)<br /> LED_ON;<br /> _delay_ms(255);<br /> LED_OFF;<br /><br /> //*******************<br /> OCR2 = 110;<br /> //USTAWIENIA TIMERA 2 W TRYB = 2 - CTC -COMPARE<br /><br /> TCCR2 |= (1&lt;&lt;WGM21); // TRYB CTC<br /> TCCR2 |= (1&lt;&lt;CS20); // PRESKALER = 1<br /><br /><br /> // DODANIE TIMERA1 SLUZY DO ODMIERZANIA OPOZNIEN<br /> TCCR1B |= (1&lt;&lt;WGM12);<br /><br /> // wyłączenie komparatora analogowego<br /> // konieczne ze względu na maksymalne obniżenie poboru prądu<br /> //ACSR |= (1&lt;&lt;ACD);<br /><br /> // Turn off WDT<br /> //WDTCR = 0x00;<br /><br /> // ustawienie trybu POWER-DOWN<br /> MCUCR |= ((1&lt;&lt;SM0)|(1&lt;&lt;SM1));<br /><br /> // ustawienie pinu PORTD.3 (INT0) jako wejście<br /> DDRD &amp;= ~(1&lt;&lt;PD2);<br /> // podciągnięcie do 1<br /> PORTD |= (1&lt;&lt;PD2);<br /> // zezwolenie na przerwania INT0<br /> GICR |= (1&lt;&lt;INT0);<br /> // skasowanie flagi wystąpienia przerwania INT0<br /> GIFR |= (1&lt;&lt;INTF0);<br /><br /> // globalne zezwolenie na przerwania<br /> sei();<br /><br /> while (1) {<br /> // wprowadzenie procesora w tryb POWER-DOWN<br /> //sleep_mode();<br /> }<br />}<br /><br />//------------------------------------------------- RC5 - START<br />// dokładna pętla opóźniająca = wielokrotności 1us<br />// w oparciu o Timer1, taktowanie 8MHz, preskaler = 8<br />void czekaj_us(uint16_t usekundy) {<br /> OCR1A = usekundy;<br /> TIFR |= (1&lt;&lt;OCF1A);<br /> TCCR1B |= (1&lt;&lt;CS11);<br /> while ( !( TIFR &amp; (1&lt;&lt;OCF1A) ) ) {};<br /> TCCR1B &amp;= ~(1&lt;&lt;CS11);<br />}<br />// przesłanie bitu o wartości 1<br />void send_rc5_one() {<br /> czekaj_us(889);<br /> TCCR2 |= (1&lt;&lt;COM20);<br /> czekaj_us(889);<br /> TCCR2 &amp;= ~(1&lt;&lt;COM20);<br />}<br />// przesłanie bitu o wartości 0<br />void send_rc5_zero() {<br /> TCCR2 |= (1&lt;&lt;COM20);<br /> czekaj_us(889);<br /> TCCR2 &amp;= ~(1&lt;&lt;COM20);<br /> czekaj_us(889);<br />}<br /><br />// przesłanie kompletnej ramki RC5<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 /> // Musimy uformować ramkę RC5<br /> // w tym celu przesuwamy bity do wysłania w lewą stronę<br /> data |= ( (1&lt;&lt;15)|(1&lt;&lt;14)|(tog&lt;&lt;13)|(adr&lt;&lt;8)|(cmd&lt;&lt;2) );<br /> /* data = 0bssTaaaaaccccccxx<br />  *       ||||adr||cmd |<br />  *    |||<br />  *    ||+-- bit TOGGLE<br />  * ||<br />  * ++--- 2 bity Startu<br /> */<br /><br /> // wysyłamy kolejno 14 bitów<br /> // 2-bity startu, 1-bit Toggle, 5-bitów adresu, 6-bitów komendy<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 />//------------------------------------------------- RC5 - END<br /><br /><br />//*************** PRZERWANIE INT0 ***************************<br />ISR(INT0_vect) {<br /><br /> uint8_t keys;<br /> static uint8_t toggle_bit;<br /><br /> // tylko na czas przerwania INT0 - przestawiony zostaje<br /> // kierunek portów klawiszy. Zostają ustawione jako wejścia<br /> // natomiast pin PORTD.2 (INT0) jako wyjście ze stanem niskim<br /> // dzięki temu działa obsługa klawiszy<br /><br /> // ustawienie PORTD.2 , 3 , 4 i 5 jako wejścia<br /> K_DDR  &amp;=  ~(KEY1|KEY2|KEY3|KEY4|KEY5|KEY6);<br /> // podciągnięcie wejść do 1<br /> K_PORT  |=  (KEY1|KEY2|KEY3|KEY4|KEY5|KEY6);<br /><br /> // przestawienie PORTD.2 jako wyjście<br /> DDRD |= (1&lt;&lt;PD2);<br /> // ustawienie stanu niskiego - do obsługi klawiszy<br /> PORTD &amp;= ~(1&lt;&lt;PD2);<br /><br /> keys = PINC;<br /> if( (keys &amp; KEYS_MASK) != KEYS_MASK ) { // sprawdzamy czy wciśnięty jakikolwiek klawisz<br /> _delay_ms(50); // eliminacja drgań styków<br /> keys = PINC;<br /> if( (keys &amp; KEYS_MASK) != KEYS_MASK ) { // sprawdzamy czy wciśnięty jakikolwiek klawisz<br /><br /> // przed wysłaniem kodu jakiegokolwiek klawisza zmiana<br /> // stanu bitu toggle<br /> toggle_bit ^= (1&lt;&lt;0);<br /><br /> do {<br /><br /> if( !(keys &amp; KEY1) ) command = _CMD1_RC5;<br /> else<br /> if( !(keys &amp; KEY2) ) command = _CMD2_RC5;<br /> else<br /> if( !(keys &amp; KEY3) ) command = _CMD3_RC5;<br /> else<br /> if( !(keys &amp; KEY4) ) command = _CMD4_RC5;<br /> else<br /> if( !(keys &amp; KEY5) ) command = _CMD5_RC5;<br /> else<br /> if( !(keys &amp; KEY6) ) command = _CMD6_RC5;<br /><br /> address = _ADDRESS_RC5 0;<br /> send_rc5(address, command, toggle_bit);<br /><br /> _delay_ms(115); // gap<br /><br /> keys = PINC;<br /><br /> } while ( (keys &amp; KEYS_MASK) != KEYS_MASK ); /* powtarzaj gdy wciśnięty */<br /> }<br /> }<br /><br /> // przywracamy ustawienia<br /><br /> // ustawienie pinu PORTD.2 (INT0) jako wejście<br /> DDRD &amp;= ~(1&lt;&lt;PD2);<br /> // podciągnięcie do 1<br /> PORTD |= (1&lt;&lt;PD2);<br /><br /> // ******* KLAWISZE<br /> // ustawienie PORTD.2 , 3 , 4 i 5 jako wyjścia<br /> K_DDR  |=  (KEY1|KEY2|KEY3|KEY4|KEY5|KEY6);<br /> // ustawienie stanu niskiego<br /> K_PORT  &amp;=  ~(KEY1|KEY2|KEY3|KEY4|KEY5|KEY6);<br /><br /> GIFR |= (1&lt;&lt;INTF0);<br /><br />}[/syntax]<br /><br />może OCR2 jest źle dobrane?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9508">pawelszel1993</a> — 2 gru 2015, o 01:53</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-12-01T23:05:10+01:00</updated>
<published>2015-12-01T23:05:10+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146870#p146870</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146870#p146870"/>
<title type="html"><![CDATA[Re: Pilot rc5 problemy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146870#p146870"><![CDATA[
<div class="quotetitle">zoom napisał(a):</div><div class="quotecontent"><br />Jarosław Doliński w swojej książce &quot;Mikrokontrolery AVR w praktyce&quot; podaje 24...33pF<br /></div><br />Bo to nie jest jakiś tam wielki błąd - w sumie pojemność zależy od parametrów też kwarca - ale ... ale niestety po prostu przy 33 pF czasem procek w ogóle nie rusza .... i teraz pomyśl sobie ile czasu ktoś (szczególnie początkujący) kto zrobił sobie pierwszą płytkę SMD z prockiem i z tymi kondkami a tu ZONK - przestawia na kwarca i procek nie żywy<br /><br />zwykle każdy najpierw wylutuje proca i wlutuje drugiego, zmieni kwarca ... szuka błędów w ścieżkach , mijają godziny a nawet dni - przy okazji też włosy <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... .... czasem nawet robi nową płytkę - żeby potem odkryć - O MATKO! .... bez kondesnatorów działa!!! a z kondkami nie - później da 22 pF i okazuje się że śmiga jak ta lala a kupa czasu straconego .... Uwierz mi - mnóstwo już takich postów widziałem <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> dlatego przypominam o tym zawsze<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 1 gru 2015, o 23:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zoom]]></name></author>
<updated>2015-12-01T21:55:06+01:00</updated>
<published>2015-12-01T21:55:06+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146857#p146857</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146857#p146857"/>
<title type="html"><![CDATA[Re: Pilot rc5 problemy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146857#p146857"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br /><div class="quotetitle">zoom napisał(a):</div><div class="quotecontent">33p do każdej nóżki i do masy.<br /></div><br />Na pewno nie 33 pF - maksymalnie 22 pF jak już</div><br />Tak zapamiętałem jeszcze z artykułów Pana Piotra Góreckiego w EdW, dlatego tak pewnie napisałem. Tak mi się utrwaliło, tak zawsze stosowałem. Nie wiedziałem, że to błąd.<br />Jarosław Doliński w swojej książce &quot;Mikrokontrolery AVR w praktyce&quot; podaje 24...33pF. Stąd tak mi to utkwiło. I faktycznie dopiero teraz patrzę Rafał Baranowski w &quot;Mikrokontrolery AVR ATmega w praktyce&quot; pisze 11...22pF. No i w nocie też jest 12...22pF.<br />Ok, to już zapamiętuję poprawną wartość!<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=685">zoom</a> — 1 gru 2015, o 21:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2015-12-01T21:55:08+01:00</updated>
<published>2015-12-01T21:51:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146854#p146854</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146854#p146854"/>
<title type="html"><![CDATA[Re: Pilot rc5 problemy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146854#p146854"><![CDATA[
Witam<br />Nie wiadomo na ile schemat odpowiada faktycznemu podłączeniu, ale oprócz w.w błędnie podłączone jest napięcie na: Vref zamiast na AVcc.<br />Natomiast to:<br /> <div class="quotetitle">pawelszel1993 napisał(a):</div><div class="quotecontent"><br />Wbijałem go nawet w pomidora i przykładałem do metalowych elementów, co powodowało że pilot działał,<br /></div><br />zalatuje MacGyver'em  <img src="https://forum.atnel.pl/images/smilies/icon_razz.gif" alt=":P" title="Pokazuje język" /> <br /><br />edit: nie zauważyłem że kol.<strong>jacekk232</strong> już opisał zasilanie tylko nie wspomniał o AVcc, ale ten pomidor...<br /><br />Pozdr.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 1 gru 2015, o 21:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-12-01T21:30:52+01:00</updated>
<published>2015-12-01T21:30:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146850#p146850</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146850#p146850"/>
<title type="html"><![CDATA[Re: Pilot rc5 problemy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146850#p146850"><![CDATA[
<div class="quotetitle">zoom napisał(a):</div><div class="quotecontent"><br />33p do każdej nóżki i do masy.<br /></div><br />Na pewno nie 33 pF - maksymalnie 22 pF jak już<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 1 gru 2015, o 21:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zoom]]></name></author>
<updated>2015-12-01T21:12:27+01:00</updated>
<published>2015-12-01T21:12:27+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146848#p146848</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146848#p146848"/>
<title type="html"><![CDATA[Re: Pilot rc5 problemy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146848#p146848"><![CDATA[
Do kwarcu powinieneś mieć kondensatory podpięte. 33p do każdej nóżki i do masy. jacekk232 dobrze prawi, nic więcej nie możesz mieć do pinu z kwarcem podłączone. Poprostu najlepiej kwarc wywal i na wewnętrznym oscylatorze działaj, wtedy może reszta zostać jak jest. Jeśli w fusach nie grzebałeś, to i tak wewnętrzny oscylator tylko działa.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=685">zoom</a> — 1 gru 2015, o 21:12</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jacekk232]]></name></author>
<updated>2015-12-01T20:38:58+01:00</updated>
<published>2015-12-01T20:38:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146840#p146840</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146840#p146840"/>
<title type="html"><![CDATA[Re: Pilot rc5 problemy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146840#p146840"><![CDATA[
A dlaczego S5 podłączyłeś pod PB6. Przecież pod ten pin masz podłączony kwarc.<br /><br />I odłącz pin AREF od Vcc.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=204">jacekk232</a> — 1 gru 2015, o 20:38</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pawelszel1993]]></name></author>
<updated>2015-12-01T20:19:47+01:00</updated>
<published>2015-12-01T20:19:47+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146834#p146834</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146834#p146834"/>
<title type="html"><![CDATA[Re: Pilot rc5 problemy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146834#p146834"><![CDATA[
Już dodałem obrazek jak należy. Co do kodu to próbowałem jeszcze ustawić klawisze na portach C, ale wtedy pilot prawie wgł nie działał od czasu do czasu zadziałał jakiś klawisz, ale to na pewno nie jest pożądany efekt.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9508">pawelszel1993</a> — 1 gru 2015, o 20:19</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[zoom]]></name></author>
<updated>2015-12-01T18:04:26+01:00</updated>
<published>2015-12-01T18:04:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146812#p146812</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146812#p146812"/>
<title type="html"><![CDATA[Re: Pilot rc5 problemy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146812#p146812"><![CDATA[
Chłopie, wrzuć obrazek poprzez różowy, duży przycisk dodaj obrazek i cały kod, który się wygeneruje wklej w treść postu.<br />Po co nam dajesz link do pliku na swoim kompie?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=685">zoom</a> — 1 gru 2015, o 18:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pawelszel1993]]></name></author>
<updated>2015-12-01T17:56:40+01:00</updated>
<published>2015-12-01T17:56:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146808#p146808</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146808#p146808"/>
<title type="html"><![CDATA[Re: Pilot rc5 problemy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146808#p146808"><![CDATA[
file:///C:/Users/Pawe%C5%82/Desktop/PILOT.png<br />Link do schematu, nie rozumiem jak reset który został prawidłowo podciągnięty rezystorem 10 Kohm do Vcc może &quot;fruwać&quot;, może problem tkwi w czymś innym?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9508">pawelszel1993</a> — 1 gru 2015, o 17:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[ciamciak]]></name></author>
<updated>2015-12-01T17:33:42+01:00</updated>
<published>2015-12-01T17:33:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146806#p146806</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146806#p146806"/>
<title type="html"><![CDATA[Re: Pilot rc5 problemy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146806#p146806"><![CDATA[
Ja bym raczej obstawiał że reset Ci fruwa bo niema pull-Up-a, ale schematu nie widać.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1254">ciamciak</a> — 1 gru 2015, o 17:33</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[pawelszel1993]]></name></author>
<updated>2015-12-01T20:21:04+01:00</updated>
<published>2015-12-01T16:12:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146799#p146799</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146799#p146799"/>
<title type="html"><![CDATA[Pilot rc5 problemy]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13735&amp;p=146799#p146799"><![CDATA[
Witam wszystkich<br />Parcuje nad projektem zdalnego sterowania, wykożystując do tego transmisje danych w podczerwieni. W zasadzie udało mi się uruchomić pilot oraz odbiornik, aczkolwiek nie działa to do końca tak jak powinno. Przerobiłem program z niebieskiej ksiazki, który znajdował sie w projekcie pilota rc5. Zastapiłem attetiny 2312 atmega 8. Złożyłem pilot na płytce stykowej i na 5 kalwiszy działa mi 4. Po wypieciu programatora pilot praktycznie nie działa (nie zasilam go z programatora), a metodą prób i błędów doszedłem do ciekawego zjawiska które w nim występuje. Pilot dziala wtedy gdy kabelek programatora MISO nie został odpięty, a programator jest wyłączony. Nastepnie odłaczyłem programator w pin MISO (PB4) wpiąłem kabelek którego koniec złapałem w palce - 4 klawisze działały. Wbijałem go nawet w pomidora i przykładałem do metalowych elementów, co powodowało że pilot działał, chociaż nie do konca tak jak powinien bo na 5 klawiszy działy mi 4. <br /><a href="https://obrazkiforum.atnel.pl/9508/db37e4556413f3f9f9ff670864abd62f.png"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/9508/db37e4556413f3f9f9ff670864abd62f.png" alt="Obrazek" /></a><br /><br />kod : [syntax=c]/*<br /> * main.c<br /> *<br /> *  Created on: 11 lis 2015<br /> *     <br /> */<br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;avr/sleep.h&gt;<br />#include &lt;inttypes.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />//definicja adeesu emitowanego przez pilot IR<br />#define _ADDRESS_RC5 0;<br /><br />// PRZYDZIAŁ KODÓW DO KLAWISZY 1-5  (command)<br />#define _CMD1_RC5 1<br />#define _CMD2_RC5 2<br />#define _CMD3_RC5 3<br />#define _CMD4_RC5 4<br />#define _CMD5_RC5 5<br /><br />// definicja dla obslugi diody led<br /><br />#define LED_PORT PORTB<br />#define LED_PIN PINB<br />#define LED_DDR DDRB<br />#define LED_PIN_NR 3<br />#define LED (1&lt;&lt;LED_PIN_NR)<br /><br />#define LED_OFF  PORTB |= LED<br />#define LED (1&lt;&lt;LED_PIN_NR)<br /><br />// dla tranzystora PNP<br />#define LED_OFF  PORTB  |=  LED<br />#define LED_ON  PORTB  &amp;=  ~LED<br /><br />// dla tranzystora NPN<br />//#define LED_ON  PORTB  |=  LED<br />//#define LED_OFF PORTB  &amp;=  ~LED<br /><br /><br />// definicje klawiszy<br />#define K_PORT PORTB<br />#define K_PIN PINB<br />#define K_DDR DDRB<br /><br />#define KEY1 (1&lt;&lt;PB0)<br />#define KEY2 (1&lt;&lt;PB1)<br />#define KEY3 (1&lt;&lt;PB2)<br />#define KEY4 (1&lt;&lt;PB6)<br />#define KEY5 (1&lt;&lt;PB4)<br /><br />#define KEYS_MASK (KEY1|KEY2|KEY3|KEY4|KEY5)<br /><br />uint8_t address;<br />uint8_t command;<br /><br />/**************** MAIN **********************/<br />int main(void) {<br /><br /><br /> // ****** DIODA LED i IR<br /> // ustawienie PORTB.3 (OC2) jako wyjście<br /> LED_DDR  |=  (LED);<br /> LED_PORT |= (LED); // dla tranzystora PNP<br /><br /> // LED_PORT &amp;= ~(LED); // dla tranzystora NPN<br /><br /> // ******* KLAWISZE<br /> // ustawienie PORTD.2 , 3 , 4 i 5 jako wyjścia<br /> K_DDR  |=  (KEY1|KEY2|KEY3|KEY4|KEY5);<br /> // ustawienie stanu niskiego<br /> K_PORT  &amp;=  ~(KEY1|KEY2|KEY3|KEY4|KEY5);<br /><br /> // kontrolne zapalenia diody LED na 255ms po włączeniu zasilania (włożeniu baterii do pilota)<br /> LED_ON;<br /> _delay_ms(255);<br /> LED_OFF;<br /><br /> //*******************<br /> OCR2 = 110;<br /> //USTAWIENIA TIMERA 2 W TRYB = 2 - CTC -COMPARE<br /><br /> TCCR2 |= (1&lt;&lt;WGM21); // TRYB CTC<br /> TCCR2 |= (1&lt;&lt;CS20); // PRESKALER = 1<br /><br /><br /> // DODANIE TIMERA1 SLUZY DO ODMIERZANIA OPOZNIEN<br /> TCCR1B |= (1&lt;&lt;WGM12);<br /><br /> // wyłączenie komparatora analogowego<br /> // konieczne ze względu na maksymalne obniżenie poboru prądu<br /> //ACSR |= (1&lt;&lt;ACD);<br /><br /> // Turn off WDT<br /> //WDTCR = 0x00;<br /><br /> // ustawienie trybu POWER-DOWN<br /> MCUCR |= ((1&lt;&lt;SM0)|(1&lt;&lt;SM1));<br /><br /> // ustawienie pinu PORTD.3 (INT0) jako wejście<br /> DDRD &amp;= ~(1&lt;&lt;PD2);<br /> // podciągnięcie do 1<br /> PORTD |= (1&lt;&lt;PD2);<br /> // zezwolenie na przerwania INT0<br /> GICR |= (1&lt;&lt;INT0);<br /> // skasowanie flagi wystąpienia przerwania INT0<br /> GIFR |= (1&lt;&lt;INTF0);<br /><br /> // globalne zezwolenie na przerwania<br /> sei();<br /><br /> while (1) {<br /> // wprowadzenie procesora w tryb POWER-DOWN<br /> //sleep_mode();<br /> }<br />}<br /><br />//------------------------------------------------- RC5 - START<br />// dokładna pętla opóźniająca = wielokrotności 1us<br />// w oparciu o Timer1, taktowanie 8MHz, preskaler = 8<br />void czekaj_us(uint16_t usekundy) {<br /> OCR1A = usekundy;<br /> TIFR |= (1&lt;&lt;OCF1A);<br /> TCCR1B |= (1&lt;&lt;CS11);<br /> while ( !( TIFR &amp; (1&lt;&lt;OCF1A) ) ) {};<br /> TCCR1B &amp;= ~(1&lt;&lt;CS11);<br />}<br />// przesłanie bitu o wartości 1<br />void send_rc5_one() {<br /> czekaj_us(889);<br /> TCCR2 |= (1&lt;&lt;COM20);<br /> czekaj_us(889);<br /> TCCR2 &amp;= ~(1&lt;&lt;COM20);<br />}<br />// przesłanie bitu o wartości 0<br />void send_rc5_zero() {<br /> TCCR2 |= (1&lt;&lt;COM20);<br /> czekaj_us(889);<br /> TCCR2 &amp;= ~(1&lt;&lt;COM20);<br /> czekaj_us(889);<br />}<br /><br />// przesłanie kompletnej ramki RC5<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 /> // Musimy uformować ramkę RC5<br /> // w tym celu przesuwamy bity do wysłania w lewą stronę<br /> data |= ( (1&lt;&lt;15)|(1&lt;&lt;14)|(tog&lt;&lt;13)|(adr&lt;&lt;8)|(cmd&lt;&lt;2) );<br /> /* data = 0bssTaaaaaccccccxx<br />  *       ||||adr||cmd |<br />  *    |||<br />  *    ||+-- bit TOGGLE<br />  * ||<br />  * ++--- 2 bity Startu<br /> */<br /><br /> // wysyłamy kolejno 14 bitów<br /> // 2-bity startu, 1-bit Toggle, 5-bitów adresu, 6-bitów komendy<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 />//------------------------------------------------- RC5 - END<br /><br /><br />//*************** PRZERWANIE INT0 ***************************<br />ISR(INT0_vect) {<br /><br /> uint8_t keys;<br /> static uint8_t toggle_bit;<br /><br /> // tylko na czas przerwania INT0 - przestawiony zostaje<br /> // kierunek portów klawiszy. Zostają ustawione jako wejścia<br /> // natomiast pin PORTD.2 (INT0) jako wyjście ze stanem niskim<br /> // dzięki temu działa obsługa klawiszy<br /><br /> // ustawienie PORTD.2 , 3 , 4 i 5 jako wejścia<br /> K_DDR  &amp;=  ~(KEY1|KEY2|KEY3|KEY4|KEY5);<br /> // podciągnięcie wejść do 1<br /> K_PORT  |=  (KEY1|KEY2|KEY3|KEY4|KEY5);<br /><br /> // przestawienie PORTD.2 jako wyjście<br /> DDRD |= (1&lt;&lt;PD2);<br /> // ustawienie stanu niskiego - do obsługi klawiszy<br /> PORTD &amp;= ~(1&lt;&lt;PD2);<br /><br /> keys = PINB;<br /> if( (keys &amp; KEYS_MASK) != KEYS_MASK ) { // sprawdzamy czy wciśnięty jakikolwiek klawisz<br /> _delay_ms(50); // eliminacja drgań styków<br /> keys = PINB;<br /> if( (keys &amp; KEYS_MASK) != KEYS_MASK ) { // sprawdzamy czy wciśnięty jakikolwiek klawisz<br /><br /> // przed wysłaniem kodu jakiegokolwiek klawisza zmiana<br /> // stanu bitu toggle<br /> toggle_bit ^= (1&lt;&lt;0);<br /><br /> do {<br /><br /> if( !(keys &amp; KEY1) ) command = _CMD1_RC5;<br /> else<br /> if( !(keys &amp; KEY2) ) command = _CMD2_RC5;<br /> else<br /> if( !(keys &amp; KEY3) ) command = _CMD3_RC5;<br /> else<br /> if( !(keys &amp; KEY4) ) command = _CMD4_RC5;<br /> else<br /> if( !(keys &amp; KEY5) ) command = _CMD5_RC5;<br /><br /> address = _ADDRESS_RC5 0;<br /> send_rc5(address, command, toggle_bit);<br /><br /> _delay_ms(115); // gap<br /><br /> keys = PINB;<br /><br /> } while ( (keys &amp; KEYS_MASK) != KEYS_MASK ); /* powtarzaj gdy wciśnięty */<br /> }<br /> }<br /><br /> // przywracamy ustawienia<br /><br /> // ustawienie pinu PORTD.2 (INT0) jako wejście<br /> DDRD &amp;= ~(1&lt;&lt;PD2);<br /> // podciągnięcie do 1<br /> PORTD |= (1&lt;&lt;PD2);<br /><br /> // ******* KLAWISZE<br /> // ustawienie PORTD.2 , 3 , 4 i 5 jako wyjścia<br /> K_DDR  |=  (KEY1|KEY2|KEY3|KEY4|KEY5);<br /> // ustawienie stanu niskiego<br /> K_PORT  &amp;=  ~(KEY1|KEY2|KEY3|KEY4|KEY5);<br /><br /> GIFR |= (1&lt;&lt;INTF0);<br /><br />}[/syntax]<br /><br />Dziękuje z góry za pomoc  w zlokalizowaniu w czym tkwi problem oraz za wyrozumiałosć, gdyż to mój pierwszy post na tym forum.<br />Pozdrawiam Paweł<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9508">pawelszel1993</a> — 1 gru 2015, o 16:12</p><hr />
]]></content>
</entry>
</feed>