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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-11-05T20:04:19+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=4&amp;t=13456&amp;mode</id>
<entry>
<author><name><![CDATA[jnk0le]]></name></author>
<updated>2015-11-05T20:04:19+01:00</updated>
<published>2015-11-05T20:04:19+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13456&amp;p=144504#p144504</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13456&amp;p=144504#p144504"/>
<title type="html"><![CDATA[Re: [C][AVR][LabView] Bufor cykliczny]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13456&amp;p=144504#p144504"><![CDATA[
<div class="quotetitle">jaszczomp napisał(a):</div><div class="quotecontent"><br />[syntax]tab1 = tab&#91;1&#93; - '0'; //konwersja ze string do na int<br />tab2 = tab&#91;2&#93; - '0';<br />tab3 = tab&#91;3&#93; - '0';<br />kroki_do_wykonania = tab1*100+tab2*10+tab3; //skleja 3 cyfry w jedna liczbę[/syntax]<br /></div><br />A nie prościej atoi() ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8491">jnk0le</a> — 5 lis 2015, o 20:04</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jaszczomp]]></name></author>
<updated>2015-11-04T18:32:05+01:00</updated>
<published>2015-11-04T18:32:05+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13456&amp;p=144380#p144380</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13456&amp;p=144380#p144380"/>
<title type="html"><![CDATA[Re: [C][AVR][LabView] Bufor cykliczny]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13456&amp;p=144380#p144380"><![CDATA[
Liczby są wysyłane w taki sposób że jeden bajt to jeden znak w formacie ASCII. <br /><br />Podszedłem do tego z innej strony. Założyłem że zostaje wysłana stała ilość danych z LabView (w moim przypadku 4 bajty - znak +/- w zależności od wyniku oraz 3 liczby). W przerwaniu zapisuje do odb_x odebrany bajt oraz ustawiam flagę. Później zapisuję do tablicy odebrany bajt (wiem ile bajtów odbiorę więc wiem na które miejsce zapisać dany bajt). Licznik tablicy inkrementuje a jak jest większy od założonej ilości odebranych bajtów wtedy go zeruje i ustawiam flagę dla pętli obrabiającej otrzymane dane. Wysyłanie danych jest cykliczne - co pewien, niekrótki czas więc to że może &quot;przylecieć&quot; w trakcie obrabiania danych mnie zbytnio nie interesuje.  <br /><br />[syntax=c]if(odb_flaga){<br />//<br />odb_flaga = 0;//zgaś flagę<br />tab&#91;i&#93;=odb_x;<br />i++;<br />if (i&gt;3)<br />{<br />i=0;<br />w=1;<br />}<br />          }[/syntax]<br /><br />Wymyśliłem też sposób na obrobienie każdego bajtu z char do int oraz zlepienie trzech pojedńczych cyfr w jedną liczbę, nie wygląda ale działa. <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br /><br />[syntax]tab1 = tab&#91;1&#93; - '0'; //konwersja ze string do na int<br />tab2 = tab&#91;2&#93; - '0';<br />tab3 = tab&#91;3&#93; - '0';<br />kroki_do_wykonania = tab1*100+tab2*10+tab3; //skleja 3 cyfry w jedna liczbę[/syntax]<br /><br /><br /><span style="color: #FF0000"><strong>Proszę sobie zobaczyć jak się wkleja kody źródłowe  ----   1 poprawiłem celowo by kolega zobaczył różnicę w czytelności --SunRiver</strong></span><p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11583">jaszczomp</a> — 4 lis 2015, o 18:32</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jnk0le]]></name></author>
<updated>2015-11-04T15:22:20+01:00</updated>
<published>2015-11-04T15:22:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13456&amp;p=144362#p144362</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13456&amp;p=144362#p144362"/>
<title type="html"><![CDATA[Re: [C][AVR][LabView] Bufor cykliczny]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13456&amp;p=144362#p144362"><![CDATA[
Czy liczby zamierzasz wysyłać jako string czy binarnie ? <br />Wystarczy rozwiązanie blokujące czy nie może blokować ?<br /><br />Stringi można wczytywać w dość prosty sposób:<br />[syntax=c]int16_t uart_getint(void)<br />{<br />char buff&#91;32&#93;;<br /><br />        // wczytywanie stringu aż do napotkania pierwszego białego znaku (NULL, spacja, enter )<br />        // czeka aż biały znak zostanie wczytany lub przekroczymy pojemność bufora<br />uart_getlnToFirstWhiteSpace(buff, 32);<br /><br />return atoi(buff);<br />}[/syntax]<br /><br />Jeśli chodzi o nieblokującą transmisję to pozostaje implementacja &quot;state machine&quot; jak np <a href="https://github.com/jnk0le/Easy-AVR-USART-C-Library/blob/master/example%28xmodem%29.c"  class="postlink">tu</a>.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=8491">jnk0le</a> — 4 lis 2015, o 15:22</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-11-04T10:15:04+01:00</updated>
<published>2015-11-04T10:15:04+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13456&amp;p=144339#p144339</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13456&amp;p=144339#p144339"/>
<title type="html"><![CDATA[Re: [C][AVR][LabView] Bufor cykliczny]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13456&amp;p=144339#p144339"><![CDATA[
trzeba sobie przede wszystkim napisać funkcje wyższego rzędu do odbioru stringów, warto sygnalizować odbiór znaków końca linii już na poziomie przerwania itp itd ...<br /><br />da się to napisać nawet bez zielonej książki, wiele osób nawet tu na forum podejmowało takie próby i to z powodzeniem ... nie działa to może tak wygodnie jak ja to opisuję ale warto sobie porobić takie wprawki w programowaniu<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 4 lis 2015, o 10:15</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jaszczomp]]></name></author>
<updated>2015-11-04T09:23:43+01:00</updated>
<published>2015-11-04T09:23:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13456&amp;p=144335#p144335</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13456&amp;p=144335#p144335"/>
<title type="html"><![CDATA[Re: [C][AVR][LabView] Bufor cykliczny]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13456&amp;p=144335#p144335"><![CDATA[
Mirku, tylko jest problem ze nie mam zielonej książki, posiadam tylko niebieską. <br /><br />Załóżmy że zaimplementowałem sobie bufor cykliczny opisany w niebieskiej książce, tylko jak z niego teraz wydobywać odebrane informację? <br /><br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11583">jaszczomp</a> — 4 lis 2015, o 09:23</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-11-04T00:28:12+01:00</updated>
<published>2015-11-04T00:28:12+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13456&amp;p=144329#p144329</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13456&amp;p=144329#p144329"/>
<title type="html"><![CDATA[Re: [C][AVR][LabView] Bufor cykliczny]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13456&amp;p=144329#p144329"><![CDATA[
<div class="quotetitle"><b>Quote:</b></div><div class="quotecontent"><br />Chyba że ktoś ma prostszy pomysł na odebranie takiego ciągu znaków z LabView (maksymalnie 3 cyfry)?<br /></div><br />dowolny ciąg - dowolne rzeczy można odbierać i dowolnej długości a nawet mieszane dane czyli liczby z tekstami itp itd <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /><br /><br />zajrzyj do Greenbooka do jednego z ostatnich rozdziałów na temat obsługi odbierania i parsowania danych przychodzących w oparciu o zdarzenia (EVENT's) i Callbacki w C ... jak to się robi i jak się do tego podchodzi<br /><br />W Bluebooku opisałem tylko niejako pierwszą część czyli o co chodzi z buforowaniem cyklicznym, jego obsługą na przerwaniach, wysyłaniem danych .... Odbieranie zostawiłem na kolejną książkę gdy już porządnie udało mi się wytłumaczyć wszystkie inne ciut bardziej skomplikowane zagadnienia jak właśnie timery programowe czy też zdarzenia i callbacki ... dopiero wtedy praca z RS232 nabiera sensu<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 4 lis 2015, o 00:28</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[jaszczomp]]></name></author>
<updated>2015-11-03T23:59:52+01:00</updated>
<published>2015-11-03T23:59:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13456&amp;p=144326#p144326</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13456&amp;p=144326#p144326"/>
<title type="html"><![CDATA[[C][AVR][LabView] Bufor cykliczny]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13456&amp;p=144326#p144326"><![CDATA[
Dzień dobry, <br /><br />Mógłby mi ktoś po krótce opisać jak obsłużyć odczyt danych w pętli głównej programu z bufora w którym zapisują się dane otrzymane po RS232? Korzystam z programu bufora cyklicznego opisanego w niebieskiej książce mirka. <br /><br />Dane wysyłam z LabView za pomocą modułu szeregowego. Buforem z LabView wysyłam &quot;różowy&quot; pakiet danych - w LabView jest to string. Dane odbieram w uC Atmega8 przez UART (wiadomo) z wykorzystaniem bufora cyklicznego wspomnianego wcześniej. <br /><br />Gdy wysyłałem dane z LabView i odczytywałem jeden odebrany bajt (bez żadnego bufora) odczytywało mi zawsze ostatnią liczbę wpisaną w buforze w LabView (po wystawieniu flagi w przerwaniu ISR(USART_RXC_vect) w pętli głównej odczytywało mi mniej znaczący bajt odebrany jako pierwszy, czy dobrze rozumiem?). <br /><br />Chodzi mi o to by wysłać teraz liczbę z LabView np. 542 - oczywiście nadal stringiem różowym - odczytać ją za pomocą bufora cyklicznego. Wyłuskać z każdego bajtu liczbę oraz skleić ją w int którego będę mógł przekazać do funkcji jako licznik. <br /><br />Nie do końca rozumiem jak mam użyć funkcji <br />[syntax]uart_getc();[/syntax]<br />w głównym programie i jak obsłużyć sklejenie tych danych w liczbę int mogącą być wykorzystaną jako licznik do funkcji. <br /><br />Chyba że ktoś ma prostszy pomysł na odebranie takiego ciągu znaków z LabView (maksymalnie 3 cyfry)?<br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=11583">jaszczomp</a> — 3 lis 2015, o 23:59</p><hr />
]]></content>
</entry>
</feed>