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

<title>ATNEL tech-forum</title>
<link href="https://forum.atnel.pl/index.php" />
<updated>2015-12-03T07:52:26+01:00</updated>

<author><name><![CDATA[ATNEL tech-forum]]></name></author>
<id>https://forum.atnel.pl/feed.php?f=23&amp;t=13744&amp;mode</id>
<entry>
<author><name><![CDATA[avrfun]]></name></author>
<updated>2015-12-03T07:52:26+01:00</updated>
<published>2015-12-03T07:52:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13744&amp;p=146936#p146936</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13744&amp;p=146936#p146936"/>
<title type="html"><![CDATA[Re: Biblioteka do GPSa NMEA z sprawdzaniem sumy kontrolnej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13744&amp;p=146936#p146936"><![CDATA[
Bardzo dziękuję za bibliotekę i przykład.<br />Pozdrawiam<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9310">avrfun</a> — 3 gru 2015, o 07:52</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[iwi]]></name></author>
<updated>2015-12-03T00:35:26+01:00</updated>
<published>2015-12-03T00:35:26+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13744&amp;p=146931#p146931</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13744&amp;p=146931#p146931"/>
<title type="html"><![CDATA[Re: Biblioteka do GPSa NMEA z sprawdzaniem sumy kontrolnej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13744&amp;p=146931#p146931"><![CDATA[
Przykladowy kod wyświetlający wszystkie dane. Ponieważ wyświetlacz mały to pilotem zmieniam wyświetlania różnych odczytów.<br /><br />FIX == 1 jest najlepszym rozwiązaniem - nam nie zależy na niedokładnych danych.<br />Można ewentualnie dać (fix == 1 || fix == 2) ale nic więcej - mój gps i tak nie odbiera DGPS więc fixa 2 nigdy nie bedzie mial, ale jak ktos ma inny model to może to zmienić.<br /><br />[syntax=c]#include &lt;util/delay.h&gt;<br />#include &lt;avr/pgmspace.h&gt;<br />#include &lt;avr/io.h&gt;<br />#include &lt;avr/interrupt.h&gt;<br />#include &lt;string.h&gt;<br />#include &lt;stdlib.h&gt;<br /><br />#include&quot;MK_USART/mkuart.h&quot;<br />#include &quot;LCD/lcd44780.h&quot;<br />#include &quot;IR_DECODE/ir_decode.h&quot;<br />#include &quot;NMEA_GPS/nmea.h&quot;<br /><br />#define LED1_PIN (1&lt;&lt;PD7)// definicja pinu do którego podłączona jest dioda<br />#define LED2_PIN (1&lt;&lt;PD6)// definicja pinu do którego podłączona jest dioda<br />#define LED1_TOG PORTD ^= LED1_PIN// makrodefinicja – zmiana stanu diody<br />#define LED2_TOG PORTD ^= LED2_PIN// makrodefinicja – zmiana stanu diody<br />#define LED1_ON PORTD &amp;= ~LED1_PIN// makrodefinicja – włączenie diody<br />#define LED2_ON PORTD &amp;= ~LED2_PIN// makrodefinicja – włączenie diody<br />#define LED1_OFF PORTD |= LED1_PIN// makrodefinicja – wyłączenie diody<br />#define LED2_OFF PORTD |= LED2_PIN// makrodefinicja – wyłączenie diody<br /><br /><br />    volatile uint8_t Timer1, Timer2, Timer3, Timer4;/* timery programowe 100Hz */<br />    void irq_init(void);<br />    uint8_t poziom_wyswietlania = 0;<br /><br />int main (void)<br />{<br />ir_init();// inicjalizacja dekodowania IR<br />irq_init(); // włączenie przerwania<br />      lcd_init(); // inicjalizacja LCD<br />   lcd_LED(1);// włączenie podświetlania<br />        USART_Init(__UBRR);//9600<br /><br />    // rejestracja własnej funkcji do analizowania danych odebranych przez UART<br />    register_uart_str_rx_event_callback( parse_uart_data );<br /><br />        sei();<br /><br />    LED1_OFF;<br />    LED2_OFF;<br /><br /><br />   while(1) {<br />            DDRD |= LED1_PIN || LED2_PIN; //port LED jako wyjście<br /><br />// ************************************************************************************************<br />           UART_RX_STR_EVENT(bufor);<br />           parse_uart_data(bufor);<br />           lcd_locate(0,0); lcd_str(&quot;T:&quot;);<br />           lcd_locate(0,3); lcd_char(ggmmss&#91;0&#93;);lcd_char(ggmmss&#91;1&#93;+1);lcd_str(&quot;:&quot;);lcd_char(ggmmss&#91;2&#93;);lcd_char(ggmmss&#91;3&#93;);lcd_str(&quot;:&quot;);lcd_char(ggmmss&#91;4&#93;);lcd_char(ggmmss&#91;5&#93;);lcd_str(&quot; Fix: &quot;);lcd_str(fix);<br /><br />   lcd_locate(2,0);lcd_str(&quot;Lat: &quot;);lcd_str(lat);lcd_str(latN);<br />   lcd_locate(3,0);lcd_str(&quot;Lon: &quot;);lcd_str(lon);lcd_str(lonE);<br />           if(Ir_key_press_flag) {<br />           if( !address &amp;&amp; 12==command) {<br />           lcd_LED(2);<br />           }<br />           else if( !address &amp;&amp; 36==command) { poziom_wyswietlania = 0;<br /><br />           }<br />           else if( !address &amp;&amp; 50==command) { poziom_wyswietlania = 1; lcd_cls();<br /><br />           }<br />           else if( !address &amp;&amp; 52==command) { poziom_wyswietlania = 2; lcd_cls();<br /><br />           }<br />           else if( !address &amp;&amp; 54==command) { poziom_wyswietlania = 3; lcd_cls();<br />           }<br />           else if( !address &amp;&amp; 55==command) { poziom_wyswietlania = 0; lcd_cls();<br />           }<br />           else lcd_cls();<br />   /* wyzerowanie flagi odbioru oraz wartości odebranych kodów */<br />   Ir_key_press_flag=0;<br />   command=0xff;<br />   address=0xff;<br />           }<br />//Wyświetlanie<br />           if (poziom_wyswietlania == 1) {<br />           lcd_locate(1,0);lcd_str(&quot;Alt: &quot;);lcd_str(alt);<br />           }<br />           else if (poziom_wyswietlania == 2) {<br />           lcd_locate(1,0);lcd_str(&quot;Sat: &quot;);lcd_str(sat);<br />           }<br />           else if (poziom_wyswietlania == 3) {<br />           lcd_locate(1,0);lcd_str(&quot;V: &quot;);lcd_str(V);<br />           }<br />           else if (poziom_wyswietlania == 0) {<br />       lcd_locate(1,0);lcd_str(&quot;Data: &quot;); lcd_char(ddmmyy&#91;0&#93;);lcd_char(ddmmyy&#91;1&#93;);lcd_str(&quot;-&quot;);lcd_char(ddmmyy&#91;2&#93;);lcd_char(ddmmyy&#91;3&#93;);lcd_str(&quot;-20&quot;);lcd_char(ddmmyy&#91;4&#93;);lcd_char(ddmmyy&#91;5&#93;);<br />       }<br /> // **************************KONIEC****************************************************************<br />}<br />}<br />// ************FUNKCJE***********************<br /><br />void irq_init(void) {<br />             TCCR0 |= (1&lt;&lt;WGM01);//CTC<br />             OCR0 = 216;//50Hz<br />             TCCR0 |= (1&lt;&lt;CS02)|(1&lt;&lt;CS00);//F_CPU/1024<br />             TIMSK |= (1&lt;&lt;OCIE0);<br />}<br /><br /><br />ISR(TIMER0_COMP_vect)  {<br />    uint8_t n;<br />    n = Timer1;/* 100Hz Timer2 */<br />    if (n) Timer1 = --n;<br />    n = Timer2;/* 100Hz Timer2 */<br />    if (n) Timer2 = --n;<br />    n = Timer3;/* 100Hz Timer3 */<br />    if (n) Timer3 = --n;<br />    n = Timer4;/* 100Hz Timer4 */<br />    if (n) Timer4 = --n;<br />     }[/syntax]<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1988">iwi</a> — 3 gru 2015, o 00:35</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[avrfun]]></name></author>
<updated>2015-12-02T18:06:20+01:00</updated>
<published>2015-12-02T18:06:20+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13744&amp;p=146908#p146908</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13744&amp;p=146908#p146908"/>
<title type="html"><![CDATA[Re: Biblioteka do GPSa NMEA z sprawdzaniem sumy kontrolnej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13744&amp;p=146908#p146908"><![CDATA[
Witam!<br />Bardzo zgrabna i przydatna biblioteka. Ja w moim projekcie mam funcję parsującą w programie głównym i realizuję ją za pomocą eventów:<br />[syntax=c]void parse_uart_data( char * uart_buf )[/syntax]<br />[syntax=c]USART_Init(__UBRR);<br />register_uart_str_rx_event_callback(parse_uart_data);[/syntax]<br />Gdy chcę zmienić analizowaną ramkę muszę na nowo pisać funkcję parsującą. Biblioteka jest do takich celów idealna.<br />Czy mógłbyś zamieścić jakiś przykład wykorzystania jej w programie (najprostsza analiza) i wyświetlenie danych na LCD. Bardzo by to pomogło ogarnąć temat.<br />Pozdrawiam i dziękuję<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=9310">avrfun</a> — 2 gru 2015, o 18:06</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[icer_cmg]]></name></author>
<updated>2015-12-02T16:03:13+01:00</updated>
<published>2015-12-02T16:03:13+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13744&amp;p=146900#p146900</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13744&amp;p=146900#p146900"/>
<title type="html"><![CDATA[Re: Biblioteka do GPSa NMEA z sprawdzaniem sumy kontrolnej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13744&amp;p=146900#p146900"><![CDATA[
Jeszcze nie testowałem, ale:<br /><div class="quotetitle">iwi napisał(a):</div><div class="quotecontent"><br />Dane pobiera jeżeli FIX=1 (49 ASCII)<br /></div><br />Chyba lepiej jeśli fix &gt; 0, bo co jeśli załapie na fix==2 ?<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1636">icer_cmg</a> — 2 gru 2015, o 16:03</p><hr />
]]></content>
</entry>
<entry>
<author><name><![CDATA[iwi]]></name></author>
<updated>2015-12-02T01:45:43+01:00</updated>
<published>2015-12-02T01:45:43+01:00</published>
<id>https://forum.atnel.pl/viewtopic.php?t=13744&amp;p=146882#p146882</id>
<link href="https://forum.atnel.pl/viewtopic.php?t=13744&amp;p=146882#p146882"/>
<title type="html"><![CDATA[Biblioteka do GPSa NMEA z sprawdzaniem sumy kontrolnej]]></title>

<content type="html" xml:base="https://forum.atnel.pl/viewtopic.php?t=13744&amp;p=146882#p146882"><![CDATA[
Witajcie.<br />Trochę mi to zabrało czasu, ale teraz biblioteka jest uniwersalna<br />Współpracuje z Mirka Uartem Events z Zielonej Książki<br />Po podpięciu pliku .h do main mamy do dyspozycji dane z gps'a<br />z ramki GPRMC: ggmmss oraz ddmmyy<br />z ramki GPGGA: lat,latN lon,lonE, alt, fix, sat<br />z ramki GPVTG: V<br />ramki przylatują z różnymi długościami i jest zrobione zabezpieczenie na taką ewentualność.<br />U mnie to działa - można korzystać i przerabiać do woli.<br />Dane pobiera jeżeli FIX=1 (49 ASCII) - jeżeli to komuś nie odpowiada można zmienić.<p>Statystyki: Napisane przez <a href="https://forum.atnel.pl/memberlist.php?mode=viewprofile&amp;u=1988">iwi</a> — 2 gru 2015, o 01:45</p><hr />
]]></content>
</entry>
</feed>