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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2017-10-15T18:41:38+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=19380&amp;mode</id>
<entry>
<author><name><![CDATA[kanaron]]></name></author>
<updated>2017-10-15T18:41:38+01:00</updated>
<published>2017-10-15T18:41:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197089#p197089</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197089#p197089"/>
<title type="html"><![CDATA[Re: UART - odbieranie danych nie działa (krzaki lub pusto)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197089#p197089"><![CDATA[
Więc... Co zrobiłem przez ostatnie godziny:<br />-przeczytałem kilkukrotnie rozdział z BB o UART.<br />-Napisałem po swojemu ten program. Nie działa. Wysyła, nie odbiera, nie przypisuje do zmiennej, dioda debugująca nie zaświeca się. Jedno co dobre z tego wyszło to to, że zrozumiałem w końcu przerwania <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> Tylko czemu tak długo się ich obawiałem?<br />-Przeczytałem raz jeszcze, niemal przepisałem żywcem kod z książki. Nie działa.<br />-Wziąłem kod z płyty z BB, wgrałem, nieco zmodyfikowałem aby nie kombinował z kalibracją OSCCAL tylko, żeby wysyłał to co odbierze i zaświecał diodę gdy odbierze to co chcę aby odebrał. Nie działa. No jak to nie działa to coś jest mocno źle zrobione.<br />-Przeniosłem procka na stykówkę. Podłączyłem, nic nie zmieniałem w kodzie... Działa. Biorę miernik do ręki... Brak styku na linii RX od procka na płytce prototypowej... TRZY dni męczenia się z tym, a wszystko przez JEDEN kabelek... <img src="https://forum.atnel.pl/images/smilies/icon_mad.gif" alt=":x" title="Wściekły" /> <br />Cóż... Tego się nie spodziewałem <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /> Widać musiał być słaby styk, dlatego raz odbierał prawidłowo, raz jakieś krzaki a raz w ogóle nic nie odbierał <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br /><br />Poprawiłem styk, przeniosłem na płytkę prototypową i działa <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br /><br />Niemniej zostaję z buforem cyklicznym, nie wracam do binarki <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><br /><br />Zmodyfikowałem program, odbieram dane prawidłowo, wysyłam prawidłowo, wszystko działa perfekcyjnie <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> Dzięki wielkie wszystkim <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />Szkoda tylko, że po SPI muszę wysyłać dane co 5ms między każdą daną, bo inaczej na siebie jakby nachodzą, a przez to dane z komputera muszę wysyłać z przerwami co 80ms, bo inaczej bufor mi się przepełnia... Da się jakoś przyspieszyć SPI?<br />PS: Już nie istotne, źle przepisałem jedną funkcję i SPI działało z dużym opóźnieniem <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1368">kanaron</a> — 15 paź 2017, o 18:41</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2017-10-15T14:01:37+01:00</updated>
<published>2017-10-15T14:01:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197067#p197067</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197067#p197067"/>
<title type="html"><![CDATA[Re: UART - odbieranie danych nie działa (krzaki lub pusto)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197067#p197067"><![CDATA[
<div class="quotetitle">kanaron napisał(a):</div><div class="quotecontent"><br />Natomiast wysyłanie z PC do procka to jeszcze nigdy przedtem nie robiłem.<br /></div><br />a no to nie ma co się martwić - każdy z nas musi przejść tę drogę <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... ale dlatego ci mówię - że MILION razy lepiej robić to metodą ASCII a nie binarną - szczególnie na starcie<br /><br /><div class="quotetitle">kanaron napisał(a):</div><div class="quotecontent"><br />A funkcję UR() szczerze mówiąc wziąłem na ślepo z pdf'a ATmegi16. Nad nią za długo nie siedziałem, nie analizowałem jej, zaufałem Atmelowi<br /></div><br />A czemu miałoby się nie ufać - toż to MEGA PODSTAWOWA funkcja i tylko chwalić Atmela, że w swoich notach ładnie pokazuje najprostsze przykłady - toż nigdzie nie znajdziesz w żadnej nocie procka <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> żadnej rodziny - jakichś rozbudowanych przykładów <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> nie ma takiej możliwości<br /><br />W BB zajrzyj do przykładu projektu wielozadaniowego - jak już przerobisz i zaskoczysz rozdział o buforowaniu cyklicznym bo to PODSTAWA PODSTAW przy działaniach z UARTem - bo w tym projekcie wielozadaniowym masz przykłady jak reagować na pojedyncze odbierane znaki<br /><br />a jak będziesz chciał w końcu do tego podejść tak jak się należy - to weźmiesz GB w łapki i tam zobaczysz jak to się robi poprawnie na zdarzeniach z callbackami itp ... <br /><br />zajrzyj do byle pierwszego mojego poradnika wideo gdzie coś robię z komunikacją UART (z ostatnich poradników) a jest ich sporo - to zobaczysz JAK MEGA PROSTO się korzysta z tego mechanizmu opisanego w GB<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 15 paź 2017, o 14:01</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kanaron]]></name></author>
<updated>2017-10-15T13:55:59+01:00</updated>
<published>2017-10-15T13:55:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197065#p197065</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197065#p197065"/>
<title type="html"><![CDATA[Re: UART - odbieranie danych nie działa (krzaki lub pusto)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197065#p197065"><![CDATA[
Znaczy do tej pory działałem w drugą stronę: binarna transmisja z urządzenia do komputera i obrabianie tego na PC. W ten sposób zawsze działało. Natomiast wysyłanie z PC do procka to jeszcze nigdy przedtem nie robiłem. <br /><br />A funkcję UR() szczerze mówiąc wziąłem na ślepo z pdf'a ATmegi16. Nad nią za długo nie siedziałem, nie analizowałem jej, zaufałem Atmelowi <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> . Tyle co nazwę funkcji zmieniłem.<br /><br />Za chwilkę przerobię kod na ten z BB <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1368">kanaron</a> — 15 paź 2017, o 13:55</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2017-10-15T13:47:59+01:00</updated>
<published>2017-10-15T13:47:59+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197064#p197064</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197064#p197064"/>
<title type="html"><![CDATA[Re: UART - odbieranie danych nie działa (krzaki lub pusto)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197064#p197064"><![CDATA[
<div class="quotetitle">xentis napisał(a):</div><div class="quotecontent"><br />Masz BB a w nim masz przecież opisaną transmisję UART z buforem cyklicznym - możesz go tak zmodyfikować<br /></div><br />No toż od tego warto w ogóle zacząć, bo i do binarki buforowanie się przydaje - a wtedy trzeba sobie już tylko obrabiać w buforze własny format ramek i obsługiwać timeouty<br /><br />Tymczasem:<br /><div class="quotetitle">kanaron napisał(a):</div><div class="quotecontent"><br />rzyznaję, że do tej pory zajmowałem się tylko transmisją binarną i... działało w taki sposób jaki miało<br /></div><br />Jeśli działałeś tak jak tutaj i bez buforowania to po prostu trafiałeś akurat na pomyślny splot okoliczności, że ci działało ...<br /><br />tak jak wyżej kolega pisze - to co robisz - nawet bez delayów jest tu mega blokujące <br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />char UR( void ) {<br />    <span style="color: #FF0000">while ( !( UCSRA &amp; ( 1 &lt;&lt; RXC ) ) )<strong><span style="font-size: 150%; line-height: normal">;</span></strong></span><br />    return UDR;<br />}<br /></div><br /><br />czy nie widzisz tutaj pętli nieskończonej ? Przy twoim podejściu do tej niby binarki  to to - jest właśnie pierwszy gwóźdź do elektronicznej trumny, więc jeśli gdzieś ci się procek zawiesza - to właśnie tutaj na tej pętli nieskończonej ... niestety przy takim podejściu i próbie budowania już ciut rozbudowanej komunikacji binarnej ZAWSZE będą takie efekty - zawsze<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 15 paź 2017, o 13:47</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[xentis]]></name></author>
<updated>2017-10-15T13:26:16+01:00</updated>
<published>2017-10-15T13:26:16+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197063#p197063</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197063#p197063"/>
<title type="html"><![CDATA[Re: UART - odbieranie danych nie działa (krzaki lub pusto)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197063#p197063"><![CDATA[
<div class="quotetitle">kanaron napisał(a):</div><div class="quotecontent"><br />Włączyłem Receive(); Wysłał 'A' kilka razy co sekundę, potem parę razy kilka sekund wolniej. Potem się zaciął na dobre. Stąd wiem na pewno, że to problem z funkcją Receive()<br /></div>Nie dokońca musi to być wina funkcji Receive(), może po prostu połączenie kilku czynników sprawia problem. Transmisję UART masz zbudowaną w sposób blokujący, nie wiem jak wygląda Twoje ISP, ale może wszystko się rozjeżdża bo procek nie nadąża ze wszystkim. Masz BB a w nim masz przecież opisaną transmisję UART z buforem cyklicznym - możesz go tak zmodyfikować by bufor reagował na znaki t, n , c a następnie pobierał twoje 6 kolejnych znaków i wtedy bufor wystawia flagę że odebrany cały ciąg gotowy do przesłania dalej.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6265">xentis</a> — 15 paź 2017, o 13:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kanaron]]></name></author>
<updated>2017-10-15T13:25:49+01:00</updated>
<published>2017-10-15T13:25:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197062#p197062</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197062#p197062"/>
<title type="html"><![CDATA[Re: UART - odbieranie danych nie działa (krzaki lub pusto)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197062#p197062"><![CDATA[
Jeszcze co do tego co miałem zrobić z funkcją: <br />Wyrzuciłem wszystko z funkcji Receive()<br />[syntax=c]void Receive( void ) {<br /><br />    buff = UR();<br /><br />    switch ( buff ) {<br />    /*case 't': {<br />        for ( int i = 0; i &lt; 4; i++ ) {<br />            trans&#91;i&#93; = UR();<br /><br /><br />        }<br />        break;<br />    }  */<br />    case 'n': {<br />        /*for ( int i = 0; i &lt; 6; i++ ) {<br />            nav&#91;i&#93; = UR();<br />        }<br />        for ( int i = 0; i &lt; 6; i++ ) {<br />            navs&#91;i&#93; = UR();<br />        }  */<br />        test();<br />        break;<br />    }  /*<br />    case 'c': {<br />        for ( int i = 0; i &lt; 6; i++ ) {<br />            com&#91;i&#93; = UR();<br />        }<br />        for ( int i = 0; i &lt; 6; i++ ) {<br />            coms&#91;i&#93; = UR();<br />        }<br />        break;<br />    }      */<br /><br />    }<br /><br />}[/syntax]<br /><br />To powinno zadziałać. Funkcja test() to proste zgaszenie diody na sekundę i ponowne zapalenie. Z głównej pętli programu wywaliłem wszystko. Została tylko ta funkcja Receive(). Żadnych zbędnych _delay_ms. I... nie działa <img src="https://forum.atnel.pl/images/smilies/icon_eek.gif" alt=":shock:" title="Zaszokowany" /> Wysyłam przez Putty 'n' i nic. Dopiero jak przytrzymam klawisz 'n' dłużej to wtedy dioda zgaśnie na sekundę (czasem kilka razy)... Czyli coś gdzieś się gubi... Zaraz znowu spróbuję najprostszą transmisję zrobić, czyli echo z procka, bo trochę teraz zgłupiałem... Spróbuję też to przenieść na stykówkę, bo może mi coś na płytce prototypowej nie styka.<br /><br /><br /><div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />zamiast stosować komunikację ASCII czyli o ramki zakończone enterem - to ty brniesz tak na prawdę w transmisję binarną i to co opisujesz to jest PIERWSZY TYPOWY efekt początkującej osoby w tym zakresie ...<br /></div><br /><br />Przyznaję, że do tej pory zajmowałem się tylko transmisją binarną i... działało w taki sposób jaki miało. Ale to były projekty z innymi założeniami.<br /><br />Dzięki, zaraz obejrzę ten film <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1368">kanaron</a> — 15 paź 2017, o 13:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2017-10-15T13:09:53+01:00</updated>
<published>2017-10-15T13:09:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197061#p197061</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197061#p197061"/>
<title type="html"><![CDATA[Re: UART - odbieranie danych nie działa (krzaki lub pusto)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197061#p197061"><![CDATA[
Z tego co pobieżnie przeczytałem to twoim problemem jest to - że zamiast sobie ułatwiać życie to sam utrudniasz - tak mi się wydaje. Bo zamiast stosować komunikację ASCII czyli o ramki zakończone enterem - to ty brniesz tak na prawdę w transmisję binarną i to co opisujesz to jest PIERWSZY TYPOWY efekt początkującej osoby w tym zakresie ...<br /><br /><div class="quotetitle">kanaron napisał(a):</div><div class="quotecontent"><br />Ale powiedz mi co miałbym przeanalizować, jakie masz podejrzenia?<br /></div><br />Zobacz Pan sobie to:<br /><br /><div style="width: 583px; height: 471px; margin: 0 auto; padding-left: 26px; padding-top: 48px; background: url('https://www.atnel.pl/download/atnel_tv.png') no-repeat;"> <strong>iframe</strong> </div><br /><br />i nie chodzi tu koledze micky o podejrzenia - tylko o to - jak łatwo sprawdzić dzięki analizatorowi gdzie robisz babola - bo takiego robisz niestety - dzięki analizatorowi w 5 sekund zobaczyłbyś co się dzieje na kablach <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 15 paź 2017, o 13:09</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kanaron]]></name></author>
<updated>2017-10-15T13:02:19+01:00</updated>
<published>2017-10-15T13:02:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197059#p197059</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197059#p197059"/>
<title type="html"><![CDATA[Re: UART - odbieranie danych nie działa (krzaki lub pusto)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197059#p197059"><![CDATA[
Nie, nie mam żadnych. Ale powiedz mi co miałbym przeanalizować, jakie masz podejrzenia? Komunikacją RS232, bawię się nie od wczoraj <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> Nad tym konkretnym błędem, który opisuję siedzę kilka dni i próbowałem wielu rozwiązań, wiele debugowałem i wiele testowałem, wszystkiego co już zrobiłem na pewno tu nie opisałem, bo za dużo tego było. Może już sprawdziłem to co podejrzewasz <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1368">kanaron</a> — 15 paź 2017, o 13:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[micky]]></name></author>
<updated>2017-10-15T12:44:53+01:00</updated>
<published>2017-10-15T12:44:53+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197057#p197057</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197057#p197057"/>
<title type="html"><![CDATA[Re: UART - odbieranie danych nie działa (krzaki lub pusto)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197057#p197057"><![CDATA[
A masz jakikolwiek analizator stanów logicznych? Nawet ten najtańszy? Do interface'ów komunikacyjnych to moim zdaniem niezbędne narzędzie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1546">micky</a> — 15 paź 2017, o 12:44</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kanaron]]></name></author>
<updated>2017-10-15T11:59:31+01:00</updated>
<published>2017-10-15T11:59:31+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197054#p197054</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197054#p197054"/>
<title type="html"><![CDATA[Re: UART - odbieranie danych nie działa (krzaki lub pusto)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197054#p197054"><![CDATA[
Niestety zielonej książki nie mam, ani nie ma jej w żadnej bibliotece (ani na uczelni ani w pobliżu).<br />Mógłbyś  jakoś przybliżyć ten temat?<br /><br />PS: Cofam co powiedziałem. W pobliskiej bibliotece zaopatrzyli się w Greenbook <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> I nawet nie jest wypożyczony, więc jutro go dostanę <img src="https://forum.atnel.pl/images/smilies/icon_e_biggrin.gif" alt=":D" title="Bardzo szczęśliwy" /> <br />Niemniej jakbyś mógł przekazać jakieś wskazówki co powinienem &quot;przygotować&quot; w kodzie? Niedziela cała wolna, szkoda by było siedzieć nad tym bezczynnie <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />PS2: Dzięki, zaraz taką funkcję napiszę.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1368">kanaron</a> — 15 paź 2017, o 11:59</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Espablo]]></name></author>
<updated>2017-10-15T12:00:16+01:00</updated>
<published>2017-10-15T11:56:36+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197053#p197053</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197053#p197053"/>
<title type="html"><![CDATA[Re: UART - odbieranie danych nie działa (krzaki lub pusto)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197053#p197053"><![CDATA[
<div class="quotetitle">kanaron napisał(a):</div><div class="quotecontent"><br />Domyślam się, że coś zepsułem z pętlami w tej funkcji, że nie tak się powinno odbierać te dane. Tylko w takim razie jak odebrać jeden znak (powiedzmy 'n') a następne 6 odebranych znaków zapisać do jednej zmiennej, a jeszcze kolejne 6 do innej zmiennej i potem kolejny znak, 12 znaków, jeden znak, 4 znaki i tak w kółko?<br /></div><br />To się nazywa parsowanie danych i rewelacyjnie jest opisane w zielonej książce Mirka<br /><br />Ja na Twoim miejscu zrobiłbym sobie funkcję, która po odebraniu np 'n' ma coś wykonać. Na razie tylko 'n' i nic więcej i na tym bym się skupił. Potem dodawałbym kolejne i za pomocą case przełączałbym się pomiędzy nimi<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1897">Espablo</a> — 15 paź 2017, o 11:56</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kanaron]]></name></author>
<updated>2017-10-15T11:36:32+01:00</updated>
<published>2017-10-15T11:36:32+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197050#p197050</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197050#p197050"/>
<title type="html"><![CDATA[Re: UART - odbieranie danych nie działa (krzaki lub pusto)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197050#p197050"><![CDATA[
Najprostsze funkcje z filmów Pana Mirka i z PDF do odbierania i wysyłania działają perfekcyjnie. Przerobiłem dosłownie wszystkie filmiki o RS232, zarówno sprzętowe jak i programowe. Wszystko działo się dokładnie tak jak u Pana Mirka. Krzaki były w tym samym momencie, wysyłanie znaku 'A' działało też w tym samym momencie. Więc tu mam wszystko prawidłowo skonfigurowane.<br /><br />Procek taktowany 16MHz z zewnętrznego kwarcu, baud rate 9600. Procent błędu 0.2%<br />Putty ustawione na 9600-n-1. Program na PC wysyłający dane też ustawiony na 9600-n-1<br /><br />Od tej strony wszystko sprawdziłem kilka razy. Sprawdzałem nawet czy kabel USB idący obok trzech kabli zasilających nie zbiera jakiś zakłóceń i też wszystko wygląda prawidłowo.<br /><br />Dodam jeszcze coś o czym zapomniałem napisać na początku:<br />Gdy wysyłałem tylko 't' i 4 znaki już widziałem, że te dane się trochę rozjeżdżają. Teraz te wszystkie dane wysyłam z pewnym opóźnieniem, bo wydawało mi się, że coś tu nie nadąża i widać wyraźnie, że coś tu nie działa.<br /><br />I jeszcze jedno: zdarza się, że przez jakąś godzinkę wszystko działa prawidłowo. To jest losowe. Ale najczęściej to nie działa. Gdy był czas, że to nie działało zacząłem debugować, żeby się dowiedzieć w czym dokładnie leży problem. Wtedy sprawdziłem diodą czy powiedzmy nav[2] == '3'. Gdy wysłałem takie dane, że dioda powinna się zaświecić to nie świeciła się. Czyli nie odebrał tego prawidłowo.<br />Debugowałem w Putty w taki sposób: <br />co sekundę wysyłałem 'A'. Działało. <br />Odbierałem dane wysyłane &quot;z palca&quot; po Putty i je odsyłałem ('A' też wysyłałem). Działało.<br />Włączyłem wysyłanie danych po SPI. Nadal wysyłał 'A', czyli działa<br />Włączyłem Receive(); Wysłał 'A' kilka razy co sekundę, potem parę razy kilka sekund wolniej. Potem się zaciął na dobre. Stąd wiem na pewno, że to problem z funkcją Receive()<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1368">kanaron</a> — 15 paź 2017, o 11:36</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[micky]]></name></author>
<updated>2017-10-15T11:18:08+01:00</updated>
<published>2017-10-15T11:18:08+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197046#p197046</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197046#p197046"/>
<title type="html"><![CDATA[Re: UART - odbieranie danych nie działa (krzaki lub pusto)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197046#p197046"><![CDATA[
Sprawdzanie zworką rx-tx sprawdza hardware i dobrze, że to też sprawdziłeś. Teraz zrób jak proponuje kolega Espablo - odpal najprostszą komunikację i odeślij to, coś odebrał.<br />P. S. Taktowanie procka i parametry transmisji masz dobrze ustawione? Patrzyłeś w pdf'a procka jaki procent błędów jest dla wybranych przez Ciebie parametrów?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1546">micky</a> — 15 paź 2017, o 11:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kanaron]]></name></author>
<updated>2017-10-15T11:15:49+01:00</updated>
<published>2017-10-15T11:15:49+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197045#p197045</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197045#p197045"/>
<title type="html"><![CDATA[Re: UART - odbieranie danych nie działa (krzaki lub pusto)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197045#p197045"><![CDATA[
Dokładnie tak robiłem. Wszystko działa do etapu bardziej rozbudowanego odbierania danych, czyli funkcji Receive(). Podstawowe wysyłanie działa, podstawowe odbieranie działa. Podstawowe echo działa. Wszystko działa. Gdy dodałem funkcję Receive() zaczyna się sypać, zawieszać, nie odbiera danych prawidłowo. Tylko właśnie nie rozumiem jak odbierać takie ciągi danych na bieżąco.<br />Nie wiem czy on nie nadąża? Czy może powinienem to zrobić w przerwaniach i zamiast w locie przechwycić daną i ja zapisać do zmiennej to zapisywać wszystko do jakiegoś bufora i potem z niego je odczytać i zapisać do zmiennej? Tylko tu nie wiem czy taki bufor by się nie przepełnił. Komputer cały czas wysyła dane, a procesor musi je odebrać, odczytać, przypisać do zmiennych i rozesłać do pozostałych procesorów po SPI (a tych procesorów i zmiennych będzie więcej... Sporo więcej, na razie są dwa procesory Slave)<br /><br />A delay jest tylko do debugowania <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1368">kanaron</a> — 15 paź 2017, o 11:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Espablo]]></name></author>
<updated>2017-10-15T11:05:00+01:00</updated>
<published>2017-10-15T11:05:00+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197044#p197044</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197044#p197044"/>
<title type="html"><![CDATA[Re: UART - odbieranie danych nie działa (krzaki lub pusto)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197044#p197044"><![CDATA[
Zrób tak jak Mirek zawsze pokazuje. Czyli najpierw uruchom podstawową komunikację - odbieranie i wysyłanie pojedynczego znaku pomiędzy komputerem a atmegą. Potem dodaj jedną funkcę i sprawdź czy działa.  Potem kolejną - za każdym razem kopmpiluj i wgrywaj. Wylapiesz problem na etepie pisania softu. No i wywal tego paskudnego _delay_ms <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1897">Espablo</a> — 15 paź 2017, o 11:05</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kanaron]]></name></author>
<updated>2017-10-15T10:46:38+01:00</updated>
<published>2017-10-15T10:46:38+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197042#p197042</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197042#p197042"/>
<title type="html"><![CDATA[Re: UART - odbieranie danych nie działa (krzaki lub pusto)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197042#p197042"><![CDATA[
Próbowałem zapętlić samą przejściówkę zworką na Rx i Tx z pominięciem procesora. Takie echo działa. <br />Ale odsyłanie z procesora tego co odebrałem nie działa prawidłowo. Już próbowałem, wyglądało to tak:<br />w pętli, powiedzmy 'c' zaraz po przypisaniu odebranej wartości do com[i] = UR(); dałem aby wysłał USART_Transmit(com[i]);. Nie wysyłał nic. Najprawdopodobniej zdążył się zawiesić<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1368">kanaron</a> — 15 paź 2017, o 10:46</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[micky]]></name></author>
<updated>2017-10-15T10:28:29+01:00</updated>
<published>2017-10-15T10:28:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197041#p197041</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197041#p197041"/>
<title type="html"><![CDATA[Re: UART - odbieranie danych nie działa (krzaki lub pusto)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197041#p197041"><![CDATA[
Po pierwsze spróbuj odsyłać do PC to co z niego odebrałeś.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1546">micky</a> — 15 paź 2017, o 10:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[kanaron]]></name></author>
<updated>2017-10-15T09:58:09+01:00</updated>
<published>2017-10-15T09:58:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197039#p197039</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197039#p197039"/>
<title type="html"><![CDATA[UART - odbieranie danych nie działa (krzaki lub pusto)]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=19380&amp;p=197039#p197039"><![CDATA[
Witam. Mam problem z funkcją odbierania danych z RS232: procesor się na niej zacina. Czasem nie odbiera nic, czasem odbiera dane przesunięte o kilka bajtów, czasem odbiera krzaki.<br /><br />Funkcja, którą napisałem, do odbierania danych i zapisywania ich do odpowiednich zmiennych:<br />[syntax=c]void Receive( void ) {<br /><br />    buff = UR();<br /><br />    switch ( buff ) {<br />    case 't': {<br />        for ( int i = 0; i &lt; 4; i++ ) {<br />            trans&#91;i&#93; = UR();<br /><br />        }<br />        break;<br />    }<br />    case 'n': {<br />        for ( int i = 0; i &lt; 6; i++ ) {<br />            nav&#91;i&#93; = UR();<br />        }<br />        for ( int i = 0; i &lt; 6; i++ ) {<br />            navs&#91;i&#93; = UR();<br />        }<br />        break;<br />    }<br />    case 'c': {<br />        for ( int i = 0; i &lt; 6; i++ ) {<br />            com&#91;i&#93; = UR();<br />        }<br />        for ( int i = 0; i &lt; 6; i++ ) {<br />            coms&#91;i&#93; = UR();<br />        }<br />        break;<br />    }<br /><br />    }<br /><br />}[/syntax]<br /><br />I funkcja UR() (z noty aplikacyjnej ATmegi16)<br />[syntax=c]char UR( void ) {<br />    while ( !( UCSRA &amp; ( 1 &lt;&lt; RXC ) ) );<br />    return UDR;<br />}[/syntax]<br /><br />Komputer wysyła dane w prawidłowej kolejności, czyli gdy wyśle znak 'c' to potem lecą dwa razy po 6 znaków. <br />Następnie te dane są wysyłane po SPI do innych procesorów, a te procesory wyświetlają je na swoich wyświetlaczach. I tu pojawia się problem:<br />na wyświetlaczach LCD procesorów Slave nie pojawia się to co wysyłam z komputera. <br /><br />Debugowałem to diodą i Putty. Doszedłem do takich wniosków:<br />1. SPI działa prawidłowo. Problem leży w części komputer - przejściówka - procesor Master<br />2. Przejściówka działa prawidłowo<br />3. W zmiennych w procesorze Masater nie jest to co wysłałem z komputera. Więc problem leży w odbieraniu danych.<br /><br />Dodatkowo po debugowaniu Putty doszedłem do wniosku, że po zakomentowaniu funkcji Receive() procesor działa prawidłowo (tylko danych nie odbiera). Nie zawiesza się. Main() po debugowaniu wygląda tak:<br />[syntax=c]int main( void ) {<br /><br />    SPI_MasterInit();<br />    USART_Init( __UBRR );<br /><br /><br />    DDRA = 255;<br />    DDRC = 255;<br />    DDRB |= ( 1 &lt;&lt; PB0 ) | ( 1 &lt;&lt; PB1 ) | ( 1 &lt;&lt; PB2 ) | ( 1 &lt;&lt; PB3 );<br />    DDRD = 252;<br /><br />    _delay_ms(5000);<br /><br />    CLEAR_ALL_SLAVE;<br /><br />    //sei();<br /><br />    while ( 1 ) {<br /><br />        USART_Transmit(' ');<br />        USART_Transmit('t');<br />        USART_Transmit(' ');<br /><br />        for ( int i = 0; i &lt; 4; i++ ) {<br /><br />            USART_Transmit(trans&#91;i&#93;);<br />        }<br /><br />        USART_Transmit(' ');<br />        USART_Transmit('n');<br />        USART_Transmit(' ');<br /><br />        for ( int i = 0; i &lt; 6; i++ ) {<br /><br />            USART_Transmit(nav&#91;i&#93;);<br />        }<br />        USART_Transmit(' ');<br />        USART_Transmit('s');<br />        USART_Transmit(' ');<br />        for ( int i = 0; i &lt; 6; i++ ) {<br /><br />            USART_Transmit(navs&#91;i&#93;);<br />        }<br /><br />        USART_Transmit(' ');<br />        USART_Transmit('c');<br />        USART_Transmit(' ');<br /><br />        for ( int i = 0; i &lt; 6; i++ ) {<br /><br />            USART_Transmit(com&#91;i&#93;);<br />        }<br />        USART_Transmit(' ');<br />        USART_Transmit('s');<br />        USART_Transmit(' ');<br />        for ( int i = 0; i &lt; 6; i++ ) {<br /><br />            USART_Transmit(coms&#91;i&#93;);<br />        }<br /><br />        SendToAll();<br />        //Receive();<br /><br />        _delay_ms(1000);<br /><br />    }<br /><br />}[/syntax]<br /><br />Natomiast gdy Receive() nie było zakomentowane to procesor wysłał kilka razy wszystkie zmienne, a potem przestał. Zawiesił się.<br /><br />Domyślam się, że coś zepsułem z pętlami w tej funkcji, że nie tak się powinno odbierać te dane. Tylko w takim razie jak odebrać jeden znak (powiedzmy 'n') a następne 6 odebranych znaków zapisać do jednej zmiennej, a jeszcze kolejne 6 do innej zmiennej i potem kolejny znak, 12 znaków, jeden znak, 4 znaki i tak w kółko?<br /><br />PS: Oczywiście checklisty do RS232 i filmy Pana Mirka o RS232 obejrzałem i wszystko działało jak na filmach<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1368">kanaron</a> — 15 paź 2017, o 09:58</p><hr />
]]></content>
</entry>
</feed>