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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2014-09-12T08:49:37+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=8479&amp;mode</id>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-09-12T08:49:37+01:00</updated>
<published>2014-09-12T08:49:37+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8479&amp;p=95205#p95205</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8479&amp;p=95205#p95205"/>
<title type="html"><![CDATA[Re: UART wariuje po &quot;zalaniu&quot; danymi. To normalne?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8479&amp;p=95205#p95205"><![CDATA[
<div class="quotetitle">Atlantis napisał(a):</div><div class="quotecontent"><br />Już znalazłem przyczynę - zabrakło instrukcji zerującej zmienną ascii_line przy przepełnieniu bufora.<br /></div><br /><br />aż sobie zajrzałem do kodu z GB i taki mamy oto komentarz nawet w kodzie :<br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />// sprawdzamy, czy wąż nie zacznie zjadać własnego ogona<br />    if ( tmp_head == UART_RxTail ) {<br /><span style="color: #FF0000">    // tutaj możemy w jakiś wygodny dla nas sposób obsłużyć  błąd spowodowany<br />    // próbą nadpisania danych w buforze, mogłoby dojść do sytuacji gdzie<br />    // nasz wąż zacząłby zjadać własny ogon</span><br />    UART_RxHead = UART_RxTail;<br />    }<br /></div><br /><br />to tak w uzupełnieniu do:<br /><div class="quotetitle">Atlantis napisał(a):</div><div class="quotecontent"><br />a przeglądając kod z książki (i moje modyfikacje) za nic nie mogę wytypować potencjalnej przyczyny.<br /></div><br /><br /><div class="quotetitle">Atlantis napisał(a):</div><div class="quotecontent"><br />A może przypadkiem za takie zachowanie może odpowiadać układ FT232?<br /></div><br /><br />Po prostu trzeba przeglądać dokładniej ....<br /><br />a to:<br /><div class="quotetitle">Atlantis napisał(a):</div><div class="quotecontent"><br />Wiem, że takie rozwiązanie jest mało prawdopodobne, ale pomysł nie wziął się bynajmniej &quot;z komosu&quot;. Kiedyś miałem do czynienia z modułem GSM, który zachowywał się bardzo podobnie - zaczynał wariować, kiedy wysyłało mu się kolejną komendę, gdy on jeszcze nie skończył odsyłać odpowiedzi na poprzednią. Terminal wyświetlał wtedy bzdury. Kilku innych użytkowników Usenetu potwierdziło zaobserwowanie dokładnie takiego samego objawu w przypadku tego modelu.<br /></div><br /><br />nie jest ŻADNYM, podkreślam żadnym potwierdzeniem, że pomysł nie był &quot;z kosmosu&quot; wręcz przeciwnie - tym bardziej pomysł z kosmosu - a to co napisałeś potwierdza tylko fakt, że nie ty sam jeden wpadłeś na pomysł z kosmosu ale jeszcze kilku użytkowników tego usnetu jak napisałeś ....<br /><br />Bo kto wysyła do modemu komendy gdy ten nie zakończył wykonywania poprzedniej ? .... to tylko świadczy znowu o tym że ty czy inni użytkownicy usenetu jesteście początkujący i nie wiecie jak się obsługuje zdarzenia asynchroniczne. Nie wiecie, że PODSTAWOWY standard komend AT daje możliwość sprawdzenia czy jest odpowiedź z modemu czy nie. Że sprawdza się zawsze w takiej rozmowie z modemem co najmniej TRZY podstawowe stany:<br /><br />1. odpowiedź OK<br />2. odpowiedź ERR<br />3. brak odpowiedzi czyli TimeOUT<br /><br />co DOBITNIE pokazuje - że pomysł - iż coś z modemem jest nie tak gdy odsyła bzdury w takiej sytuacji jak opisałeś - jest pomysłem z KOSMOSU <br /><br />ale znowu tutaj wychodzi to samo - że brak ci takiego podejścia:<br /><br /><div class="quotetitle">mokrowski napisał(a):</div><div class="quotecontent"><br />Ostatnią rzeczą którą można sprawdzać jeśli kod działał do tej pory to błąd sprzętu. Jak zmieniasz oprogramowanie i nie działa... to logika nakazuje szukać w nim błędu a nie w kompilatorze, IDE czy sprzęcie. Mi to podejście się sprawdza...<br /></div><br /><br />i przez to jak sam widzisz - co rusz popadasz w coraz większe PUŁAPKI własnych pomysłów z kosmosu. Bo raz sobie ubzdurałeś coś z tym modemem - zamiast doczytać właśnie , douczyć się jak się je obsługuje, jak wyeliminować taki błąd ze swojego kodu i potem ... powielasz to samo w BYLE JAKIM innym przypadku ...<br /><br />sorry że poświęcam temu tyle czasu ale staram się tępić takie podejście i pokazywać na takim właśnie KLASYCZNYM przypadku jaki tu zaprezentowałeś - że to do NICZEGO nie prowadzi ... A jak sam widzisz - nie jest to tylko moje podejście ...<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 12 wrz 2014, o 08:49</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-09-11T16:30:15+01:00</updated>
<published>2014-09-11T16:30:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8479&amp;p=95117#p95117</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8479&amp;p=95117#p95117"/>
<title type="html"><![CDATA[Re: UART wariuje po &quot;zalaniu&quot; danymi. To normalne?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8479&amp;p=95117#p95117"><![CDATA[
<div class="quotetitle">j23 napisał(a):</div><div class="quotecontent"><br />zmieniając kod Pana Mirka aby czegoś niepotrzebnie nie wykasowałeś?<br /></div><br /><br />Ja tylko dodam że w tym kodzie ... z GB, jakbym powiedział że czegoś brakuje jeśli chodzi o sprawdzanie błędów to bym skłamał - w ogóle brakuje sprawdzania sytuacji awaryjnych .... bo gdybym to dopisał to niech mi ktoś mądry powie - jak wtedy miałbym przekazać to co chciałem przekazać ?<br /><br />a zatem:<br /><br />1. przede wszystkim trzeba wprowadzić atomowość bo np funkcja uart_getc() z tego co pamiętam zwraca wynik 16-bit ale i w innych miejscach trzeba przejrzeć kod pod tym kątem<br /><br />2. obsłużyć błędy podawane ze sprzętowego modułu UART przede WSZYSTKIM a tego w ogóle nie ma<br /><br />3. obsłużyć błędy &quot;porwanych ramek&quot; w trakcie tego &quot;zalewania&quot; <img src="https://forum.atnel.pl/images/smilies/icon_e_smile.gif" alt=":)" title="Szczęśliwy" /><br /><br />itp itd .... to nie jest robota na 2-3 linijki kodu ... nad tym trzeba trochę posiedzieć, popisać, potestować ....<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 11 wrz 2014, o 16:30</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Atlantis]]></name></author>
<updated>2014-09-11T16:26:20+01:00</updated>
<published>2014-09-11T16:26:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8479&amp;p=95113#p95113</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8479&amp;p=95113#p95113"/>
<title type="html"><![CDATA[Re: UART wariuje po &quot;zalaniu&quot; danymi. To normalne?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8479&amp;p=95113#p95113"><![CDATA[
Już znalazłem przyczynę - zabrakło instrukcji zerującej zmienną ascii_line przy przepełnieniu bufora.<br />A co do kontroli przepływu to dobry pomysł. Muszę doczytać czy FT232 obsługuje bity Xon i Xoff.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2174">Atlantis</a> — 11 wrz 2014, o 16:26</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[j23]]></name></author>
<updated>2014-09-11T16:15:28+01:00</updated>
<published>2014-09-11T16:15:28+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8479&amp;p=95105#p95105</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8479&amp;p=95105#p95105"/>
<title type="html"><![CDATA[Re: UART wariuje po &quot;zalaniu&quot; danymi. To normalne?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8479&amp;p=95105#p95105"><![CDATA[
Zrób dodatkową software'ową kontrolę przepływu danych. Odpowiadając na Twoje pytanie uważam, że to co się dzieje u Ciebie to w zasadzie normalne, bo układ UART obsługuje (przetwarza) to co ma w buforze. A że ma &quot;śmieci&quot;, to przetwarza śmieci i stąd się biorą wariactwa. Prawdopodobnie źle masz ustawione zależności czasowe przetwarzania danych od bufora UART. Nie może być na styk, tylko minimalny zapas czasu kiedy jeden rozkaz przestaje być przetwarzany i może być przetwarzany nowy. W innym wypadku bufor UART nic nie powinien odebrać. Druga sprawa to jakaś flaga zajętości bufora UART. Jeżeli to dla Ciebie nie problem, to zrób sobie dodatkowe linie danych i sprzętową kontrolę przepływu, ale będzie trzeba wykorzystać dodatkowe piny MCU... Jeżeli bufor UART po stronie MCU jest cyklicznie sprawdzany przez timer, to można do kodu wprowadzić dodatkową zmienną (flagę) gotowości bufora UART -jeśli czegoś takiego nie ma. Czy &quot;lekko&quot; zmieniając kod Pana Mirka aby czegoś niepotrzebnie nie wykasowałeś? <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br />Pozdrawiam! Jarek<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=4504">j23</a> — 11 wrz 2014, o 16:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Atlantis]]></name></author>
<updated>2014-09-11T15:42:58+01:00</updated>
<published>2014-09-11T15:42:58+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8479&amp;p=95100#p95100</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8479&amp;p=95100#p95100"/>
<title type="html"><![CDATA[Re: UART wariuje po &quot;zalaniu&quot; danymi to normalne?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8479&amp;p=95100#p95100"><![CDATA[
<div class="quotetitle">mirekk36 napisał(a):</div><div class="quotecontent"><br />pomysł - jak coś nie działa to pewnie scalaki są do (Y) <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... Tak zawsze najłatwiej - czyli typowe: &quot;JA robię wszystko dobrze a nawet SUPER! więc winny musi być: procek albo eclipse, albo kompilator albo jak tu jeszcze lepiej FT232R - no ludzie kochani ...<br /></div><br /><br />Przepraszam bardzo, ja nic takiego nie napisałem. Po prostu nie jestem do końca pewien jak ten układ się zachowa w takiej sytuacji, na ile jest przezroczysty, a na ile &quot;przetwarza&quot; i buforuje otrzymywane dane itp. Wiem, że takie rozwiązanie jest mało prawdopodobne, ale pomysł nie wziął się bynajmniej &quot;z komosu&quot;. Kiedyś miałem do czynienia z modułem GSM, który zachowywał się bardzo podobnie - zaczynał wariować, kiedy wysyłało mu się kolejną komendę, gdy on jeszcze nie skończył odsyłać odpowiedzi na poprzednią. Terminal wyświetlał wtedy bzdury. Kilku innych użytkowników Usenetu potwierdziło zaobserwowanie dokładnie takiego samego objawu w przypadku tego modelu.<br /><br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Przy czym WYRAŹNIE piszę - że nie jest to ŻADNA biblioteka napisana MEGA OPTYMALNIE i obsługująca KAŻDE NIESZCZĘŚCIE, które ci się przydarzy <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> czyli każdy błąd - bo takiej biblioteki panie - to jeszcze nikt nie napisał i nie napisze <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... sam to musisz zrobić i dostosować do własnych potrzeb - wtedy się uda<br /></div><br /><br />Ale ja sobie z tego doskonale zdaje sprawę. Naprawdę nie mam do nikogo pretensji, a już na pewno nie do biblioteki (ani tym bardziej do jej autora). Po prostu &quot;zameldowałem&quot; o zauważeniu takiego ciekawego przypadku, którego w tej chwili nie mogę powiązać z żadną z moich modyfikacji (co nie wyklucza tego, że to właśnie w nich leży przyczyna). Po prostu byłem ciekaw, czy któryś z innych posiadaczy Greenbooka zauważył coś takiego.<br /><br /><br /><div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />zamiast siedzieć i narzekać na źle działający scalak FT232R (albo chociażby wysnuwać takie kosmiczne wnioski że to może być scalak źle działający na podstawie takich objawów)....<br /></div><br /><br />Nikt nie powiedział, że źle działa. W normalnych warunkach działa normalnie. Co do scalaka, to jak już powiedziałem - kiedyś wydawałoby mi się to równie absurdalnym pomysłem, ale mam doświadczenia z modułem GSM, gdzie podobne zachowanie miało całkowicie sprzętową przyczynę, więc aż tak niedorzecznym domysłem to nie jest (choć ciągle uważam ten trop za bardzo mało prawdopodobny).<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2174">Atlantis</a> — 11 wrz 2014, o 15:42</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2014-09-11T15:25:21+01:00</updated>
<published>2014-09-11T15:25:21+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8479&amp;p=95097#p95097</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8479&amp;p=95097#p95097"/>
<title type="html"><![CDATA[Re: UART wariuje po &quot;zalaniu&quot; danymi to normalne?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8479&amp;p=95097#p95097"><![CDATA[
<div class="quotetitle">Atlantis napisał(a):</div><div class="quotecontent"><br />A może przypadkiem za takie zachowanie może odpowiadać układ FT232?<br /></div><br /><br />Kolejny &quot;fajny&quot; pomysł - jak coś nie działa to pewnie scalaki są do (Y) <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... Tak zawsze najłatwiej - czyli typowe: &quot;JA robię wszystko dobrze a nawet SUPER! więc winny musi być: procek albo eclipse, albo kompilator albo jak tu jeszcze lepiej FT232R - no ludzie kochani ...<br /><br />Ja mogę ci bez niczego w CIEMNO powiedzieć - twój KOD jest zły ... a sugestia? prosta - napraw go, napisz poprawnie i będzie działać.<br /><br />Tylko nie pisz mi tu - że to przecież kod z GreenBooka .... bo kod w książce ma być ilustracją do zrozumienia wielu ciekawych zagadnień jak (przede wszystkim) obsługa własnych komend AT, jak parsowanie danych, jak callbacki w służbie obsługi RS232, jak techniki programowania, wykorzystanie funkcji w C takich jak: strtok() czy strtok_r() to obsługi tokenów i wiele innych ....<br /><br />Przy czym WYRAŹNIE piszę - że nie jest to ŻADNA biblioteka napisana MEGA OPTYMALNIE i obsługująca KAŻDE NIESZCZĘŚCIE, które ci się przydarzy <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> czyli każdy błąd - bo takiej biblioteki panie - to jeszcze nikt nie napisał i nie napisze <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> .... sam to musisz zrobić i dostosować do własnych potrzeb - wtedy się uda<br /><br />zamiast siedzieć i narzekać na źle działający scalak FT232R (albo chociażby wysnuwać takie kosmiczne wnioski że to może być scalak źle działający na podstawie takich objawów) .... idąc tą drogą to najlepiej od razu napisać do supportu technicznego FTDI i podpowiedzieć im, że właśnie wykryłeś BUG'a w ich scalaku. Tylko że też idąc to drogą to zaraz będziesz pisał tego typu maile a to do producentów procesorów i różnych innych peryferiów - gdy tylko ci twój kod będzie źle działać. <br /><br />PODEJŚCIE - trzeba zmienić podejście - ZAWSZE to powtarzam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 11 wrz 2014, o 15:25</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Atlantis]]></name></author>
<updated>2014-09-11T15:11:25+01:00</updated>
<published>2014-09-11T15:11:25+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=8479&amp;p=95093#p95093</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=8479&amp;p=95093#p95093"/>
<title type="html"><![CDATA[UART wariuje po &quot;zalaniu&quot; danymi. To normalne?]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=8479&amp;p=95093#p95093"><![CDATA[
To nie tyle problem, co taka ciekawostka na którą się natknąłem. Chciałbym po prostu dowiedzieć się czy wynika to z jakiegoś błędu w programie, czy też jest normalnym zachowaniem programu.<br />Mam ATmegę328 z udpalonym zestawem do komunikacji przez UART - bufory cykliczne dla RX i TX po 128 bajtów, obsługa wysyłania i odbierania w przerwaniach, parsowanie komend AT- wszystko w oparciu o zieloną książkę, z niewielkimi własnymi modyfikacjami. Właściwie największą zmianą z mojej strony jest zapisywanie odpowiedzi do bufora, zamiast wysyłania ich od razu. Jest to potraktowane tym, że w urządzeniu mam jeszcze inny interfejs komunikacyjny, który korzysta z tej samej funkcji parsującej.<br /><br />Wszystko działa idealnie, gdy spokojnie &quot;rozmawiam&quot; z programem wysyłając mu komendę i czekając na odpowiedź. W ramach eksperymentu postanowiłem jednak &quot;zalać go&quot; komendami, których nie był w stanie przetwarzać. Poza powtarzaniem typowej odpowiedzi &quot;UNKNOWN COMMAND&quot; (efekt nadpisywania danych w buforze) natknąłem się na co najmniej dwie dziwne reakcje:<br /><br />1) Przesunięcie odpowiedzi - program odpowiada nie na ostatnią komendę, ale na tą wysłaną tak z 4-5 linijek wstecz.<br />2) Program zapętla się, wysyłając bez końca ten sam zestaw danych. Wtedy pomaga już tylko reset.<br /><br />A może przypadkiem za takie zachowanie może odpowiadać układ FT232?<br /><br />Jak już wspominałem - nie jest to żadnym wielkim problemem. Po prostu zaciekawiła mnie ta sprawa, a przeglądając kod z książki (i moje modyfikacje) za nic nie mogę wytypować potencjalnej przyczyny.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2174">Atlantis</a> — 11 wrz 2014, o 15:11</p><hr />
]]></content>
</entry>
</feed>