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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2016-02-25T20:25:32+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=8&amp;t=14609&amp;mode</id>
<entry>
<author><name><![CDATA[mkot123]]></name></author>
<updated>2016-02-25T20:25:32+01:00</updated>
<published>2016-02-25T20:25:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14609&amp;p=154731#p154731</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14609&amp;p=154731#p154731"/>
<title type="html"><![CDATA[Re: RFM12B - odbiór danych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14609&amp;p=154731#p154731"><![CDATA[
W końcu udało mi się uruchomić komunikację. Przyczyna jednak nie była wcale taka oczywista, przynajmniej dla mnie.<br /><br />Przed inicjalizacją RFM12B uruchamiałem tez funkcję inicjującą porty procesora, ADC, timery itd.<br />W tej funkcji m.in. miałem taki fragment kodu:<br />[syntax=c]DDRB = 0x00;// Port B - wejścia<br />PORTB = 0xFF;// Podciągnięcie to Vcc<br />PORTB |= KEY1;  // podciągamy linie klawisza 1 do VCC<br />PORTB |= KEY2;  // podciągamy linie klawisza 2 do VCC[/syntax]<br /><br />Błędem okazało się włączanie podciągania do Vcc wszystkich pinów portu B, na którym mamy porty SPI.<br />Po zahaszowaniu drugiej linijki (powyżej) od razu komunikacja ruszyła bez najmniejszego problemu.<br />Od razu przeszedłem do wersji pracującej na przerwaniach. Ruszyła z kopyta. Pięknie  <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br /><br />Jako nadajnik wykorzystałem ATmega8, która ma wejścia INT0 i INT1 na innym porcie niż SPI, dlatego tę część:<br />[syntax=c]RF_IRQDDR &amp;= ~(1&lt;&lt;IRQ);<br />RF_PORT |= (1&lt;&lt;IRQ);<br />GICR |= (1&lt;&lt;INT0); //(1&lt;&lt;INT1);<br />MCUCR |= (1&lt;&lt;ISC01); //(1&lt;&lt;ISC11);// zbocze opadające[/syntax]<br /><br />musiałem zmodyfikować tak:<br />[syntax=c]RF_IRQDDR &amp;= ~(1&lt;&lt;IRQPIN);<br />RF_IRQPORT |= (1&lt;&lt;IRQPIN);<br />GICR |= (1&lt;&lt;INT0); //(1&lt;&lt;INT1);<br />MCUCR |= (1&lt;&lt;ISC01); //(1&lt;&lt;ISC11);// zbocze opadające[/syntax]<br /><br />oczywiście wraz z odpowiednią modyfikacją pliku nagłówkowego.<br />Po tej zmianie port, na którym mamy SPI oraz wejście przerwania nie muszą być takie same.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6704">mkot123</a> — 25 lut 2016, o 20:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mkot123]]></name></author>
<updated>2016-02-23T06:37:54+01:00</updated>
<published>2016-02-23T06:37:54+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14609&amp;p=154468#p154468</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14609&amp;p=154468#p154468"/>
<title type="html"><![CDATA[Re: RFM12B - odbiór danych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14609&amp;p=154468#p154468"><![CDATA[
Masz racje, to dla funkcji nieblokujących, ale poprawiłem ten błąd.<br />W następnym kroku chciałbym właśnie zabrać się za tą opcje, ale na razie jestem w martwym punkcie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6704">mkot123</a> — 23 lut 2016, o 06:37</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kicajek]]></name></author>
<updated>2016-02-22T23:13:03+01:00</updated>
<published>2016-02-22T23:13:03+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14609&amp;p=154462#p154462</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14609&amp;p=154462#p154462"/>
<title type="html"><![CDATA[Re: RFM12B - odbiór danych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14609&amp;p=154462#p154462"><![CDATA[
Witam<br />A patrzyłeś na to?<br /><a href="https://obrazkiforum.atnel.pl/826/b13d7f310fb2e5163b737c29a556ad79.jpg"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/826/b13d7f310fb2e5163b737c29a556ad79.jpg" alt="Obrazek" /></a><br /><br />Pozdr.<br /><br />...a sorry to dla nie blokujących.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=826">kicajek</a> — 22 lut 2016, o 23:13</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mkot123]]></name></author>
<updated>2016-02-22T18:43:12+01:00</updated>
<published>2016-02-22T18:43:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14609&amp;p=154431#p154431</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14609&amp;p=154431#p154431"/>
<title type="html"><![CDATA[Re: RFM12B - odbiór danych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14609&amp;p=154431#p154431"><![CDATA[
Uprościłem nadawanie do maksimum:<br />[syntax=c]while(1){<br />LED_XOR;<br />rf12_txdata(dat, 0);<br />_delay_ms(500);<br />}[/syntax]<br /><br />Odbiór:<br />[syntax=c]while(1){<br />ret = rf12_rxdata(dat);<br />if( ret ) {<br />LED_ON;<br />ret = 0;<br />}<br />}[/syntax]<br /><br />Dioda w odbiorniku nie zapala się ani razu.<br />Co ciekawe jak w odbiorniku zrobię tak:<br />[syntax=c]while(1){<br />ret = rf12_rxdata(dat);<br />if( ret ) {<br />ret = 0;<br />}<br />                LED_XOR;<br />}[/syntax]<br />Dioda mruga z częstotliwością około 170Hz przez niecałe 5 sekund, po czym przestaje mrugać.<br /><br />edit:<br />Zmieniłem częstotliwość obu procesorów na 8 MHz (wew. RC). Bez zmian.<br /><br />edit2:<br />Jeszcze jedna rzecz. Posiadam moduły o symbolu RFM12BSP, na których zaznaczona jest częstotliwość 434 MHz (nie ma 433 MHz). Zdjęcia poniżej. Czy jest to na pewno właściwy moduł do bibliotek z zielonej książki?<br /><a href="https://obrazkiforum.atnel.pl/6704/c3790e3181a0ab2b374af47df3350a46.JPG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/6704/c3790e3181a0ab2b374af47df3350a46.JPG" alt="Obrazek" /></a><a href="https://obrazkiforum.atnel.pl/6704/f05b5fb454c271fc743a4e7d05cf1b0d.JPG"  class="postlink"><img src="https://obrazkiforum.atnel.pl/thumb/6704/f05b5fb454c271fc743a4e7d05cf1b0d.JPG" alt="Obrazek" /></a><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6704">mkot123</a> — 22 lut 2016, o 18:43</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Krauser]]></name></author>
<updated>2016-02-22T18:36:40+01:00</updated>
<published>2016-02-22T18:36:40+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14609&amp;p=154430#p154430</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14609&amp;p=154430#p154430"/>
<title type="html"><![CDATA[Re: RFM12B - odbiór danych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14609&amp;p=154430#p154430"><![CDATA[
<div class="quotetitle">mkot123 napisał(a):</div><div class="quotecontent"><br />Czy ktoś mógłby wskazać miejsce, w którym popełniłem błąd?<br /></div><br />Jak mi coś nie działa to odpalam najprostszy przykład. W tym nadawaniu mogłeś zostawić _delay_ms(250), a jak to zadziała to bawić się dalej.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=465">Krauser</a> — 22 lut 2016, o 18:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mkot123]]></name></author>
<updated>2016-02-22T18:37:04+01:00</updated>
<published>2016-02-21T20:52:30+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=14609&amp;p=154346#p154346</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=14609&amp;p=154346#p154346"/>
<title type="html"><![CDATA[RFM12B - odbiór danych]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=14609&amp;p=154346#p154346"><![CDATA[
Hej,<br /><br />Próbuję uruchomić transmisję danych za pomocą modułów RFM12B (wersja SMD).<br />Jest to moje pierwsze spotkanie z tymi modułami i staram się wykonywać wszystkie polecenia zgodnie z opisem Pana Mirka z zielonej książki. Na razie jestem na etapie trybu wykorzystującego funkcje blokujące.<br />Przedstawię najważniejsze fragmenty programu:<br /><br />Inicjalizacja nadajnika (ATmega8, 1 MHz):<br />[syntax=c]//! inicjalizacja modułu RFM12 ***********<br />rf12_init();// inicjalizacja soft SPI i przerwań jeśli są używane<br />rf12_setrange( ZAKRES_433MHZ );// ustawiamy zakres częstotliwości: 433MHz, 868MHz lub 915MHz<br />rf12_setfreq( RF12FREQ433(438.00) );// ustalenie częstotliwości nadawania/odbioru (może być np: 432.74)<br />//rf12_setfreq( RF12FREQ868(862.00) );// przykład zmiany dla RFM12 na 868MHz - żaden problem ;) (może być np: 875.48)<br />rf12_setbaud(9600);// 19200 ustawienie prędkości - baud rate<br />rf12_setbandwidth(RxBW200, LNA_6, RSSI_79);// ustawienia odbiornika<br />rf12_setpower(PWRdB_0, TxBW120);// 1mW moc wyjściowa nadajnika, parametry FSK<br />rf12_disablewakeuptimer();// wyłączamy Wakeup Timer<br />rf12_trans(0x0000);// odczyt statusu - start modułu rfm12<br />rf12_trans(0xCC77);// jeśli posiadasz RFM12B (wesja SMD) odblokuj tę linię<br />//! inicjalizacja modułu RFM12 ***********[/syntax]<br /><br />Nadawanie:<br />[syntax=c]while(1){<br /><br />if( ms10_cnt != ms10_cnt_old ){// wykonuje operacje co 10 ms<br /><br />if( !(ms10_cnt % 20) ){<br />send();<br />LED_XOR;<br />}<br />ms10_cnt_old = ms10_cnt;<br />}[/syntax]<br /><br />Inicjalizacja odbiornika (ATmega32, 16 MHz):<br />[syntax=c]//! inicjalizacja modułu RFM12 ***********<br />rf12_init();// inicjalizacja soft SPI i przerwań jeśli są używane<br />rf12_setrange( ZAKRES_433MHZ );// ustawiamy zakres częstotliwości: 433MHz, 868MHz lub 915MHz<br />rf12_setfreq( RF12FREQ433(438.00) );// ustalenie częstotliwości nadawania/odbioru (może być np: 432.74)<br />//rf12_setfreq( RF12FREQ868(862.00) );// przykład zmiany dla RFM12 na 868MHz - żaden problem ;) (może być np: 875.48)<br />rf12_setbaud(9600);// 19200 ustawienie prędkości - baud rate<br />rf12_setbandwidth(RxBW200, LNA_6, RSSI_79);// ustawienia odbiornika<br />rf12_setpower(PWRdB_0, TxBW120);// 1mW moc wyjściowa nadajnika, parametry FSK<br />rf12_disablewakeuptimer();// wyłączamy Wakeup Timer<br />rf12_trans(0x0000);// odczyt statusu - start modułu rfm12<br />rf12_trans(0xCC77);// jeśli posiadasz RFM12B (wesja SMD) odblokuj tę linię<br />//! inicjalizacja modułu RFM12 ***********[/syntax]<br /><br />Odbiór danych:<br />[syntax=c]while(1){<br /><br />if(rf12_rxdata(dat)) {<br />                 PORTD &amp;= ~(1&lt;&lt;PD6);      // mrugaj diodą LED<br />} else {<br /><br />}<br /><br />}[/syntax]<br /><br />Niestety nie odbieram żadnych danych. Za pomocą oscyloskopu, załączając diodę w wybranych momentach programu doszedłem do tego, że procedura odbioru danych zatrzymuje się przy pierwszym wywołaniu funkcji rf12_ready(); wewnątrz funkcji rf12_rxdata.<br />Całość mam złożoną na płytce stykowej. Połączenia sprawdzałem pięć razy i myślę, że wszystko jest w porządku.<br />Przykładając sondę oscyloskopu do anteny (kawałka kabelka) nadajnika wykrywam nośną, a więc po stronie nadajnika raczej jest wszystko w porządku.<br /><br />Czy ktoś mógłby wskazać miejsce, w którym popełniłem błąd?<br /><br />edit:<br />Spróbowałem nadać coś z ATmegi32, która jak wyżej opisałem ma działać jako odbiornik. Dzieje się to samo - program zatrzymuje się na funkcji rf12_ready(). Nadawanie wykonałem tak samo jak na ATmega8. Jedyną różnicą jest zegar - m8 ma 1MHz, a m32 pracuje na 16 MHz. Spróbuję, czy coś się zmieni jak zmniejszę trochę częstotliwość.<br /><br />edit2:<br />Jestem krok dalej. Funkcja rf12_rxdata wykonuje się do końca, ale za każdym razem zwraca 0, czyli nie zgadza się CRC.<br /><br />edit3:<br />Niestety nadal nie udało mi się zdiagnozować przyczyny mojego problemu. Próbowałem nadawać dane w jedną i w drugą stronę - bez sukcesu. Czy nikt nie jest w stanie chociaż zasugerować, gdzie mogę robić błąd?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6704">mkot123</a> — 21 lut 2016, o 20:52</p><hr />
]]></content>
</entry>
</feed>