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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2013-06-10T12:03:38+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=2975&amp;mode</id>
<entry>
<author><name><![CDATA[BioZ]]></name></author>
<updated>2013-06-10T12:03:38+01:00</updated>
<published>2013-06-10T12:03:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2975&amp;p=38940#p38940</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2975&amp;p=38940#p38940"/>
<title type="html"><![CDATA[Re: [ATmega128/C] HM-R i HM-T, transmisja bezprzewodowa (433]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2975&amp;p=38940#p38940"><![CDATA[
Wywołuję crc16_update(checksum, bajt[i]) w nadajniku, wysyłam razem z pakietem tę sumę kontrolną (wyliczoną dla 16 wysyłanych bajtów danych).<br />W odbiorniku na odebranych danych wywołuję crc16_update(checksum, bajt[i]) dla 16 bajtów danych. Porównuję wyliczoną sumę kontrolną z przechwyconą w pakiecie - jest różnica. Zawsze w 60. pakiecie.<br /><br />Chyba będę musiał potestować i popatrzeć co do bitu jak te dwie sumy kontrolne wyglądają.<br /><br />[syntax=c]void sendPacket(int seq)<br />{<br />    uint8_t TxBytes&#91;18&#93;;    //16B+CRC16<br />    uint16_t checksum = 0; //CRC<br /><br />    //tworzenie danych<br />    //2 bajty - numer pakietu<br />    TxBytes&#91;0&#93; = seq/256; //HIGH<br />    TxBytes&#91;1&#93; = seq%256; //LOW<br /><br />    //losowe dane = 14 bajtow<br />for(uint8_t i = 0; i &lt; 14; i++)<br />        TxBytes&#91;i+2&#93; = rand();<br /><br />    //2B CRC<br />    for (uint8_t i = 0; i &lt; 16; i++)<br />        checksum = _crc16_update(checksum, TxBytes&#91;i&#93;);<br /><br />    TxBytes&#91;16&#93; = (checksum &gt;&gt; 8); //HIGH<br />    TxBytes&#91;17&#93; = checksum; //LOW<br /><br />_LEDOn;<br />synchronize();<br />startSequence();<br />for (uint8_t i = 0; i &lt; 18; i++)<br />sendByte(TxBytes&#91;i&#93;);<br /><br />_outputHigh;<br />_delay_us(_releaseDelay);<br />_LEDOff;<br />}[/syntax]<br />[syntax=c]volatile uint8_t _RxFlag;<br />uint8_t _RxBuffer&#91;_bufferSize&#93;; //18<br /><br />static uint16_t correctCount;<br /><br />void Listen(void)<br />{<br />    if(_RxFlag)<br />    {<br />        uint16_t checksum = 0; //CRC<br /><br />        for (uint8_t i = 0; i &lt; 16; i++)<br />            checksum = _crc16_update(checksum, _RxBuffer&#91;i&#93;);<br /><br />        if (((checksum &gt;&gt; 8) &amp; _RxBuffer&#91;16&#93;) &amp;&amp; (checksum &amp; _RxBuffer&#91;17&#93;))<br />            correctCount++;<br /><br />        uint16_t lastRx = (_RxBuffer&#91;0&#93; &lt;&lt; 8) | (_RxBuffer&#91;1&#93;);<br /><br />...<br />        _RxFlag = 0;<br />    }<br />}[/syntax]<br /> <br /><span style="color: #FF0000">Kod umieszczamy w syntax=c - Zielony J.</span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1274">BioZ</a> — 10 cze 2013, o 12:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-06-10T11:59:51+01:00</updated>
<published>2013-06-10T11:59:51+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2975&amp;p=38938#p38938</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2975&amp;p=38938#p38938"/>
<title type="html"><![CDATA[Re: [ATmega128/C] HM-R i HM-T, transmisja bezprzewodowa (433]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2975&amp;p=38938#p38938"><![CDATA[
Jeśli chodzi o to co piszesz z CRC to sorki ale w ogóle nie zrozumiałem co chciałeś przekazać <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /><br /><br />że crc źle działa ? czy jak ? .... przecież to niemożliwe - crc działa zawsze dobrze - no chyba że chodziło o coś innego<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 10 cze 2013, o 11:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[BioZ]]></name></author>
<updated>2013-06-10T12:00:50+01:00</updated>
<published>2013-06-10T11:48:11+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2975&amp;p=38934#p38934</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2975&amp;p=38934#p38934"/>
<title type="html"><![CDATA[Re: [ATmega128/C] HM-R i HM-T, transmisja bezprzewodowa (433]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2975&amp;p=38934#p38934"><![CDATA[
Hej,<br /><br />wielkie dzięki za wskazówki. <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Udało się dojść do dobrej formy. FYI, czterobitowa preambuła okazała się być wystarczającą.<br />Widzę jeszcze jedną rzecz, już niezwiązaną z częścią opartą na książce, mianowicie z obliczaniem sumy kontrolnej.<br />Obserwując w odbiorniku stopę błędów oraz liczbę odebranych i poprawnie odebranych pakietów, widzę, że zawsze w tych samych momentach następuje błąd - ewidentnie nie jest on losowym wynikającym z przekłamań transmisji. Dla funkcji crc16_update() różne CRC jest wyliczone na przykład dla 60. pakietu (dalej nie analizuję). Dla crc_ccitt_update() dla około setnego. W teorii tak być nie powinno, wszak zgodnie z sygnaturą sumę kontrolną przechowuję w zmiennej 16b, a dane wejściowe są 8b...?<br /><br />Pozdrawiam.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1274">BioZ</a> — 10 cze 2013, o 11:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-04-29T15:48:39+01:00</updated>
<published>2013-04-29T15:48:39+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2975&amp;p=35581#p35581</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2975&amp;p=35581#p35581"/>
<title type="html"><![CDATA[Re: [ATmega128/C] HM-R i HM-T, transmisja bezprzewodowa (433]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2975&amp;p=35581#p35581"><![CDATA[
Ale posłuchaj - ja w książce pokazałem przykład. To nie oznacza, że każdy w każdym przypadku MUSI robić tak samo - jak piszesz o tej sekwencji startowej.....<br /><br />Moim celem było to aby ktoś kto czyta zrozumiał jaką drogą do analizy problemu ja podszedłem i na tej podstawie spokojnie zrobił ze zrozumieniem i poradził sobie dalej .... <br /><br />Myślę, że kod nadajnika jest o wiele prostszy i tu pewnie nie masz najmniejszego kłopotu ze zrozumieniem. Za to powinieneś sobie jak już masz oscyl sprawdzić np ile bitów preambuły potrzebujesz - może mniej niż w przykładach z tymi kompletami która ja wykorzystywałem - może mniej ? ... przecież tu też pisałem że to wyraźnie zależy od sprzętu który się posiada. <br /><br />Możesz zatem zacząć próby wprost od przesyłania jakichś krótkich sekwencji po kilka bitów aby tylko próbować je wyłapać w kodzie odbiornika ....<br /><br />z drugiej zaś strony - jak widzę w kodzie:<br /><br />#define F_CPU xxxxxx to już się domyślam że po pierwsze kompilujesz i piszesz kod być może w AVR Studio a jeśli jesteś początkujący (tego nie wiem ale tak tylko się domyślam po takich wpisach) ... to nawet nie wiesz ile jeszcze innych pułapek czeka na ciebie w tym AVR Studio. Więc jak najszybciej przejdź na Eclipse a z kodów WYWAL w diabły te definicje #define F_CPU ma ich w ogóle nie być w kodzie .... bo jak na końcu się okaże że masz jakiś czeski błąd np przez źle działające delaje to potem sam sobie w brodę będziesz pluł i może w końcu doczytasz i zrozumiesz że w kodzie się tego nie robi.<br /><br />Można jednak być mądrzejszym PRZED szkodą, i posłuchać takiej porady i od razu tego nie wpisywać - a jeśli coś nie wychodzi to dopytać jak sobie poradzić.<br /><br />Ale generalnie widok z oscyla napawa nadzieję, że już niedużo ci brakuje do odpalenia tego z powodzeniem <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Dokładnie niedawno na tym forum ktoś na podstawie tej książki odpalał na jeszcze innych modułach komunikację i miał podobny kłopot na początku - i się załamywał - a później sam zobaczył, że bez wgryzienia się w szczegóły ciężko to odpalić ... tyle że te szczegóły nie są takie trudne ... dlatego polecam dobrze przeanalizować co ma się dziać w przerwaniu ICP<br /><br />a podstawy tego masz także opisane dobrze i szczegółowo w pierwszej niebieskiej książce przy dekodowaniu RC5<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 29 kwi 2013, o 15:48</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[BioZ]]></name></author>
<updated>2013-04-29T15:21:37+01:00</updated>
<published>2013-04-29T15:21:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2975&amp;p=35580#p35580</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2975&amp;p=35580#p35580"/>
<title type="html"><![CDATA[Re: [ATmega128/C] HM-R i HM-T, transmisja bezprzewodowa (433]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2975&amp;p=35580#p35580"><![CDATA[
Hej,<br /><br />dzisiaj dostałem się do oscyloskopu i niżej załączam zdjęcie (zmniejszyłem też liczbę sekwencji fazującej do 4, wystarczy dla tych modułów). Przebieg wygląda zgodnie z oczekiwaniami, tak samo przy nadajniku jak i przy odbiorniku.<br />Zauważyłem, że w &quot;Pasji programowania&quot; pierwszy bit sekwencji startowej jest 0. Teoretycznie sam mogę problem zignorować robiąc podobnie, choć jak zbiorę siły to jutro będę na nowo analizował. Chciałbym mieć jasno w głowie na temat tego, co się tam dzieje. <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />Pozdrawiam.<br /><br /><img src="http://i.imgur.com/tXWm9Wf.jpg" alt="Obrazek" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1274">BioZ</a> — 29 kwi 2013, o 15:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2013-04-29T06:52:04+01:00</updated>
<published>2013-04-29T06:52:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2975&amp;p=35559#p35559</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2975&amp;p=35559#p35559"/>
<title type="html"><![CDATA[Re: [ATmega128/C] HM-R i HM-T, transmisja bezprzewodowa (433]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2975&amp;p=35559#p35559"><![CDATA[
Masz dostęp gdzieś do oscyloskopu ? Warto byłoby sprawdzić jak to się na nim przedstawia - czyli jak wygląda ramka nadawana i odebrana<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 29 kwi 2013, o 06:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[BioZ]]></name></author>
<updated>2013-04-29T00:28:16+01:00</updated>
<published>2013-04-29T00:28:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=2975&amp;p=35555#p35555</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=2975&amp;p=35555#p35555"/>
<title type="html"><![CDATA[[ATmega128/C] HM-R i HM-T, transmisja bezprzewodowa (433MHz)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=2975&amp;p=35555#p35555"><![CDATA[
Witam,<br /><br />czy ma ktoś z Was doświadczenie w obsłudze układów HM-R i HM-T (433MHz) od HopeRF? Próbuję je zmusić do gadania, ale brak dokumentacji u producenta sprawy nie ułatwia...<br />W swojej aplikacji wykorzystałem przykład z &quot;Pasji programowania&quot; Mirosława Kardasia (rozdział 2.) jako bazę.<br />Wykorzystuję 2 płytki ZL8AVR z mikrokontrolerami ATmega128.<br /><br />Jestem na etapie, w którym transmisja dwóch bajtów (sekwencja startowa i bit znaku) przebiega prawie całkowicie pomyślnie. Prawie, ponieważ pierwszy zarejestrowany bit jest zerem, podczas gdy powinien być jedynką. Od dłuższego czasu próbuję zlokalizować przyczynę tego stanu rzeczy.<br /><br />Do nadawania wykorzystuję kodowanie Manchester, odbiór realizowany za pomocą przerwań i wyznaczania czasu trwania impulsów. Połówka bitu trwa 104us.<br />Na początku wysyłane są 64 jedynki dla celów fazowania. Następnie przerwa o długości całego bitu i dopiero potem dane właściwe.<br />Próbowałem różne warianty jeżeli chodzi o stan nóżki w czasie przerwy po fazowaniu, o długości czasów trwania przerw i bitów itp. i lepszej konfiguracji niż ta co teraz nie trafiłem.<br /><br />Najpewniej problem jest w samym programie (źródła na końcu posta), ponieważ gdy łączę piny mikrokontrolerów przewodem pomijając moduły transmisji bezprzewodowej rezultat transmisji jest taki sam. Na razie jednak kilka godzin bezskutecznie błądzę w kodzie. Zapewne przez niedostateczną wiedzę i umiejętności z tematu, za jaki się zabrałem; również pierwszy raz korzystam na poważnie z języka C więc kod mógłby być zdecydowanie wyższej jakości, ale na razie skupiam się na samym problemie.<br /><br />Też na inne dziwne zjawisko trafiłem przy okazji: gdy trzymam przycisk nadawania wciśnięty (powtarzanie transmisji co 100 milisekund), czasem co kilkanaście/kilkadziesiąt ramek odbiornik przestaje funkcjonować prawidłowo (tak, jak bym chciał); program wtedy w ogóle nie wchodzi w obsługę przerwania i dopiero po kilkunastu/kilkudziesięciu ramkach powraca do normalnej pracy (chyba, że wcześniej zwolnię klawisz, wtedy od razu się poprawia). Ten problem jest raczej związany z modułem samym w sobie, gdyż nie zdarzyło mi się tak przy połączeniu mikrokontrolerów samym przewodem.<br /><br />Jeżeli jest ktoś z Was w stanie pomóc mi zlokalizować przyczynę problemu uprzejmie proszę o wskazówki.<br /><br />Pozdrawiam serdecznie.<br /><br />----------------<br />Kod źródłowy programu obsługującego nadawanie:<br />[syntax=c]#define _bitHalveDuration 104 //1000000us/4800bps = 208,(3)<br />#define _releaseDelay 208<br />#define _outputHigh PORTD |= (1 &lt;&lt; PD3)<br />#define _outputLow PORTD &amp;= ~(1 &lt;&lt; PD3)<br />#define _syncPreambleLen 64<br />#define _LEDOn PORTC |= (1 &lt;&lt; PC7)<br />#define _LEDOff PORTC &amp;= ~(1 &lt;&lt; PC7)<br /><br />#define F_CPU 16000000UL<br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/HD44780.h&gt;<br />#include &lt;util/delay.h&gt;<br /><br />void sendOne(void)<br />{<br />_outputHigh;<br />_delay_us(_bitHalveDuration);<br />_outputLow;<br />_delay_us(_bitHalveDuration);<br />}<br /><br />void sendZero(void)<br />{<br />_outputLow;<br />_delay_us(_bitHalveDuration);<br />_outputHigh;<br />_delay_us(_bitHalveDuration);<br />}<br /><br />void synchronize(void)<br />{<br />for (uint16_t i = 0; i &lt; _syncPreambleLen; i++)<br />sendOne();<br /><br />_outputHigh;<br />_delay_us(_releaseDelay);<br />}<br /><br />void sendByte(uint8_t byte)<br />{<br />//start sequence<br />uint8_t ss = 0b11100011; //why so? just because<br /><br />for (uint8_t i = 0; i &lt; 8; i++)<br />{<br />if (!(ss &amp; 0x80)) sendZero();<br />else sendOne();<br /><br />ss &lt;&lt;= 1;<br />}<br /><br />for (uint8_t i = 0; i &lt; 8; i++)<br />{<br />if (!(byte &amp; 0x80)) sendZero();<br />else sendOne();<br /><br />byte &lt;&lt;= 1;<br />}<br /><br />_outputHigh;<br />_delay_us(_releaseDelay);<br />}<br /><br />void Initialize(void)<br />{<br />DDRC = 0xFF; //LED signalling<br />DDRD = 0x09; //HM-T output<br /><br />LCD_Initalize(); //obvious<br />LCD_Clear(); //yup<br />}<br /><br />int main(void)<br />{<br />Initialize();<br /><br />while(1)<br />{<br />if (~PIND &amp; 0x80) //ATTACK<br />{<br />char x = 'x';<br />_LEDOn;<br />synchronize();<br />sendByte(x);<br />_LEDOff;<br />}<br /><br />_delay_ms(100);<br />}<br />}[/syntax]<br /><br />Kod źródłowy programu obsługującego odbiór (diody użyte dla debugowania, brak wcięć celowo):<br />[syntax=c]#define F_CPU 16000000UL<br /><br />#define _bitHalveDuration 104<br /><br />#define _rxEnable PORTD |= (1 &lt;&lt; PD0)<br />#define _rxDisable PORTD &amp;= ~(1 &lt;&lt; PD0)<br /><br />#define _LEDOff PORTC &amp;= 0<br /><br />#define _micro_s(num) (((num)*((F_CPU/1000UL)/8))/1000)<br />#define _tolerance 20<br />#define _minBitHalveDuration _micro_s(_bitHalveDuration - _tolerance)<br />#define _maxBitHalveDuration _micro_s(_bitHalveDuration + _tolerance)<br />#define _maxBitDuration   _micro_s((_bitHalveDuration*2) + (_tolerance*2))<br /><br />#include &lt;avr/io.h&gt;<br />#include &lt;util/delay.h&gt; <br />#include &lt;avr/HD44780.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br /><br />uint8_t LEDs&#91;8&#93;;<br /><br />void Initialize(void)<br />{<br />DDRC = 0xFF; //LED signalling<br />DDRD = 0x01; //HM-R enable output (PD0) and data input (PD4)<br />_rxEnable;   //enable HM-R<br /><br />LCD_Initalize(); //obvious<br />LCD_Clear(); //yup<br /><br />TCCR1B = (1 &lt;&lt; CS11);<br />TCCR1B &amp;= ~(1 &lt;&lt; ICES1);<br />TIMSK |= (1 &lt;&lt; TICIE1);<br /><br />for (uint8_t i = 0; i &lt; 8; i++) LEDs&#91;i&#93; = 1;<br /><br />sei();<br />}<br /><br />volatile uint8_t _RxByte;<br />volatile uint8_t _RxFlag;<br />enum _status {FRAME_RESTART, FRAME_OK};<br /><br />void Listen(void)<br />{<br />if(_RxFlag)<br />{<br />_RxFlag=0;<br /><br />LCD_Clear();<br />LCD_WriteData(_RxByte);<br />LCD_WriteData(' ');<br /><br />for (uint8_t i = 0; i &lt; 8; i++)<br />{<br />if (_RxByte &amp; (1 &lt;&lt; i)) LCD_WriteData('1');<br />else LCD_WriteData('0');<br />}<br />}<br />}<br /><br />ISR(TIMER1_CAPT_vect)<br />{<br />static uint16_t LastCapture;<br />uint16_t PulseWidth;<br />static uint8_t PulseCount;<br />static uint32_t RxData;<br />static enum _status frame_status;<br />static uint8_t mancnt;<br />//static uint8_t bufferIndex = 0;<br />uint8_t startSeq = 0;<br /><br />PulseWidth = ICR1 - LastCapture;<br />LastCapture = ICR1;<br /><br />TCCR1B ^= (1 &lt;&lt; ICES1);<br /><br />//detect frame start<br />if (PulseWidth &gt; _maxBitDuration) mancnt = 0;<br /><br />if (mancnt == 0)<br />{<br />RxData = 0;<br />PulseCount = 0;<br />TCCR1B |= (1 &lt;&lt; ICES1);<br />mancnt++;<br />frame_status = FRAME_OK;<br />}<br />else<br />if (frame_status == FRAME_OK)<br />{<br />LEDs&#91;0&#93; = 1;<br />if (PulseWidth &lt; _minBitHalveDuration) frame_status = FRAME_RESTART;<br /><br />if (PulseWidth &gt; _maxBitDuration) frame_status = FRAME_RESTART;<br /><br />if (frame_status == FRAME_OK)<br />{<br />LEDs&#91;1&#93; = 1;<br />if (PulseWidth &gt; _maxBitHalveDuration) mancnt++;<br />if ((mancnt % 2) == 0)<br />{<br />LEDs&#91;2&#93; = 1;<br />RxData = RxData &lt;&lt; 1;<br /><br />if (TCCR1B &amp; (1 &lt;&lt; ICES1))<br />{<br />RxData |= 0x0001;<br />LEDs&#91;3&#93; = 1;<br />}<br />else<br />{<br />LEDs&#91;4&#93; = 1;<br />}<br /><br />PulseCount++;<br />if (PulseCount == 15) //SS+char --&gt; 16b<br />{<br />LEDs&#91;5&#93; = 1;<br />if (_RxFlag == 0)<br />{<br />LEDs&#91;6&#93; = 1;<br />_RxByte = RxData;<br />startSeq = RxData &gt;&gt; 8;<br />LCD_Clear();<br />for (uint32_t i = 0; i &lt; 16; i++)<br />{<br />if (i == 8) LCD_GoTo(8,1);<br />if (RxData &amp; (0x8000 &gt;&gt; i)) LCD_WriteData('1');<br />else LCD_WriteData('0');<br />}<br /><br />if (startSeq == 0b11100011)<br />{<br />LEDs&#91;7&#93; = 1;<br />_RxFlag = 1;<br />}<br />}<br /><br />frame_status = FRAME_RESTART;<br />}<br />}<br />mancnt++;<br />}<br />}<br /><br />if (frame_status == FRAME_RESTART)<br />{<br />mancnt = 0;<br />TCCR1B &amp;= ~(1&lt;&lt;ICES1);<br />}<br />}<br /><br />int main(void)<br />{<br />Initialize();<br /><br />while (1)<br />{<br />Listen();<br /><br />for (uint8_t i = 0; i &lt; 8; i++)<br />{<br />if (LEDs&#91;i&#93; == 1)<br />{<br />PORTC |= (1 &lt;&lt; i);<br />LEDs&#91;i&#93; = 0;<br />if (i == 7) _delay_ms(200); //swieto!!!<br />}<br />}<br />_delay_us(10);<br />_LEDOff;<br />}<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1274">BioZ</a> — 29 kwi 2013, o 00:28</p><hr />
]]></content>
</entry>
</feed>