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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-11-13T13:02:15+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=58&amp;t=11376&amp;mode</id>
<entry>
<author><name><![CDATA[Rafalst]]></name></author>
<updated>2015-11-13T13:02:15+01:00</updated>
<published>2015-11-13T13:02:15+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11376&amp;p=145269#p145269</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11376&amp;p=145269#p145269"/>
<title type="html"><![CDATA[Re: Przerwania RS 232]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11376&amp;p=145269#p145269"><![CDATA[
Niestety ten kod na sprzęcie (prosta ATmega32 taktowana 8M) nie działa.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6335">Rafalst</a> — 13 lis 2015, o 13:02</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafalst]]></name></author>
<updated>2015-11-13T09:51:44+01:00</updated>
<published>2015-11-13T09:51:44+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11376&amp;p=145254#p145254</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11376&amp;p=145254#p145254"/>
<title type="html"><![CDATA[Re: Przerwania RS 232]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11376&amp;p=145254#p145254"><![CDATA[
Jak najbardziej ma związek. <br />Ja powinienem dodać że depesza którą testuję kod przeszukania wygląda tak :<br /><strong>&quot;GPGGA,123519,4807.038,N,01131.000,E,1^M^J&quot;</strong> bo na końcu każdej depeszy jest wysyłane (carriage return, line feed)<br />zmieniłem typ zmiennej a funkcja przeszukania teraz wygląda tak: <br />[syntax=c]//przeszukanie<br />uart_puts(&quot;szukam!  &quot;);<br />    char delimiter = ',';<br />    char * pch;<br />    pch = strstr(tekst,&quot;GPGGA&quot;);<br />    for(int i=0;i&lt;35;i++)<br />        bufordepesza&#91;i&#93;=*pch++;<br /><br />    pch = strtok( bufordepesza, &amp;delimiter );<br />        pch = strtok( NULL, &amp;delimiter );<br />        LczasUTC=atoi(pch);<br />        pch = strtok( NULL, &amp;delimiter );<br />        Ldlugosc=atof(pch);<br />        pch = strtok( NULL, &amp;delimiter );<br />        pch = strtok( NULL, &amp;delimiter );<br />        Lszerokosc=atof(pch);[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6335">Rafalst</a> — 13 lis 2015, o 09:51</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-11-13T09:27:52+01:00</updated>
<published>2015-11-13T09:27:52+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11376&amp;p=145253#p145253</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11376&amp;p=145253#p145253"/>
<title type="html"><![CDATA[Re: Przerwania RS 232]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11376&amp;p=145253#p145253"><![CDATA[
<div class="quotetitle">Rafalst napisał(a):</div><div class="quotecontent"><br />        //przepisanie tablic<br />        for(int i=0;i&lt;100;i++)<br />        {<br />                tekst[i]=atekst[i];<br />        }<br /></div><br /><br />to może nie ma za bardzo związku z pytaniem ogólnie ale pomyśl nad tym:<br /><br />1. po jakiego grzybka używasz tu tupu int ? hmmm? wyjaśnisz to ? zamiast uint8_t <br />2. Próbowałeś kiedyś zajrzeć do dokumentacji GCC ? na prawdę warto - zobacz do czego jest np memcpy()<br /><br />to okaże się że w ogóle przestaniesz używać takich &quot;tworków&quot; ok?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 13 lis 2015, o 09:27</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafalst]]></name></author>
<updated>2015-11-13T09:18:29+01:00</updated>
<published>2015-11-13T09:18:29+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11376&amp;p=145252#p145252</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11376&amp;p=145252#p145252"/>
<title type="html"><![CDATA[Re: Przerwania RS 232]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11376&amp;p=145252#p145252"><![CDATA[
Poprzedni projekt z biblioteką Pana Mirka okazał się być dość prosty. <img src="https://forum.atnel.pl/images/smilies/icon_e_wink.gif" alt=";)" title="Puszcza oko" /> <br />Teraz zajmuję się inną zagadką i proszę Was bardzo o pomoc. Chciałbym odbierać depesze z odbiornika gps i wybierać z niej tylko jedną &quot;gpgga&quot; i szukać tam czasu długości i szerokości. Wydaje mi się że eventy dalej doskonale powinny się do tego nadawać jednak tym razem coś mi nie działa. Dokonałem niewielkich zmian w kodzie chciałem po prostu wykorzystać stworzony bufor i przeszukać go własną funkcją. <br />[syntax=c]int main(void) {<br /><br />// inicjalizacja LCD<br />DDRA |= (1&lt;&lt;PA7);// ustawiamy kierunek linii podświetlenia LCD jako WYJŚCIE<br />PORTA |= (1&lt;&lt;PA7);<br />lcd_init();<br />lcd_str(&quot;start...&quot;);// tekst powitalny<br /><br />// inicjalizacja UART<br />USART_Init(__UBRR);<br /><br />// rejestracja własnej funkcji do analizowania danych odebranych przez UART<br />register_uart_str_rx_event_callback( szukajPozycjiZnaku );<br /><br />// inicjalizacja LCD<br />lcd_init();<br />lcd_str(&quot;start...&quot;);// tekst powitalny<br /><br /><br />sei();// globalne odblokowanie przerwań<br /><br />// przedstawienie się układu przez UART po starcie<br />uart_puts(&quot;******* restart**********\r\n&quot;);<br /><br /><br />// pętla główna programu<br />while(1) {<br /><br />UART_RX_STR_EVENT(bufor);// zdarzenie odbiorcze UART<br />szukajPozycjiZnaku(bufor);<br />_delay_ms(1500);<br />uart_puts(&quot;tam  &quot;);<br />uart_putint(LczasUTC,10);<br />uart_putint(Ldlugosc,10);<br />uart_putint(Lszerokosc,10);<br /><br />}<br /><br />}[/syntax]<br />O to moja funkcja choć tak na prawdę napisana po przeczytaniu greenbooka<br />[syntax=c]void szukajPozycjiZnaku( char atekst&#91;&#93; )<br />{<br />//przepisanie tablic<br />for(int i=0;i&lt;100;i++)<br />{<br />tekst&#91;i&#93;=atekst&#91;i&#93;;<br />}<br /><br />//przeszukanie<br />uart_puts(&quot;szukam!  &quot;);<br />    char delimiter = ',';<br />    char * pch;<br />    pch = strstr(tekst,&quot;GPGGA&quot;);<br />    for(int i=0;i&lt;35;i++)<br />        bufordepesza&#91;i&#93;=*pch++;<br />   int a=1;<br />    pch = strtok( bufordepesza, &amp;delimiter );<br />    while( pch != NULL )<br />    {<br />        pch = NULL;<br />        pch = strtok( NULL, &amp;delimiter );<br />        switch(a){<br />                case 1:<br />                        memcpy(&amp;czasUTC&#91;0&#93;,pch,6);<br />                        a++;<br />                        break;<br />                case 2:<br />                        memcpy(&amp;dlugosc&#91;0&#93;,pch,8);<br />                        a++;<br />                        break;<br />                case 4:<br />                        memcpy(&amp;szerokosc&#91;0&#93;,pch,9);<br />                        a++;<br />                        break;<br />                default:<br />                        if(a&lt;4)a++;<br />                        else a=0;<br />                        break;<br />                }<br />    }<br /><br />    //konwertowanie*******************<br />LczasUTC=atof(czasUTC);<br />Ldlugosc=atof(dlugosc);<br />Lszerokosc=atof(szerokosc);<br /><br />//czyszczenie tablicy<br />for(int i=0;i&lt;100;i++)<br />{<br />tekst&#91;i&#93;=0;<br />}[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6335">Rafalst</a> — 13 lis 2015, o 09:18</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafał555]]></name></author>
<updated>2015-04-14T08:50:34+01:00</updated>
<published>2015-04-14T08:50:34+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11376&amp;p=126473#p126473</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11376&amp;p=126473#p126473"/>
<title type="html"><![CDATA[Re: Przerwania RS 232]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11376&amp;p=126473#p126473"><![CDATA[
Biblioteka UART z GB to miód malina do obsługi modemów.<br />W funkcji wywołanej zdarzeniem odbiorczym wystarczy wpisać wtedy np.<br />[syntax=c]if (!strncasecmp(&quot;RING&quot;,rbuf,4) uart_puts(&quot;ATA\r&quot;)[/syntax]<br /> gdzie rbuf zawiera nadlatujący z uarta string. I gotowe.<br />Dodatkowo nie trzeba sobie zawracać głowy jakimiś flagami, żeby na przykład nie wysłać 10 sms na sekundę,<br />bo funkcja wywołana jest tylko podczas zdarzenia odbioru.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=2697">Rafał555</a> — 14 kwi 2015, o 08:50</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[mirekk36]]></name></author>
<updated>2015-04-13T22:21:09+01:00</updated>
<published>2015-04-13T22:21:09+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11376&amp;p=126443#p126443</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11376&amp;p=126443#p126443"/>
<title type="html"><![CDATA[Re: Przerwania RS 232]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11376&amp;p=126443#p126443"><![CDATA[
<div class="quotetitle">Rafalst napisał(a):</div><div class="quotecontent"><br />Niestety mam problem ponieważ nie umiem sprawdzić czy dostałem tą komendę<br /></div><br />Polecam zainteresować się sposobem odbioru i parsowania danych z RS232 opisanego w GB, z użyciem zdarzeń (EVENT's). Opisuję i pokazuję te sposoby korzystania w poradnikach dotyczących programowania modułów ATB-WIFI232-T, rzuć też na nie okiem<br /><br /><strong><span style="color: #808000">------------------------ [ Dodano po: 1 minucie ]</span></strong><br /><br />Można też samemu na podstawie już tego co w BB dopisać sobie własne sposoby obsługi (parsowania) nadlatujących stringów - to PODSTAWA przy pracy z modemami<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=54">mirekk36</a> — 13 kwi 2015, o 22:21</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[Rafalst]]></name></author>
<updated>2015-04-13T21:28:16+01:00</updated>
<published>2015-04-13T21:16:42+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=11376&amp;p=126424#p126424</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=11376&amp;p=126424#p126424"/>
<title type="html"><![CDATA[Przerwania RS 232]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=11376&amp;p=126424#p126424"><![CDATA[
Witam.<br />Staram się nawiązać komunikację z modułem GSM komendami AT po rs 232.<br />Gdy dzwonię na numer sima w tym module to zaczyna ono wysyłać komendy RING noi ja chciałbym ładnie odpowiedzieć komendą 'ATA'(0DH) żeby moduł odebrał mój telefon. Na razie program testuję na teminalu na lapku.<br />Niestety mam problem ponieważ nie umiem sprawdzić czy dostałem tą komendę (chcę to zrobić w przerwaniu a nie w pętli while)<br /><br />Korzystam z programu z bluebook'a i przerabianie go zacząłem od zadeklarowania swojej  tablicy<br /><div class="codetitle"><b>Code:</b></div><div class="codecontent">volatile char moja tab&#91;50&#93;;</div><br /><br />Potem zapełnianie jej dopisałem w przerwaniu obsługującym odbiór <br />[syntax=c]if ( tmp_head == UART_RxTail ) { }<br />    else<br />    {<br />    UART_RxHead = tmp_head; <br />    UART_RxBuf&#91;tmp_head&#93; = data; <br />        mojatab&#91;tmp_head&#93;=UART_RxBuf&#91;tmp_head&#93;;<br />    }[/syntax]<br /><br />Noi teraz wymyśliłem 2 możliwości kodu które przyklejałem raz do przerwania raz do maina ale bez rezultatów.<br />[syntax=c]uint8_t i=0;<br />if(mojatab&#91;0&#93;=='R')<br />{<br />  do{<br />        uart_putc(mojatab&#91;i&#93;);<br />        i++;<br />         }while(mojatab&#91;i&#93;==0);<br />}[/syntax]<br />[syntax=c]uint8_t i=0;<br />if(mojatab&#91;0&#93;=='R')<br />{<br />while(i&lt;50)<br />{<br />uart_putc(mojatab&#91;i&#93;);<br />i++;<br />}[/syntax]<br />Nie bardzo wiem co robię źle  <img src="https://forum.atnel.pl/images/smilies/icon_e_sad.gif" alt=":(" title="Smutny" /> proszę pomóżcie.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=6335">Rafalst</a> — 13 kwi 2015, o 21:16</p><hr />
]]></content>
</entry>
</feed>