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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-06-19T16:33:41+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=24&amp;t=18653&amp;mode</id>
<entry>
<author><name><![CDATA[Morcinek92]]></name></author>
<updated>2017-06-19T16:33:41+01:00</updated>
<published>2017-06-19T16:33:41+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=18653&amp;p=190933#p190933</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=18653&amp;p=190933#p190933"/>
<title type="html"><![CDATA[Komunikacja dwustronna RFM12]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=18653&amp;p=190933#p190933"><![CDATA[
Witam,<br /><br />Czy komuś z użytkowników forum udało się uruchomić dwustronną nie blokującą transmisję między modułami RFM12?? <br />Znalazłem ciekawy temat na forum: <br /><br /><a href="http://forum.atnel.pl/topic1822.html"  class="postlink">http://forum.atnel.pl/topic1822.html</a><br /><br />Gdzie, kolega Krauser podał interesujący kod : <br /><br />[syntax=c]int main(void)<br />    {<br />       //inicjalizacje wszystkiego<br />       while(1)<br />       {<br />          if(!Timer4){//co sekundę wyślij ramkę, można zastąpić reakcją na przycisk<br />             Timer4=100; //co 1 sekundę jeśli komunikacja jest w porządku<br />             send();<br />             Timer5 = 1000; //timeot odbioru 10 sekund<br />          }<br />          while(1) //wewnętrzna pętla while czekająca na ramkę zwrotną<br />          {<br />             if( RF12_status.Tx ) PORTD |= (1&lt;&lt;PD7); //sygnalizacja nadawania<br />             else PORTD &amp;= ~(1&lt;&lt;PD7);<br />     <br />             if( 0 == Timer5) break; //po 10 sekundach wyjdź (i od razu nastąpi ponowne wysłanie ramki bo Timer4 &lt; Timer5)<br />     <br />             if( !(RF12_status.stat &amp; 0x07) )  rf12_rxstart();//jeśli moduł bezczynny to włącz odbieranie<br />             if( RF12_status.New ) { //jeśli jest nowa ramka<br />                ret = rf12_rxfinish(bufor);     // sprawdź czy odebrano kompletną ramkę<br />                if(ret &gt; 0 &amp;&amp; ret &lt; 254) {      // brak błędów CRC - odebrana ramka<br />                   parse_uart_data(bufor);//Sprasuj dane z nadajnika<br />                   break; //opuść wewnętrzną pętlę while<br />                }<br />                else<br />                   if(!ret) {   // wystąpił błąd CRC lub długości ramki<br />                      //Obsługa błędnych ramek powiadomienie ??<br />                      break; //opuść wewnętrzną pętlę while<br />                   }<br />             }<br />          }<br />       }<br />    }[/syntax]<br /><br />Ale niestety ten kod po wejściu w drugą pętlę while blokuje program, czy ktoś zrobił tą komunikację innym podejściem ??<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=903">Morcinek92</a> — 19 cze 2017, o 16:33</p><hr />
]]></content>
</entry>
</feed>